1 /** 2 * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #pragma once 7 8 #include <stdint.h> 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 typedef union { 14 struct { 15 uint32_t clk_en:1; 16 uint32_t reserved_1:31; 17 }; 18 uint32_t val; 19 } modem_syscon_test_conf_reg_t; 20 21 typedef union { 22 struct { 23 uint32_t reserved_0:21; 24 uint32_t clk_etm_en:1; 25 uint32_t clk_zb_apb_en:1; 26 uint32_t clk_zb_mac_en:1; 27 uint32_t clk_modem_sec_ecb_en:1; 28 uint32_t clk_modem_sec_ccm_en:1; 29 uint32_t clk_modem_sec_bah_en:1; 30 uint32_t clk_modem_sec_apb_en:1; 31 uint32_t clk_modem_sec_en:1; 32 uint32_t clk_ble_timer_apb_en:1; 33 uint32_t clk_ble_timer_en:1; 34 uint32_t clk_data_dump_en:1; 35 }; 36 uint32_t val; 37 } modem_syscon_clk_conf_reg_t; 38 39 typedef union { 40 struct { 41 uint32_t reserved_0:22; 42 uint32_t clk_etm_fo:1; 43 uint32_t reserved_23:1; 44 uint32_t clk_zb_fo:1; 45 uint32_t reserved_25:4; 46 uint32_t clk_modem_sec_fo:1; 47 uint32_t clk_ble_timer_fo:1; 48 uint32_t clk_data_dump_fo:1; 49 }; 50 uint32_t val; 51 } modem_syscon_clk_conf_force_on_reg_t; 52 53 typedef union { 54 struct { 55 uint32_t reserved_0:14; 56 uint32_t rst_fe:1; 57 uint32_t rst_btmac_apb:1; 58 uint32_t rst_btmac:1; 59 uint32_t rst_btbb_apb:1; 60 uint32_t rst_btbb:1; 61 uint32_t reserved_19:3; 62 uint32_t rst_etm:1; 63 uint32_t reserved_23:1; 64 uint32_t rst_zbmac:1; 65 uint32_t rst_modem_ecb:1; 66 uint32_t rst_modem_ccm:1; 67 uint32_t rst_modem_bah:1; 68 uint32_t reserved_28:1; 69 uint32_t rst_modem_sec:1; 70 uint32_t rst_ble_timer:1; 71 uint32_t rst_data_dump:1; 72 }; 73 uint32_t val; 74 } modem_syscon_modem_rst_conf_reg_t; 75 76 typedef union { 77 struct { 78 uint32_t reserved_0:12; 79 uint32_t clk_fe_16m_en:1; 80 uint32_t clk_fe_32m_en:1; 81 uint32_t clk_fe_sdm_en:1; 82 uint32_t clk_fe_adc_en:1; 83 uint32_t clk_fe_apb_en:1; 84 uint32_t clk_bt_apb_en:1; 85 uint32_t clk_bt_en:1; 86 uint32_t reserved_19:13; 87 }; 88 uint32_t val; 89 } modem_syscon_clk_conf1_reg_t; 90 91 typedef union { 92 struct { 93 uint32_t reserved_0:16; 94 uint32_t clk_fe_fo:1; 95 uint32_t reserved_17:1; 96 uint32_t clk_bt_fo:1; 97 uint32_t reserved_19:13; 98 }; 99 uint32_t val; 100 } modem_syscon_clk_conf1_force_on_reg_t; 101 102 typedef union { 103 struct { 104 uint32_t modem_mem_wp:3; 105 uint32_t modem_mem_wa:3; 106 uint32_t modem_mem_ra:2; 107 uint32_t reserved_8:24; 108 }; 109 uint32_t val; 110 } modem_syscon_mem_conf_reg_t; 111 112 typedef union { 113 struct { 114 uint32_t date:28; 115 uint32_t reserved_28:4; 116 }; 117 uint32_t val; 118 } modem_syscon_date_reg_t; 119 120 121 typedef struct { 122 volatile modem_syscon_test_conf_reg_t test_conf; 123 volatile modem_syscon_clk_conf_reg_t clk_conf; 124 volatile modem_syscon_clk_conf_force_on_reg_t clk_conf_force_on; 125 volatile modem_syscon_modem_rst_conf_reg_t modem_rst_conf; 126 volatile modem_syscon_clk_conf1_reg_t clk_conf1; 127 volatile modem_syscon_clk_conf1_force_on_reg_t clk_conf1_force_on; 128 volatile modem_syscon_mem_conf_reg_t mem_conf; 129 volatile modem_syscon_date_reg_t date; 130 } modem_syscon_dev_t; 131 132 extern modem_syscon_dev_t MODEM_SYSCON; 133 134 #ifndef __cplusplus 135 _Static_assert(sizeof(modem_syscon_dev_t) == 0x20, "Invalid size of modem_syscon_dev_t structure"); 136 #endif 137 138 #ifdef __cplusplus 139 } 140 #endif 141