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