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_syscon_test_conf_reg_t;
20 
21 typedef union {
22     struct {
23         uint32_t reserved_0:21;
24         uint32_t clk_etm_en:1;
25         uint32_t clk_zb_apb_en:1;
26         uint32_t clk_zb_mac_en:1;
27         uint32_t clk_modem_sec_ecb_en:1;
28         uint32_t clk_modem_sec_ccm_en:1;
29         uint32_t clk_modem_sec_bah_en:1;
30         uint32_t clk_modem_sec_apb_en:1;
31         uint32_t clk_modem_sec_en:1;
32         uint32_t clk_ble_timer_apb_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 reserved_23:1;
44         uint32_t clk_zb_fo:1;
45         uint32_t reserved_25:4;
46         uint32_t clk_modem_sec_fo:1;
47         uint32_t clk_ble_timer_fo:1;
48         uint32_t clk_data_dump_fo:1;
49     };
50     uint32_t val;
51 } modem_syscon_clk_conf_force_on_reg_t;
52 
53 typedef union {
54     struct {
55         uint32_t reserved_0:14;
56         uint32_t rst_fe:1;
57         uint32_t rst_btmac_apb:1;
58         uint32_t rst_btmac:1;
59         uint32_t rst_btbb_apb:1;
60         uint32_t rst_btbb:1;
61         uint32_t reserved_19:3;
62         uint32_t rst_etm:1;
63         uint32_t reserved_23:1;
64         uint32_t rst_zbmac:1;
65         uint32_t rst_modem_ecb:1;
66         uint32_t rst_modem_ccm:1;
67         uint32_t rst_modem_bah:1;
68         uint32_t reserved_28:1;
69         uint32_t rst_modem_sec:1;
70         uint32_t rst_ble_timer:1;
71         uint32_t rst_data_dump:1;
72     };
73     uint32_t val;
74 } modem_syscon_modem_rst_conf_reg_t;
75 
76 typedef union {
77     struct {
78         uint32_t reserved_0:12;
79         uint32_t clk_fe_16m_en:1;
80         uint32_t clk_fe_32m_en:1;
81         uint32_t clk_fe_sdm_en:1;
82         uint32_t clk_fe_adc_en:1;
83         uint32_t clk_fe_apb_en:1;
84         uint32_t clk_bt_apb_en:1;
85         uint32_t clk_bt_en:1;
86         uint32_t reserved_19:13;
87     };
88     uint32_t val;
89 } modem_syscon_clk_conf1_reg_t;
90 
91 typedef union {
92     struct {
93         uint32_t reserved_0:16;
94         uint32_t clk_fe_fo:1;
95         uint32_t reserved_17:1;
96         uint32_t clk_bt_fo:1;
97         uint32_t reserved_19:13;
98     };
99     uint32_t val;
100 } modem_syscon_clk_conf1_force_on_reg_t;
101 
102 typedef union {
103     struct {
104         uint32_t modem_mem_wp:3;
105         uint32_t modem_mem_wa:3;
106         uint32_t modem_mem_ra:2;
107         uint32_t reserved_8:24;
108     };
109     uint32_t val;
110 } modem_syscon_mem_conf_reg_t;
111 
112 typedef union {
113     struct {
114         uint32_t date:28;
115         uint32_t reserved_28:4;
116     };
117     uint32_t val;
118 } modem_syscon_date_reg_t;
119 
120 
121 typedef struct {
122     volatile modem_syscon_test_conf_reg_t test_conf;
123     volatile modem_syscon_clk_conf_reg_t clk_conf;
124     volatile modem_syscon_clk_conf_force_on_reg_t clk_conf_force_on;
125     volatile modem_syscon_modem_rst_conf_reg_t modem_rst_conf;
126     volatile modem_syscon_clk_conf1_reg_t clk_conf1;
127     volatile modem_syscon_clk_conf1_force_on_reg_t clk_conf1_force_on;
128     volatile modem_syscon_mem_conf_reg_t mem_conf;
129     volatile modem_syscon_date_reg_t date;
130 } modem_syscon_dev_t;
131 
132 extern modem_syscon_dev_t MODEM_SYSCON;
133 
134 #ifndef __cplusplus
135 _Static_assert(sizeof(modem_syscon_dev_t) == 0x20, "Invalid size of modem_syscon_dev_t structure");
136 #endif
137 
138 #ifdef __cplusplus
139 }
140 #endif
141