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_lpcon_test_conf_reg_t; 20 21 typedef union { 22 struct { 23 uint32_t clk_coex_lp_sel_osc_slow:1; 24 uint32_t clk_coex_lp_sel_osc_fast:1; 25 uint32_t clk_coex_lp_sel_xtal:1; 26 uint32_t clk_coex_lp_sel_xtal32k:1; 27 uint32_t clk_coex_lp_div_num:12; 28 uint32_t reserved_16:16; 29 }; 30 uint32_t val; 31 } modem_lpcon_coex_lp_clk_conf_reg_t; 32 33 typedef union { 34 struct { 35 uint32_t reserved_0:1; 36 uint32_t clk_coex_en:1; 37 uint32_t clk_i2c_mst_en:1; 38 uint32_t reserved_3:2; 39 uint32_t clk_fe_mem_en:1; 40 uint32_t reserved_6:26; 41 }; 42 uint32_t val; 43 } modem_lpcon_clk_conf_reg_t; 44 45 typedef union { 46 struct { 47 uint32_t reserved_0:1; 48 uint32_t clk_coex_fo:1; 49 uint32_t clk_i2c_mst_fo:1; 50 uint32_t reserved_3:2; 51 uint32_t clk_fe_mem_fo:1; 52 uint32_t reserved_6:26; 53 }; 54 uint32_t val; 55 } modem_lpcon_clk_conf_force_on_reg_t; 56 57 typedef union { 58 struct { 59 uint32_t pwr_tick_target:6; 60 uint32_t reserved_6:26; 61 }; 62 uint32_t val; 63 } modem_lpcon_tick_conf_reg_t; 64 65 typedef union { 66 struct { 67 uint32_t reserved_0:1; 68 uint32_t rst_coex:1; 69 uint32_t rst_i2c_mst:1; 70 uint32_t reserved_3:29; 71 }; 72 uint32_t val; 73 } modem_lpcon_rst_conf_reg_t; 74 75 typedef union { 76 struct { 77 uint32_t reserved_0:2; 78 uint32_t agc_mem_force_pu:1; 79 uint32_t agc_mem_force_pd:1; 80 uint32_t pbus_mem_force_pu:1; 81 uint32_t pbus_mem_force_pd:1; 82 uint32_t reserved_6:2; 83 uint32_t i2c_mst_mem_force_pu:1; 84 uint32_t i2c_mst_mem_force_pd:1; 85 uint32_t chan_freq_mem_force_pu:1; 86 uint32_t chan_freq_mem_force_pd:1; 87 uint32_t modem_pwr_mem_wp:3; 88 uint32_t modem_pwr_mem_wa:3; 89 uint32_t modem_pwr_mem_ra:2; 90 uint32_t modem_pwr_mem_rm:4; 91 uint32_t reserved_24:8; 92 }; 93 uint32_t val; 94 } modem_lpcon_mem_conf_reg_t; 95 96 typedef union { 97 struct { 98 uint32_t date:28; 99 uint32_t reserved_28:4; 100 }; 101 uint32_t val; 102 } modem_lpcon_date_reg_t; 103 104 105 typedef struct { 106 volatile modem_lpcon_test_conf_reg_t test_conf; 107 volatile modem_lpcon_coex_lp_clk_conf_reg_t coex_lp_clk_conf; 108 volatile modem_lpcon_clk_conf_reg_t clk_conf; 109 volatile modem_lpcon_clk_conf_force_on_reg_t clk_conf_force_on; 110 volatile modem_lpcon_tick_conf_reg_t tick_conf; 111 volatile modem_lpcon_rst_conf_reg_t rst_conf; 112 volatile modem_lpcon_mem_conf_reg_t mem_conf; 113 volatile modem_lpcon_date_reg_t date; 114 } modem_lpcon_dev_t; 115 116 extern modem_lpcon_dev_t MODEM_LPCON; 117 118 #ifndef __cplusplus 119 _Static_assert(sizeof(modem_lpcon_dev_t) == 0x20, "Invalid size of modem_lpcon_dev_t structure"); 120 #endif 121 122 #ifdef __cplusplus 123 } 124 #endif 125