1 /*
2  * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef _SOC_GPIO_STRUCT_H_
8 #define _SOC_GPIO_STRUCT_H_
9 
10 
11 #include <stdint.h>
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 typedef volatile struct gpio_dev_s {
17     uint32_t bt_select;
18     uint32_t out;
19     uint32_t out_w1ts;
20     uint32_t out_w1tc;
21     union {
22         struct {
23             uint32_t data                          :    22;
24             uint32_t reserved22                    :    10;
25         };
26         uint32_t val;
27     } out1;
28     union {
29         struct {
30             uint32_t data                          :    22;
31             uint32_t reserved22                    :    10;
32         };
33         uint32_t val;
34     } out1_w1ts;
35     union {
36         struct {
37             uint32_t data                          :    22;
38             uint32_t reserved22                    :    10;
39         };
40         uint32_t val;
41     } out1_w1tc;
42     union {
43         struct {
44             uint32_t sel                           :    8;
45             uint32_t reserved8                     :    24;
46         };
47         uint32_t val;
48     } sdio_select;
49     uint32_t enable;
50     uint32_t enable_w1ts;
51     uint32_t enable_w1tc;
52     union {
53         struct {
54             uint32_t data                          :    22;
55             uint32_t reserved22                    :    10;
56         };
57         uint32_t val;
58     } enable1;
59     union {
60         struct {
61             uint32_t data                          :    22;
62             uint32_t reserved22                    :    10;
63         };
64         uint32_t val;
65     } enable1_w1ts;
66     union {
67         struct {
68             uint32_t data                          :    22;
69             uint32_t reserved22                    :    10;
70         };
71         uint32_t val;
72     } enable1_w1tc;
73     union {
74         struct {
75             uint32_t strapping                     :    16;
76             uint32_t reserved16                    :    16;
77         };
78         uint32_t val;
79     } strap;
80     uint32_t in;
81     union {
82         struct {
83             uint32_t data                          :    22;
84             uint32_t reserved22                    :    10;
85         };
86         uint32_t val;
87     } in1;
88     uint32_t status;
89     uint32_t status_w1ts;
90     uint32_t status_w1tc;
91     union {
92         struct {
93             uint32_t intr_st                       :    22;
94             uint32_t reserved22                    :    10;
95         };
96         uint32_t val;
97     } status1;
98     union {
99         struct {
100             uint32_t intr_st                       :    22;
101             uint32_t reserved22                    :    10;
102         };
103         uint32_t val;
104     } status1_w1ts;
105     union {
106         struct {
107             uint32_t intr_st                       :    22;
108             uint32_t reserved22                    :    10;
109         };
110         uint32_t val;
111     } status1_w1tc;
112     uint32_t pcpu_int;                                            /*GPIO0~31 PRO & APP CPU interrupt status*/
113     uint32_t pcpu_nmi_int;                                        /*GPIO0~31 PRO & APP CPU non-maskable interrupt status*/
114     uint32_t cpusdio_int;
115     union {
116         struct {
117             uint32_t intr                          :    22;       /*GPIO32-48 PRO & APP CPU interrupt status*/
118             uint32_t reserved22                    :    10;
119         };
120         uint32_t val;
121     } pcpu_int1;
122     union {
123         struct {
124             uint32_t intr                          :    22;       /*GPIO32-48 PRO & APP CPU non-maskable interrupt status*/
125             uint32_t reserved22                    :    10;
126         };
127         uint32_t val;
128     } pcpu_nmi_int1;
129     union {
130         struct {
131             uint32_t intr                          :    22;
132             uint32_t reserved22                    :    10;
133         };
134         uint32_t val;
135     } cpusdio_int1;
136     union {
137         struct {
138             uint32_t sync2_bypass                  :    2;
139             uint32_t pad_driver                    :    1;
140             uint32_t sync1_bypass                  :    2;
141             uint32_t reserved5                     :    2;
142             uint32_t int_type                      :    3;
143             uint32_t wakeup_enable                 :    1;
144             uint32_t config                        :    2;
145             uint32_t int_ena                       :    5;
146             uint32_t reserved18                    :    14;
147         };
148         uint32_t val;
149     } pin[54];
150     uint32_t status_next;
151     union {
152         struct {
153             uint32_t intr_st_next                  :    22;
154             uint32_t reserved22                    :    10;
155         };
156         uint32_t val;
157     } status_next1;
158     union {
159         struct {
160             uint32_t func_sel                      :    6;
161             uint32_t sig_in_inv                    :    1;
162             uint32_t sig_in_sel                    :    1;
163             uint32_t reserved8                     :    24;
164         };
165         uint32_t val;
166     } func_in_sel_cfg[256];
167     union {
168         struct {
169             uint32_t func_sel                      :    9;
170             uint32_t inv_sel                       :    1;
171             uint32_t oen_sel                       :    1;
172             uint32_t oen_inv_sel                   :    1;
173             uint32_t reserved12                    :    20;
174         };
175         uint32_t val;
176     } func_out_sel_cfg[54];
177     union {
178         struct {
179             uint32_t clk_en                        :    1;
180             uint32_t reserved1                     :    31;
181         };
182         uint32_t val;
183     } clock_gate;
184     uint32_t reserved_630;
185     uint32_t reserved_634;
186     uint32_t reserved_638;
187     uint32_t reserved_63c;
188     uint32_t reserved_640;
189     uint32_t reserved_644;
190     uint32_t reserved_648;
191     uint32_t reserved_64c;
192     uint32_t reserved_650;
193     uint32_t reserved_654;
194     uint32_t reserved_658;
195     uint32_t reserved_65c;
196     uint32_t reserved_660;
197     uint32_t reserved_664;
198     uint32_t reserved_668;
199     uint32_t reserved_66c;
200     uint32_t reserved_670;
201     uint32_t reserved_674;
202     uint32_t reserved_678;
203     uint32_t reserved_67c;
204     uint32_t reserved_680;
205     uint32_t reserved_684;
206     uint32_t reserved_688;
207     uint32_t reserved_68c;
208     uint32_t reserved_690;
209     uint32_t reserved_694;
210     uint32_t reserved_698;
211     uint32_t reserved_69c;
212     uint32_t reserved_6a0;
213     uint32_t reserved_6a4;
214     uint32_t reserved_6a8;
215     uint32_t reserved_6ac;
216     uint32_t reserved_6b0;
217     uint32_t reserved_6b4;
218     uint32_t reserved_6b8;
219     uint32_t reserved_6bc;
220     uint32_t reserved_6c0;
221     uint32_t reserved_6c4;
222     uint32_t reserved_6c8;
223     uint32_t reserved_6cc;
224     uint32_t reserved_6d0;
225     uint32_t reserved_6d4;
226     uint32_t reserved_6d8;
227     uint32_t reserved_6dc;
228     uint32_t reserved_6e0;
229     uint32_t reserved_6e4;
230     uint32_t reserved_6e8;
231     uint32_t reserved_6ec;
232     uint32_t reserved_6f0;
233     uint32_t reserved_6f4;
234     uint32_t reserved_6f8;
235     union {
236         struct {
237             uint32_t date                          :    28;
238             uint32_t reserved28                    :    4;
239         };
240         uint32_t val;
241     } date;
242 } gpio_dev_t;
243 extern gpio_dev_t GPIO;
244 #ifdef __cplusplus
245 }
246 #endif
247 
248 
249 
250 #endif /*_SOC_GPIO_STRUCT_H_ */
251