1 // Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 #ifndef _SOC_RTC_CNTL_STRUCT_H_
15 #define _SOC_RTC_CNTL_STRUCT_H_
16 
17 #include <stdint.h>
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 typedef volatile struct rtc_cntl_dev_s {
24     union {
25         struct {
26             uint32_t sw_stall_appcpu_c0:  2;             /*{reg_sw_stall_appcpu_c1[5:0]   reg_sw_stall_appcpu_c0[1:0]}  == 0x86 will stall APP CPU*/
27             uint32_t sw_stall_procpu_c0:  2;             /*{reg_sw_stall_procpu_c1[5:0]   reg_sw_stall_procpu_c0[1:0]}  == 0x86 will stall PRO CPU*/
28             uint32_t sw_appcpu_rst:       1;             /*APP CPU SW reset*/
29             uint32_t sw_procpu_rst:       1;             /*PRO CPU SW reset*/
30             uint32_t bb_i2c_force_pd:     1;             /*BB_I2C force power down*/
31             uint32_t bb_i2c_force_pu:     1;             /*BB_I2C force power up*/
32             uint32_t bbpll_i2c_force_pd:  1;             /*BB_PLL _I2C force power down*/
33             uint32_t bbpll_i2c_force_pu:  1;             /*BB_PLL_I2C force power up*/
34             uint32_t bbpll_force_pd:      1;             /*BB_PLL force power down*/
35             uint32_t bbpll_force_pu:      1;             /*BB_PLL force power up*/
36             uint32_t xtl_force_pd:        1;             /*crystall force power down*/
37             uint32_t xtl_force_pu:        1;             /*crystall force power up*/
38             uint32_t bias_sleep_folw_8m:  1;             /*BIAS_SLEEP follow CK8M*/
39             uint32_t bias_force_sleep:    1;             /*BIAS_SLEEP force sleep*/
40             uint32_t bias_force_nosleep:  1;             /*BIAS_SLEEP force no sleep*/
41             uint32_t bias_i2c_folw_8m:    1;             /*BIAS_I2C follow CK8M*/
42             uint32_t bias_i2c_force_pd:   1;             /*BIAS_I2C force power down*/
43             uint32_t bias_i2c_force_pu:   1;             /*BIAS_I2C force power up*/
44             uint32_t bias_core_folw_8m:   1;             /*BIAS_CORE follow CK8M*/
45             uint32_t bias_core_force_pd:  1;             /*BIAS_CORE force power down*/
46             uint32_t bias_core_force_pu:  1;             /*BIAS_CORE force power up*/
47             uint32_t xtl_force_iso:       1;
48             uint32_t pll_force_iso:       1;
49             uint32_t analog_force_iso:    1;
50             uint32_t xtl_force_noiso:     1;
51             uint32_t pll_force_noiso:     1;
52             uint32_t analog_force_noiso:  1;
53             uint32_t dg_wrap_force_rst:   1;             /*digital wrap force reset in deep sleep*/
54             uint32_t dg_wrap_force_norst: 1;             /*digital core force no reset in deep sleep*/
55             uint32_t sw_sys_rst:          1;             /*SW system reset*/
56         };
57         uint32_t val;
58     } options0;
59     uint32_t slp_timer0;                             /*RTC sleep timer low 32 bits*/
60     union {
61         struct {
62             uint32_t slp_val_hi:             16;         /*RTC sleep timer high 16 bits*/
63             uint32_t main_timer_alarm_en: 1;         /*timer alarm enable bit*/
64             uint32_t reserved17:             15;
65         };
66         uint32_t val;
67     } slp_timer1;
68     union {
69         struct {
70             uint32_t reserved0:      30;
71             uint32_t valid:  1;                 /*To indicate the register is updated*/
72             uint32_t update: 1;                 /*Set 1: to update register with RTC timer*/
73         };
74         uint32_t val;
75     } time_update;
76     uint32_t time0;                                  /*RTC timer low 32 bits*/
77     union {
78         struct {
79             uint32_t time_hi:16;                     /*RTC timer high 16 bits*/
80             uint32_t reserved16: 16;
81         };
82         uint32_t val;
83     } time1;
84     union {
85         struct {
86             uint32_t reserved0:             20;
87             uint32_t touch_wakeup_force_en:  1;          /*touch controller force wake up*/
88             uint32_t ulp_cp_wakeup_force_en: 1;          /*ULP-coprocessor force wake up*/
89             uint32_t apb2rtc_bridge_sel:     1;          /*1: APB to RTC using bridge   0: APB to RTC using sync*/
90             uint32_t touch_slp_timer_en:     1;          /*touch timer enable bit*/
91             uint32_t ulp_cp_slp_timer_en:    1;          /*ULP-coprocessor timer enable bit*/
92             uint32_t reserved25:             3;
93             uint32_t sdio_active_ind:        1;          /*SDIO active indication*/
94             uint32_t slp_wakeup:             1;          /*sleep wakeup bit*/
95             uint32_t slp_reject:             1;          /*sleep reject bit*/
96             uint32_t sleep_en:               1;          /*sleep enable bit*/
97         };
98         uint32_t val;
99     } state0;
100     union {
101         struct {
102             uint32_t cpu_stall_en:   1;                  /*CPU stall enable bit*/
103             uint32_t cpu_stall_wait: 5;                  /*CPU stall wait cycles in fast_clk_rtc*/
104             uint32_t ck8m_wait:      8;                  /*CK8M wait cycles in slow_clk_rtc*/
105             uint32_t xtl_buf_wait:  10;                  /*XTAL wait cycles in slow_clk_rtc*/
106             uint32_t pll_buf_wait:   8;                  /*PLL wait cycles in slow_clk_rtc*/
107         };
108         uint32_t val;
109     } timer1;
110     union {
111         struct {
112             uint32_t reserved0:             15;
113             uint32_t ulpcp_touch_start_wait: 9;          /*wait cycles in slow_clk_rtc before ULP-coprocessor / touch controller start to work*/
114             uint32_t min_time_ck8m_off:      8;          /*minimal cycles in slow_clk_rtc for CK8M in power down state*/
115         };
116         uint32_t val;
117     } timer2;
118     union {
119         struct {
120             uint32_t wifi_wait_timer:       9;
121             uint32_t wifi_powerup_timer:    7;
122             uint32_t rom_ram_wait_timer:    9;
123             uint32_t rom_ram_powerup_timer: 7;
124         };
125         uint32_t val;
126     } timer3;
127     union {
128         struct {
129             uint32_t rtc_wait_timer:        9;
130             uint32_t rtc_powerup_timer:     7;
131             uint32_t dg_wrap_wait_timer:    9;
132             uint32_t dg_wrap_powerup_timer: 7;
133         };
134         uint32_t val;
135     } timer4;
136     union {
137         struct {
138             uint32_t ulp_cp_subtimer_prediv: 8;
139             uint32_t min_slp_val:            8;          /*minimal sleep cycles in slow_clk_rtc*/
140             uint32_t rtcmem_wait_timer:      9;
141             uint32_t rtcmem_powerup_timer:   7;
142         };
143         uint32_t val;
144     } timer5;
145     union {
146         struct {
147             uint32_t reserved0:          23;
148             uint32_t plla_force_pd:       1;             /*PLLA force power down*/
149             uint32_t plla_force_pu:       1;             /*PLLA force power up*/
150             uint32_t bbpll_cal_slp_start: 1;             /*start BBPLL calibration during sleep*/
151             uint32_t pvtmon_pu:           1;             /*1: PVTMON power up   otherwise power down*/
152             uint32_t txrf_i2c_pu:         1;             /*1: TXRF_I2C power up   otherwise power down*/
153             uint32_t rfrx_pbus_pu:        1;             /*1: RFRX_PBUS power up   otherwise power down*/
154             uint32_t reserved29:          1;
155             uint32_t ckgen_i2c_pu:        1;             /*1: CKGEN_I2C power up   otherwise power down*/
156             uint32_t pll_i2c_pu:          1;             /*1: PLL_I2C power up   otherwise power down*/
157         };
158         uint32_t val;
159     } ana_conf;
160     union {
161         struct {
162             uint32_t reset_cause_procpu:     6;          /*reset cause of PRO CPU*/
163             uint32_t reset_cause_appcpu:     6;          /*reset cause of APP CPU*/
164             uint32_t appcpu_stat_vector_sel: 1;          /*APP CPU state vector sel*/
165             uint32_t procpu_stat_vector_sel: 1;          /*PRO CPU state vector sel*/
166             uint32_t reserved14:            18;
167         };
168         uint32_t val;
169     } reset_state;
170     union {
171         struct {
172             uint32_t wakeup_cause:      11;              /*wakeup cause*/
173             uint32_t rtc_wakeup_ena:    11;              /*wakeup enable bitmap*/
174             uint32_t gpio_wakeup_filter: 1;              /*enable filter for gpio wakeup event*/
175             uint32_t reserved23:         9;
176         };
177         uint32_t val;
178     } wakeup_state;
179     union {
180         struct {
181             uint32_t slp_wakeup:     1;          /*enable sleep wakeup interrupt*/
182             uint32_t slp_reject:     1;          /*enable sleep reject interrupt*/
183             uint32_t sdio_idle:      1;          /*enable SDIO idle interrupt*/
184             uint32_t rtc_wdt:        1;          /*enable RTC WDT interrupt*/
185             uint32_t rtc_time_valid: 1;          /*enable RTC time valid interrupt*/
186             uint32_t rtc_ulp_cp:     1;          /*enable ULP-coprocessor interrupt*/
187             uint32_t rtc_touch:      1;          /*enable touch interrupt*/
188             uint32_t rtc_brown_out:  1;          /*enable brown out interrupt*/
189             uint32_t rtc_main_timer: 1;          /*enable RTC main timer interrupt*/
190             uint32_t reserved9:             23;
191         };
192         uint32_t val;
193     } int_ena;
194     union {
195         struct {
196             uint32_t slp_wakeup:     1;          /*sleep wakeup interrupt raw*/
197             uint32_t slp_reject:     1;          /*sleep reject interrupt raw*/
198             uint32_t sdio_idle:      1;          /*SDIO idle interrupt raw*/
199             uint32_t rtc_wdt:        1;          /*RTC WDT interrupt raw*/
200             uint32_t rtc_time_valid: 1;          /*RTC time valid interrupt raw*/
201             uint32_t rtc_ulp_cp:     1;          /*ULP-coprocessor interrupt raw*/
202             uint32_t rtc_touch:      1;          /*touch interrupt raw*/
203             uint32_t rtc_brown_out:  1;          /*brown out interrupt raw*/
204             uint32_t rtc_main_timer: 1;          /*RTC main timer interrupt raw*/
205             uint32_t reserved9:             23;
206         };
207         uint32_t val;
208     } int_raw;
209     union {
210         struct {
211             uint32_t slp_wakeup:     1;           /*sleep wakeup interrupt state*/
212             uint32_t slp_reject:     1;           /*sleep reject interrupt state*/
213             uint32_t sdio_idle:      1;           /*SDIO idle interrupt state*/
214             uint32_t rtc_wdt:        1;           /*RTC WDT interrupt state*/
215             uint32_t rtc_time_valid: 1;           /*RTC time valid interrupt state*/
216             uint32_t rtc_sar:        1;           /*ULP-coprocessor interrupt state*/
217             uint32_t rtc_touch:      1;           /*touch interrupt state*/
218             uint32_t rtc_brown_out:  1;           /*brown out interrupt state*/
219             uint32_t rtc_main_timer: 1;           /*RTC main timer interrupt state*/
220             uint32_t reserved9:            23;
221         };
222         uint32_t val;
223     } int_st;
224     union {
225         struct {
226             uint32_t slp_wakeup:     1;          /*Clear sleep wakeup interrupt state*/
227             uint32_t slp_reject:     1;          /*Clear sleep reject interrupt state*/
228             uint32_t sdio_idle:      1;          /*Clear SDIO idle interrupt state*/
229             uint32_t rtc_wdt:        1;          /*Clear RTC WDT interrupt state*/
230             uint32_t rtc_time_valid: 1;          /*Clear RTC time valid interrupt state*/
231             uint32_t rtc_sar:        1;          /*Clear ULP-coprocessor interrupt state*/
232             uint32_t rtc_touch:      1;          /*Clear touch interrupt state*/
233             uint32_t rtc_brown_out:  1;          /*Clear brown out interrupt state*/
234             uint32_t rtc_main_timer: 1;          /*Clear RTC main timer interrupt state*/
235             uint32_t reserved9:             23;
236         };
237         uint32_t val;
238     } int_clr;
239     uint32_t rtc_store0;                                 /*32-bit general purpose retention register*/
240     uint32_t rtc_store1;                                 /*32-bit general purpose retention register*/
241     uint32_t rtc_store2;                                 /*32-bit general purpose retention register*/
242     uint32_t rtc_store3;                                 /*32-bit general purpose retention register*/
243     union {
244         struct {
245             uint32_t reserved0:     30;
246             uint32_t ctr_lv: 1;                  /*0: power down XTAL at high level  1: power down XTAL at low level*/
247             uint32_t ctr_en: 1;                  /*enable control XTAL by external pads*/
248         };
249         uint32_t val;
250     } ext_xtl_conf;
251     union {
252         struct {
253             uint32_t reserved0:     30;
254             uint32_t wakeup0_lv: 1;                  /*0: external wakeup at low level  1: external wakeup at high level*/
255             uint32_t wakeup1_lv: 1;                  /*0: external wakeup at low level  1: external wakeup at high level*/
256         };
257         uint32_t val;
258     } ext_wakeup_conf;
259     union {
260         struct {
261             uint32_t reserved0:          24;
262             uint32_t gpio_reject_en:      1;             /*enable GPIO reject*/
263             uint32_t sdio_reject_en:      1;             /*enable SDIO reject*/
264             uint32_t light_slp_reject_en: 1;             /*enable reject for light sleep*/
265             uint32_t deep_slp_reject_en:  1;             /*enable reject for deep sleep*/
266             uint32_t reject_cause:        4;             /*sleep reject cause*/
267         };
268         uint32_t val;
269     } slp_reject_conf;
270     union {
271         struct {
272             uint32_t reserved0:        29;
273             uint32_t cpusel_conf:   1;               /*CPU sel option*/
274             uint32_t cpuperiod_sel: 2;               /*CPU period sel*/
275         };
276         uint32_t val;
277     } cpu_period_conf;
278     union {
279         struct {
280             uint32_t reserved0:    22;
281             uint32_t sdio_act_dnum:10;
282         };
283         uint32_t val;
284     } sdio_act_conf;
285     union {
286         struct {
287             uint32_t reserved0:           4;
288             uint32_t ck8m_div:            2;             /*CK8M_D256_OUT divider. 00: div128  01: div256  10: div512  11: div1024.*/
289             uint32_t enb_ck8m:            1;             /*disable CK8M and CK8M_D256_OUT*/
290             uint32_t enb_ck8m_div:        1;             /*1: CK8M_D256_OUT is actually CK8M  0: CK8M_D256_OUT is CK8M divided by 256*/
291             uint32_t dig_xtal32k_en:      1;             /*enable CK_XTAL_32K for digital core (no relationship with RTC core)*/
292             uint32_t dig_clk8m_d256_en:   1;             /*enable CK8M_D256_OUT for digital core (no relationship with RTC core)*/
293             uint32_t dig_clk8m_en:        1;             /*enable CK8M for digital core (no relationship with RTC core)*/
294             uint32_t ck8m_dfreq_force:    1;
295             uint32_t ck8m_div_sel:        3;             /*divider = reg_ck8m_div_sel + 1*/
296             uint32_t xtal_force_nogating: 1;             /*XTAL force no gating during sleep*/
297             uint32_t ck8m_force_nogating: 1;             /*CK8M force no gating during sleep*/
298             uint32_t ck8m_dfreq:          8;             /*CK8M_DFREQ*/
299             uint32_t ck8m_force_pd:       1;             /*CK8M force power down*/
300             uint32_t ck8m_force_pu:       1;             /*CK8M force power up*/
301             uint32_t soc_clk_sel:         2;             /*SOC clock sel. 0: XTAL  1: PLL  2: CK8M  3: APLL*/
302             uint32_t fast_clk_rtc_sel:    1;             /*fast_clk_rtc sel. 0: XTAL div 4  1: CK8M*/
303             uint32_t ana_clk_rtc_sel:     2;             /*slow_clk_rtc sel. 0: SLOW_CK  1: CK_XTAL_32K  2: CK8M_D256_OUT*/
304         };
305         uint32_t val;
306     } clk_conf;
307     union {
308         struct {
309             uint32_t reserved0:   21;
310             uint32_t sdio_pd_en:   1;                    /*power down SDIO_REG in sleep. Only active when reg_sdio_force = 0*/
311             uint32_t sdio_force:   1;                    /*1: use SW option to control SDIO_REG  0: use state machine*/
312             uint32_t sdio_tieh:    1;                    /*SW option for SDIO_TIEH. Only active when reg_sdio_force = 1*/
313             uint32_t reg1p8_ready: 1;                    /*read only register for REG1P8_READY*/
314             uint32_t drefl_sdio:   2;                    /*SW option for DREFL_SDIO. Only active when reg_sdio_force = 1*/
315             uint32_t drefm_sdio:   2;                    /*SW option for DREFM_SDIO. Only active when reg_sdio_force = 1*/
316             uint32_t drefh_sdio:   2;                    /*SW option for DREFH_SDIO. Only active when reg_sdio_force = 1*/
317             uint32_t xpd_sdio:     1;                    /*SW option for XPD_SDIO_REG. Only active when reg_sdio_force = 1*/
318         };
319         uint32_t val;
320     } sdio_conf;
321     union {
322         struct {
323             uint32_t reserved0:            24;
324             uint32_t dbg_atten:             2;           /*DBG_ATTEN*/
325             uint32_t enb_sck_xtal:          1;           /*ENB_SCK_XTAL*/
326             uint32_t inc_heartbeat_refresh: 1;           /*INC_HEARTBEAT_REFRESH*/
327             uint32_t dec_heartbeat_period:  1;           /*DEC_HEARTBEAT_PERIOD*/
328             uint32_t inc_heartbeat_period:  1;           /*INC_HEARTBEAT_PERIOD*/
329             uint32_t dec_heartbeat_width:   1;           /*DEC_HEARTBEAT_WIDTH*/
330             uint32_t rst_bias_i2c:          1;           /*RST_BIAS_I2C*/
331         };
332         uint32_t val;
333     } bias_conf;
334     union {
335         struct {
336             uint32_t reserved0:           7;
337             uint32_t sck_dcap_force:      1;             /*N/A*/
338             uint32_t dig_dbias_slp:       3;             /*DIG_REG_DBIAS during sleep*/
339             uint32_t dig_dbias_wak:       3;             /*DIG_REG_DBIAS during wakeup*/
340             uint32_t sck_dcap:            8;             /*SCK_DCAP*/
341             uint32_t rtc_dbias_slp:       3;             /*RTC_DBIAS during sleep*/
342             uint32_t rtc_dbias_wak:       3;             /*RTC_DBIAS during wakeup*/
343             uint32_t rtc_dboost_force_pd: 1;             /*RTC_DBOOST force power down*/
344             uint32_t rtc_dboost_force_pu: 1;             /*RTC_DBOOST force power up*/
345             uint32_t rtc_force_pd:        1;             /*RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )*/
346             uint32_t rtc_force_pu:        1;             /*RTC_REG force power up*/
347         };
348         uint32_t val;
349     } rtc;
350     union {
351         struct {
352             uint32_t fastmem_force_noiso: 1;         /*Fast RTC memory force no ISO*/
353             uint32_t fastmem_force_iso:   1;         /*Fast RTC memory force ISO*/
354             uint32_t slowmem_force_noiso: 1;         /*RTC memory force no ISO*/
355             uint32_t slowmem_force_iso:   1;         /*RTC memory force ISO*/
356             uint32_t rtc_force_iso:           1;         /*rtc_peri force ISO*/
357             uint32_t force_noiso:         1;         /*rtc_peri force no ISO*/
358             uint32_t fastmem_folw_cpu:    1;         /*1: Fast RTC memory PD following CPU  0: fast RTC memory PD following RTC state machine*/
359             uint32_t fastmem_force_lpd:   1;         /*Fast RTC memory force PD*/
360             uint32_t fastmem_force_lpu:   1;         /*Fast RTC memory force no PD*/
361             uint32_t slowmem_folw_cpu:    1;         /*1: RTC memory  PD following CPU  0: RTC memory PD following RTC state machine*/
362             uint32_t slowmem_force_lpd:   1;         /*RTC memory force PD*/
363             uint32_t slowmem_force_lpu:   1;         /*RTC memory force no PD*/
364             uint32_t fastmem_force_pd:    1;         /*Fast RTC memory force power down*/
365             uint32_t fastmem_force_pu:    1;         /*Fast RTC memory force power up*/
366             uint32_t fastmem_pd_en:       1;         /*enable power down fast RTC memory in sleep*/
367             uint32_t slowmem_force_pd:    1;         /*RTC memory force power down*/
368             uint32_t slowmem_force_pu:    1;         /*RTC memory force power up*/
369             uint32_t slowmem_pd_en:       1;         /*enable power down RTC memory in sleep*/
370             uint32_t pwc_force_pd:        1;         /*rtc_peri force power down*/
371             uint32_t pwc_force_pu:        1;         /*rtc_peri force power up*/
372             uint32_t pd_en:               1;         /*enable power down rtc_peri in sleep*/
373             uint32_t reserved21:             11;
374         };
375         uint32_t val;
376     } rtc_pwc;
377     union {
378         struct {
379             uint32_t reserved0:           3;
380             uint32_t lslp_mem_force_pd:   1;             /*memories in digital core force PD in sleep*/
381             uint32_t lslp_mem_force_pu:   1;             /*memories in digital core force no PD in sleep*/
382             uint32_t rom0_force_pd:       1;             /*ROM force power down*/
383             uint32_t rom0_force_pu:       1;             /*ROM force power up*/
384             uint32_t inter_ram0_force_pd: 1;             /*internal SRAM 0 force power down*/
385             uint32_t inter_ram0_force_pu: 1;             /*internal SRAM 0 force power up*/
386             uint32_t inter_ram1_force_pd: 1;             /*internal SRAM 1 force power down*/
387             uint32_t inter_ram1_force_pu: 1;             /*internal SRAM 1 force power up*/
388             uint32_t inter_ram2_force_pd: 1;             /*internal SRAM 2 force power down*/
389             uint32_t inter_ram2_force_pu: 1;             /*internal SRAM 2 force power up*/
390             uint32_t inter_ram3_force_pd: 1;             /*internal SRAM 3 force power down*/
391             uint32_t inter_ram3_force_pu: 1;             /*internal SRAM 3 force power up*/
392             uint32_t inter_ram4_force_pd: 1;             /*internal SRAM 4 force power down*/
393             uint32_t inter_ram4_force_pu: 1;             /*internal SRAM 4 force power up*/
394             uint32_t wifi_force_pd:       1;             /*wifi force power down*/
395             uint32_t wifi_force_pu:       1;             /*wifi force power up*/
396             uint32_t dg_wrap_force_pd:    1;             /*digital core force power down*/
397             uint32_t dg_wrap_force_pu:    1;             /*digital core force power up*/
398             uint32_t reserved21:          3;
399             uint32_t rom0_pd_en:          1;             /*enable power down ROM in sleep*/
400             uint32_t inter_ram0_pd_en:    1;             /*enable power down internal SRAM 0 in sleep*/
401             uint32_t inter_ram1_pd_en:    1;             /*enable power down internal SRAM 1 in sleep*/
402             uint32_t inter_ram2_pd_en:    1;             /*enable power down internal SRAM 2 in sleep*/
403             uint32_t inter_ram3_pd_en:    1;             /*enable power down internal SRAM 3 in sleep*/
404             uint32_t inter_ram4_pd_en:    1;             /*enable power down internal SRAM 4 in sleep*/
405             uint32_t wifi_pd_en:          1;             /*enable power down wifi in sleep*/
406             uint32_t dg_wrap_pd_en:       1;             /*enable power down digital core in sleep*/
407         };
408         uint32_t val;
409     } dig_pwc;
410     union {
411         struct {
412             uint32_t reserved0:              7;
413             uint32_t dig_iso_force_off:      1;
414             uint32_t dig_iso_force_on:       1;
415             uint32_t dg_pad_autohold:        1;          /*read only register to indicate digital pad auto-hold status*/
416             uint32_t clr_dg_pad_autohold:    1;          /*wtite only register to clear digital pad auto-hold*/
417             uint32_t dg_pad_autohold_en:     1;          /*digital pad enable auto-hold*/
418             uint32_t dg_pad_force_noiso:     1;          /*digital pad force no ISO*/
419             uint32_t dg_pad_force_iso:       1;          /*digital pad force ISO*/
420             uint32_t dg_pad_force_unhold:    1;          /*digital pad force un-hold*/
421             uint32_t dg_pad_force_hold:      1;          /*digital pad force hold*/
422             uint32_t rom0_force_iso:         1;          /*ROM force ISO*/
423             uint32_t rom0_force_noiso:       1;          /*ROM force no ISO*/
424             uint32_t inter_ram0_force_iso:   1;          /*internal SRAM 0 force ISO*/
425             uint32_t inter_ram0_force_noiso: 1;          /*internal SRAM 0 force no ISO*/
426             uint32_t inter_ram1_force_iso:   1;          /*internal SRAM 1 force ISO*/
427             uint32_t inter_ram1_force_noiso: 1;          /*internal SRAM 1 force no ISO*/
428             uint32_t inter_ram2_force_iso:   1;          /*internal SRAM 2 force ISO*/
429             uint32_t inter_ram2_force_noiso: 1;          /*internal SRAM 2 force no ISO*/
430             uint32_t inter_ram3_force_iso:   1;          /*internal SRAM 3 force ISO*/
431             uint32_t inter_ram3_force_noiso: 1;          /*internal SRAM 3 force no ISO*/
432             uint32_t inter_ram4_force_iso:   1;          /*internal SRAM 4 force ISO*/
433             uint32_t inter_ram4_force_noiso: 1;          /*internal SRAM 4 force no ISO*/
434             uint32_t wifi_force_iso:         1;          /*wifi force ISO*/
435             uint32_t wifi_force_noiso:       1;          /*wifi force no ISO*/
436             uint32_t dg_wrap_force_iso:      1;          /*digital core force ISO*/
437             uint32_t dg_wrap_force_noiso:    1;          /*digital core force no ISO*/
438         };
439         uint32_t val;
440     } dig_iso;
441     union {
442         struct {
443             uint32_t reserved0:            7;
444             uint32_t pause_in_slp:     1;            /*pause WDT in sleep*/
445             uint32_t appcpu_reset_en:  1;            /*enable WDT reset APP CPU*/
446             uint32_t procpu_reset_en:  1;            /*enable WDT reset PRO CPU*/
447             uint32_t flashboot_mod_en: 1;            /*enable WDT in flash boot*/
448             uint32_t sys_reset_length: 3;            /*system reset counter length*/
449             uint32_t cpu_reset_length: 3;            /*CPU reset counter length*/
450             uint32_t level_int_en:     1;            /*When set, level type interrupt generation is enabled*/
451             uint32_t edge_int_en:      1;            /*When set, edge type interrupt generation is enabled*/
452             uint32_t stg3:             3;            /*1: interrupt stage en  2: CPU reset stage en  3: system reset stage en  4: RTC reset stage en*/
453             uint32_t stg2:             3;            /*1: interrupt stage en  2: CPU reset stage en  3: system reset stage en  4: RTC reset stage en*/
454             uint32_t stg1:             3;            /*1: interrupt stage en  2: CPU reset stage en  3: system reset stage en  4: RTC reset stage en*/
455             uint32_t stg0:             3;            /*1: interrupt stage en  2: CPU reset stage en  3: system reset stage en  4: RTC reset stage en*/
456             uint32_t en:               1;            /*enable RTC WDT*/
457         };
458         uint32_t val;
459     } wdt_config0;
460     uint32_t wdt_config1;                             /**/
461     uint32_t wdt_config2;                             /**/
462     uint32_t wdt_config3;                             /**/
463     uint32_t wdt_config4;                             /**/
464     union {
465         struct {
466             uint32_t reserved0:   31;
467             uint32_t feed: 1;
468         };
469         uint32_t val;
470     } wdt_feed;
471     uint32_t wdt_wprotect;                            /**/
472     union {
473         struct {
474             uint32_t reserved0: 29;
475             uint32_t ent_rtc:    1;                      /*ENT_RTC*/
476             uint32_t dtest_rtc:  2;                      /*DTEST_RTC*/
477         };
478         uint32_t val;
479     } test_mux;
480     union {
481         struct {
482             uint32_t reserved0:         20;
483             uint32_t appcpu_c1: 6;              /*{reg_sw_stall_appcpu_c1[5:0]   reg_sw_stall_appcpu_c0[1:0]}  == 0x86 will stall APP CPU*/
484             uint32_t procpu_c1: 6;              /*{reg_sw_stall_procpu_c1[5:0]   reg_sw_stall_procpu_c0[1:0]}  == 0x86 will stall PRO CPU*/
485         };
486         uint32_t val;
487     } sw_cpu_stall;
488     uint32_t store4;                                 /*32-bit general purpose retention register*/
489     uint32_t store5;                                 /*32-bit general purpose retention register*/
490     uint32_t store6;                                 /*32-bit general purpose retention register*/
491     uint32_t store7;                                 /*32-bit general purpose retention register*/
492     uint32_t diag0;                                  /**/
493     uint32_t diag1;                                  /**/
494     union {
495         struct {
496             uint32_t adc1_hold_force:       1;
497             uint32_t adc2_hold_force:       1;
498             uint32_t pdac1_hold_force:      1;
499             uint32_t pdac2_hold_force:      1;
500             uint32_t sense1_hold_force:     1;
501             uint32_t sense2_hold_force:     1;
502             uint32_t sense3_hold_force:     1;
503             uint32_t sense4_hold_force:     1;
504             uint32_t touch_pad0_hold_force: 1;
505             uint32_t touch_pad1_hold_force: 1;
506             uint32_t touch_pad2_hold_force: 1;
507             uint32_t touch_pad3_hold_force: 1;
508             uint32_t touch_pad4_hold_force: 1;
509             uint32_t touch_pad5_hold_force: 1;
510             uint32_t touch_pad6_hold_force: 1;
511             uint32_t touch_pad7_hold_force: 1;
512             uint32_t x32p_hold_force:       1;
513             uint32_t x32n_hold_force:       1;
514             uint32_t reserved18:           14;
515         };
516         uint32_t val;
517     } hold_force;
518     union {
519         struct {
520             uint32_t ext_wakeup1_sel:       18;          /*Bitmap to select RTC pads for ext wakeup1*/
521             uint32_t ext_wakeup1_status_clr: 1;          /*clear ext wakeup1 status*/
522             uint32_t reserved19:            13;
523         };
524         uint32_t val;
525     } ext_wakeup1;
526     union {
527         struct {
528             uint32_t ext_wakeup1_status:18;              /*ext wakeup1 status*/
529             uint32_t reserved18:        14;
530         };
531         uint32_t val;
532     } ext_wakeup1_status;
533     union {
534         struct {
535             uint32_t reserved0:                14;
536             uint32_t close_flash_ena: 1;       /*enable close flash when brown out happens*/
537             uint32_t pd_rf_ena:       1;       /*enable power down RF when brown out happens*/
538             uint32_t rst_wait:       10;       /*brown out reset wait cycles*/
539             uint32_t rst_ena:         1;       /*enable brown out reset*/
540             uint32_t thres:          3;       /*brown out threshold*/
541             uint32_t ena:             1;       /*enable brown out*/
542             uint32_t det:         1;       /*brown out detect*/
543         };
544         uint32_t val;
545     } brown_out;
546     uint32_t reserved_39;
547     uint32_t reserved_3d;
548     uint32_t reserved_41;
549     uint32_t reserved_45;
550     uint32_t reserved_49;
551     uint32_t reserved_4d;
552     union {
553         struct {
554             uint32_t date:      28;
555             uint32_t reserved28: 4;
556         };
557         uint32_t val;
558     } date;
559 } rtc_cntl_dev_t;
560 extern rtc_cntl_dev_t RTCCNTL;
561 
562 #ifdef __cplusplus
563 }
564 #endif
565 
566 #endif  /* _SOC_RTC_CNTL_STRUCT_H_ */
567