1 /** 2 * SPDX-FileCopyrightText: 2022-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 /** Group: configure_register */ 14 /** Type of clk_en register 15 * need_des 16 */ 17 typedef union { 18 struct { 19 uint32_t reserved_0:24; 20 /** rng_ck_en : R/W; bitpos: [24]; default: 1; 21 * need_des 22 */ 23 uint32_t rng_ck_en:1; 24 /** otp_dbg_ck_en : R/W; bitpos: [25]; default: 1; 25 * need_des 26 */ 27 uint32_t otp_dbg_ck_en:1; 28 /** lp_uart_ck_en : R/W; bitpos: [26]; default: 1; 29 * need_des 30 */ 31 uint32_t lp_uart_ck_en:1; 32 /** lp_io_ck_en : R/W; bitpos: [27]; default: 1; 33 * need_des 34 */ 35 uint32_t lp_io_ck_en:1; 36 /** lp_ext_i2c_ck_en : R/W; bitpos: [28]; default: 1; 37 * need_des 38 */ 39 uint32_t lp_ext_i2c_ck_en:1; 40 /** lp_ana_i2c_ck_en : R/W; bitpos: [29]; default: 1; 41 * need_des 42 */ 43 uint32_t lp_ana_i2c_ck_en:1; 44 /** efuse_ck_en : R/W; bitpos: [30]; default: 1; 45 * need_des 46 */ 47 uint32_t efuse_ck_en:1; 48 /** lp_cpu_ck_en : R/W; bitpos: [31]; default: 0; 49 * need_des 50 */ 51 uint32_t lp_cpu_ck_en:1; 52 }; 53 uint32_t val; 54 } lpperi_clk_en_reg_t; 55 56 /** Type of reset_en register 57 * need_des 58 */ 59 typedef union { 60 struct { 61 uint32_t reserved_0:23; 62 /** bus_reset_en : WT; bitpos: [23]; default: 0; 63 * need_des 64 */ 65 uint32_t bus_reset_en:1; 66 uint32_t reserved_24:1; 67 /** otp_dbg_reset_en : R/W; bitpos: [25]; default: 0; 68 * need_des 69 */ 70 uint32_t otp_dbg_reset_en:1; 71 /** lp_uart_reset_en : R/W; bitpos: [26]; default: 0; 72 * need_des 73 */ 74 uint32_t lp_uart_reset_en:1; 75 /** lp_io_reset_en : R/W; bitpos: [27]; default: 0; 76 * need_des 77 */ 78 uint32_t lp_io_reset_en:1; 79 /** lp_ext_i2c_reset_en : R/W; bitpos: [28]; default: 0; 80 * need_des 81 */ 82 uint32_t lp_ext_i2c_reset_en:1; 83 /** lp_ana_i2c_reset_en : R/W; bitpos: [29]; default: 0; 84 * need_des 85 */ 86 uint32_t lp_ana_i2c_reset_en:1; 87 /** efuse_reset_en : R/W; bitpos: [30]; default: 0; 88 * need_des 89 */ 90 uint32_t efuse_reset_en:1; 91 /** lp_cpu_reset_en : WT; bitpos: [31]; default: 0; 92 * need_des 93 */ 94 uint32_t lp_cpu_reset_en:1; 95 }; 96 uint32_t val; 97 } lpperi_reset_en_reg_t; 98 99 /** Type of rng_data register 100 * need_des 101 */ 102 typedef union { 103 struct { 104 /** rng_data : RO; bitpos: [31:0]; default: 0; 105 * need_des 106 */ 107 uint32_t rng_data:32; 108 }; 109 uint32_t val; 110 } lpperi_rng_data_reg_t; 111 112 /** Type of cpu register 113 * need_des 114 */ 115 typedef union { 116 struct { 117 uint32_t reserved_0:31; 118 /** lpcore_dbgm_unavaliable : R/W; bitpos: [31]; default: 1; 119 * need_des 120 */ 121 uint32_t lpcore_dbgm_unavaliable:1; 122 }; 123 uint32_t val; 124 } lpperi_cpu_reg_t; 125 126 /** Type of bus_timeout register 127 * need_des 128 */ 129 typedef union { 130 struct { 131 uint32_t reserved_0:14; 132 /** lp_peri_timeout_thres : R/W; bitpos: [29:14]; default: 65535; 133 * need_des 134 */ 135 uint32_t lp_peri_timeout_thres:16; 136 /** lp_peri_timeout_int_clear : WT; bitpos: [30]; default: 0; 137 * need_des 138 */ 139 uint32_t lp_peri_timeout_int_clear:1; 140 /** lp_peri_timeout_protect_en : R/W; bitpos: [31]; default: 1; 141 * need_des 142 */ 143 uint32_t lp_peri_timeout_protect_en:1; 144 }; 145 uint32_t val; 146 } lpperi_bus_timeout_reg_t; 147 148 /** Type of bus_timeout_addr register 149 * need_des 150 */ 151 typedef union { 152 struct { 153 /** lp_peri_timeout_addr : RO; bitpos: [31:0]; default: 0; 154 * need_des 155 */ 156 uint32_t lp_peri_timeout_addr:32; 157 }; 158 uint32_t val; 159 } lpperi_bus_timeout_addr_reg_t; 160 161 /** Type of bus_timeout_uid register 162 * need_des 163 */ 164 typedef union { 165 struct { 166 /** lp_peri_timeout_uid : RO; bitpos: [6:0]; default: 0; 167 * need_des 168 */ 169 uint32_t lp_peri_timeout_uid:7; 170 uint32_t reserved_7:25; 171 }; 172 uint32_t val; 173 } lpperi_bus_timeout_uid_reg_t; 174 175 /** Type of mem_ctrl register 176 * need_des 177 */ 178 typedef union { 179 struct { 180 /** uart_wakeup_flag_clr : WT; bitpos: [0]; default: 0; 181 * need_des 182 */ 183 uint32_t uart_wakeup_flag_clr:1; 184 /** uart_wakeup_flag : R/WTC/SS; bitpos: [1]; default: 0; 185 * need_des 186 */ 187 uint32_t uart_wakeup_flag:1; 188 uint32_t reserved_2:27; 189 /** uart_wakeup_en : R/W; bitpos: [29]; default: 0; 190 * need_des 191 */ 192 uint32_t uart_wakeup_en:1; 193 /** uart_mem_force_pd : R/W; bitpos: [30]; default: 0; 194 * need_des 195 */ 196 uint32_t uart_mem_force_pd:1; 197 /** uart_mem_force_pu : R/W; bitpos: [31]; default: 1; 198 * need_des 199 */ 200 uint32_t uart_mem_force_pu:1; 201 }; 202 uint32_t val; 203 } lpperi_mem_ctrl_reg_t; 204 205 /** Type of interrupt_source register 206 * need_des 207 */ 208 typedef union { 209 struct { 210 /** lp_interrupt_source : RO; bitpos: [5:0]; default: 0; 211 * BIT5~BIT0: pmu_lp_int, modem_lp_int, lp_timer_lp_int, lp_uart_int, lp_i2c_int, 212 * lp_io_int 213 */ 214 uint32_t lp_interrupt_source:6; 215 uint32_t reserved_6:26; 216 }; 217 uint32_t val; 218 } lpperi_interrupt_source_reg_t; 219 220 221 /** Group: Version register */ 222 /** Type of date register 223 * need_des 224 */ 225 typedef union { 226 struct { 227 /** lpperi_date : R/W; bitpos: [30:0]; default: 35676464; 228 * need_des 229 */ 230 uint32_t lpperi_date:31; 231 /** clk_en : R/W; bitpos: [31]; default: 0; 232 * need_des 233 */ 234 uint32_t clk_en:1; 235 }; 236 uint32_t val; 237 } lpperi_date_reg_t; 238 239 240 typedef struct lpperi_dev_t { 241 volatile lpperi_clk_en_reg_t clk_en; 242 volatile lpperi_reset_en_reg_t reset_en; 243 volatile lpperi_rng_data_reg_t rng_data; 244 volatile lpperi_cpu_reg_t cpu; 245 volatile lpperi_bus_timeout_reg_t bus_timeout; 246 volatile lpperi_bus_timeout_addr_reg_t bus_timeout_addr; 247 volatile lpperi_bus_timeout_uid_reg_t bus_timeout_uid; 248 volatile lpperi_mem_ctrl_reg_t mem_ctrl; 249 volatile lpperi_interrupt_source_reg_t interrupt_source; 250 uint32_t reserved_024[246]; 251 volatile lpperi_date_reg_t date; 252 } lpperi_dev_t; 253 254 extern lpperi_dev_t LPPERI; 255 256 #ifndef __cplusplus 257 _Static_assert(sizeof(lpperi_dev_t) == 0x400, "Invalid size of lpperi_dev_t structure"); 258 #endif 259 260 #ifdef __cplusplus 261 } 262 #endif 263