1 /** 2 * SPDX-FileCopyrightText: 2022 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_data_dump_mux:1; 25 uint32_t clk_etm_en:1; 26 uint32_t clk_zb_apb_en:1; 27 uint32_t clk_zb_mac_en:1; 28 uint32_t clk_modem_sec_ecb_en:1; 29 uint32_t clk_modem_sec_ccm_en:1; 30 uint32_t clk_modem_sec_bah_en:1; 31 uint32_t clk_modem_sec_apb_en:1; 32 uint32_t clk_modem_sec_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 clk_zb_apb_fo:1; 44 uint32_t clk_zb_mac_fo:1; 45 uint32_t clk_modem_sec_ecb_fo:1; 46 uint32_t clk_modem_sec_ccm_fo:1; 47 uint32_t clk_modem_sec_bah_fo:1; 48 uint32_t clk_modem_sec_apb_fo:1; 49 uint32_t clk_modem_sec_fo:1; 50 uint32_t clk_ble_timer_fo:1; 51 uint32_t clk_data_dump_fo:1; 52 }; 53 uint32_t val; 54 } modem_syscon_clk_conf_force_on_reg_t; 55 56 typedef union { 57 struct { 58 uint32_t reserved_0:8; 59 uint32_t clk_zb_st_map:4; 60 uint32_t clk_fe_st_map:4; 61 uint32_t clk_bt_st_map:4; 62 uint32_t clk_wifi_st_map:4; 63 uint32_t clk_modem_peri_st_map:4; 64 uint32_t clk_modem_apb_st_map:4; 65 }; 66 uint32_t val; 67 } modem_syscon_clk_conf_power_st_reg_t; 68 69 typedef union { 70 struct { 71 uint32_t reserved_0:8; 72 uint32_t rst_wifibb:1; 73 uint32_t reserved_9:1; 74 uint32_t rst_wifimac:1; 75 uint32_t reserved_11:3; 76 uint32_t rst_fe:1; 77 uint32_t rst_btmac_apb:1; 78 uint32_t rst_btmac:1; 79 uint32_t rst_btbb_apb:1; 80 uint32_t rst_btbb:1; 81 uint32_t reserved_19:3; 82 uint32_t rst_etm:1; 83 uint32_t reserved_23:1; 84 uint32_t rst_zbmac:1; 85 uint32_t rst_modem_ecb:1; 86 uint32_t rst_modem_ccm:1; 87 uint32_t rst_modem_bah:1; 88 uint32_t reserved_28:1; 89 uint32_t rst_modem_sec:1; 90 uint32_t rst_ble_timer:1; 91 uint32_t rst_data_dump:1; 92 }; 93 uint32_t val; 94 } modem_syscon_modem_rst_conf_reg_t; 95 96 typedef union { 97 struct { 98 uint32_t clk_wifibb_22m_en:1; 99 uint32_t clk_wifibb_40m_en:1; 100 uint32_t clk_wifibb_44m_en:1; 101 uint32_t clk_wifibb_80m_en:1; 102 uint32_t clk_wifibb_40x_en:1; 103 uint32_t clk_wifibb_80x_en:1; 104 uint32_t clk_wifibb_40x1_en:1; 105 uint32_t clk_wifibb_80x1_en:1; 106 uint32_t clk_wifibb_160x1_en:1; 107 uint32_t clk_wifimac_en:1; 108 uint32_t clk_wifi_apb_en:1; 109 uint32_t clk_fe_20m_en:1; 110 uint32_t clk_fe_40m_en:1; 111 uint32_t clk_fe_80m_en:1; 112 uint32_t clk_fe_160m_en:1; 113 uint32_t clk_fe_cal_160m_en:1; 114 uint32_t clk_fe_apb_en:1; 115 uint32_t clk_bt_apb_en:1; 116 uint32_t clk_bt_en:1; 117 uint32_t clk_wifibb_480m_en:1; 118 uint32_t clk_fe_480m_en:1; 119 uint32_t clk_fe_anamode_40m_en:1; 120 uint32_t clk_fe_anamode_80m_en:1; 121 uint32_t clk_fe_anamode_160m_en:1; 122 uint32_t reserved_24:8; 123 }; 124 uint32_t val; 125 } modem_syscon_clk_conf1_reg_t; 126 127 typedef union { 128 struct { 129 uint32_t clk_wifibb_22m_fo:1; 130 uint32_t clk_wifibb_40m_fo:1; 131 uint32_t clk_wifibb_44m_fo:1; 132 uint32_t clk_wifibb_80m_fo:1; 133 uint32_t clk_wifibb_40x_fo:1; 134 uint32_t clk_wifibb_80x_fo:1; 135 uint32_t clk_wifibb_40x1_fo:1; 136 uint32_t clk_wifibb_80x1_fo:1; 137 uint32_t clk_wifibb_160x1_fo:1; 138 uint32_t clk_wifimac_fo:1; 139 uint32_t clk_wifi_apb_fo:1; 140 uint32_t clk_fe_20m_fo:1; 141 uint32_t clk_fe_40m_fo:1; 142 uint32_t clk_fe_80m_fo:1; 143 uint32_t clk_fe_160m_fo:1; 144 uint32_t clk_fe_cal_160m_fo:1; 145 uint32_t clk_fe_apb_fo:1; 146 uint32_t clk_bt_apb_fo:1; 147 uint32_t clk_bt_fo:1; 148 uint32_t clk_wifibb_480m_fo:1; 149 uint32_t clk_fe_480m_fo:1; 150 uint32_t clk_fe_anamode_40m_fo:1; 151 uint32_t clk_fe_anamode_80m_fo:1; 152 uint32_t clk_fe_anamode_160m_fo:1; 153 uint32_t reserved_24:8; 154 }; 155 uint32_t val; 156 } modem_syscon_clk_conf1_force_on_reg_t; 157 158 typedef union { 159 struct { 160 uint32_t wifi_bb_cfg:32; 161 }; 162 uint32_t val; 163 } modem_syscon_wifi_bb_cfg_reg_t; 164 165 typedef union { 166 struct { 167 uint32_t modem_mem_wp:3; 168 uint32_t modem_mem_wa:3; 169 uint32_t modem_mem_ra:2; 170 uint32_t reserved_8:24; 171 }; 172 uint32_t val; 173 } modem_syscon_mem_conf_reg_t; 174 175 typedef union { 176 struct { 177 uint32_t date:28; 178 uint32_t reserved_28:4; 179 }; 180 uint32_t val; 181 } modem_syscon_date_reg_t; 182 183 184 typedef struct { 185 volatile modem_syscon_test_conf_reg_t test_conf; 186 volatile modem_syscon_clk_conf_reg_t clk_conf; 187 volatile modem_syscon_clk_conf_force_on_reg_t clk_conf_force_on; 188 volatile modem_syscon_clk_conf_power_st_reg_t clk_conf_power_st; 189 volatile modem_syscon_modem_rst_conf_reg_t modem_rst_conf; 190 volatile modem_syscon_clk_conf1_reg_t clk_conf1; 191 volatile modem_syscon_clk_conf1_force_on_reg_t clk_conf1_force_on; 192 volatile modem_syscon_wifi_bb_cfg_reg_t wifi_bb_cfg; 193 volatile modem_syscon_mem_conf_reg_t mem_conf; 194 volatile modem_syscon_date_reg_t date; 195 } modem_syscon_dev_t; 196 197 extern modem_syscon_dev_t MODEM_SYSCON; 198 199 #ifndef __cplusplus 200 _Static_assert(sizeof(modem_syscon_dev_t) == 0x28, "Invalid size of modem_syscon_dev_t structure"); 201 #endif 202 203 #ifdef __cplusplus 204 } 205 #endif 206