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