1 /*
2  * Copyright (c) 2021-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_GPIO_H
10 #define HPM_GPIO_H
11 
12 typedef struct {
13     struct {
14         __R  uint32_t VALUE;                   /* 0x0: GPIO input value */
15         __R  uint8_t  RESERVED0[12];           /* 0x4 - 0xF: Reserved */
16     } DI[16];
17     struct {
18         __RW uint32_t VALUE;                   /* 0x100: GPIO output value */
19         __RW uint32_t SET;                     /* 0x104: GPIO output set */
20         __RW uint32_t CLEAR;                   /* 0x108: GPIO output clear */
21         __RW uint32_t TOGGLE;                  /* 0x10C: GPIO output toggle */
22     } DO[16];
23     struct {
24         __RW uint32_t VALUE;                   /* 0x200: GPIO direction value */
25         __RW uint32_t SET;                     /* 0x204: GPIO direction set */
26         __RW uint32_t CLEAR;                   /* 0x208: GPIO direction clear */
27         __RW uint32_t TOGGLE;                  /* 0x20C: GPIO direction toggle */
28     } OE[16];
29     struct {
30         __W  uint32_t VALUE;                   /* 0x300: GPIO interrupt flag value */
31         __R  uint8_t  RESERVED0[12];           /* 0x304 - 0x30F: Reserved */
32     } IF[16];
33     struct {
34         __RW uint32_t VALUE;                   /* 0x400: GPIO interrupt enable value */
35         __RW uint32_t SET;                     /* 0x404: GPIO interrupt enable set */
36         __RW uint32_t CLEAR;                   /* 0x408: GPIO interrupt enable clear */
37         __RW uint32_t TOGGLE;                  /* 0x40C: GPIO interrupt enable toggle */
38     } IE[16];
39     struct {
40         __RW uint32_t VALUE;                   /* 0x500: GPIO interrupt polarity value */
41         __RW uint32_t SET;                     /* 0x504: GPIO interrupt polarity set */
42         __RW uint32_t CLEAR;                   /* 0x508: GPIO interrupt polarity clear */
43         __RW uint32_t TOGGLE;                  /* 0x50C: GPIO interrupt polarity toggle */
44     } PL[16];
45     struct {
46         __RW uint32_t VALUE;                   /* 0x600: GPIO interrupt type value */
47         __RW uint32_t SET;                     /* 0x604: GPIO interrupt type set */
48         __RW uint32_t CLEAR;                   /* 0x608: GPIO interrupt type clear */
49         __RW uint32_t TOGGLE;                  /* 0x60C: GPIO interrupt type toggle */
50     } TP[16];
51     struct {
52         __RW uint32_t VALUE;                   /* 0x700: GPIO interrupt asynchronous value */
53         __RW uint32_t SET;                     /* 0x704: GPIO interrupt asynchronous set */
54         __RW uint32_t CLEAR;                   /* 0x708: GPIO interrupt asynchronous clear */
55         __RW uint32_t TOGGLE;                  /* 0x70C: GPIO interrupt asynchronous toggle */
56     } AS[16];
57 } GPIO_Type;
58 
59 
60 /* Bitfield definition for register of struct array DI: VALUE */
61 /*
62  * INPUT (RO)
63  *
64  * GPIO input bus value, each bit represents a bus bit
65  * 0: low level presents on chip pin
66  * 1: high level presents on chip pin
67  */
68 #define GPIO_DI_VALUE_INPUT_MASK (0xFFFFFFFFUL)
69 #define GPIO_DI_VALUE_INPUT_SHIFT (0U)
70 #define GPIO_DI_VALUE_INPUT_GET(x) (((uint32_t)(x) & GPIO_DI_VALUE_INPUT_MASK) >> GPIO_DI_VALUE_INPUT_SHIFT)
71 
72 /* Bitfield definition for register of struct array DO: VALUE */
73 /*
74  * OUTPUT (RW)
75  *
76  * GPIO output register value, each bit represents a bus bit
77  * 0: chip pin output low level when direction is output
78  * 1: chip pin output high level when direction is output
79  */
80 #define GPIO_DO_VALUE_OUTPUT_MASK (0xFFFFFFFFUL)
81 #define GPIO_DO_VALUE_OUTPUT_SHIFT (0U)
82 #define GPIO_DO_VALUE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_VALUE_OUTPUT_SHIFT) & GPIO_DO_VALUE_OUTPUT_MASK)
83 #define GPIO_DO_VALUE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_VALUE_OUTPUT_MASK) >> GPIO_DO_VALUE_OUTPUT_SHIFT)
84 
85 /* Bitfield definition for register of struct array DO: SET */
86 /*
87  * OUTPUT (RW)
88  *
89  * GPIO output register value, each bit represents a bus bit
90  * 0: chip pin output low level when direction is output
91  * 1: chip pin output high level when direction is output
92  */
93 #define GPIO_DO_SET_OUTPUT_MASK (0xFFFFFFFFUL)
94 #define GPIO_DO_SET_OUTPUT_SHIFT (0U)
95 #define GPIO_DO_SET_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_SET_OUTPUT_SHIFT) & GPIO_DO_SET_OUTPUT_MASK)
96 #define GPIO_DO_SET_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_SET_OUTPUT_MASK) >> GPIO_DO_SET_OUTPUT_SHIFT)
97 
98 /* Bitfield definition for register of struct array DO: CLEAR */
99 /*
100  * OUTPUT (RW)
101  *
102  * GPIO output register value, each bit represents a bus bit
103  * 0: chip pin output low level when direction is output
104  * 1: chip pin output high level when direction is output
105  */
106 #define GPIO_DO_CLEAR_OUTPUT_MASK (0xFFFFFFFFUL)
107 #define GPIO_DO_CLEAR_OUTPUT_SHIFT (0U)
108 #define GPIO_DO_CLEAR_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_CLEAR_OUTPUT_SHIFT) & GPIO_DO_CLEAR_OUTPUT_MASK)
109 #define GPIO_DO_CLEAR_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_CLEAR_OUTPUT_MASK) >> GPIO_DO_CLEAR_OUTPUT_SHIFT)
110 
111 /* Bitfield definition for register of struct array DO: TOGGLE */
112 /*
113  * OUTPUT (RW)
114  *
115  * GPIO output register value, each bit represents a bus bit
116  * 0: chip pin output low level when direction is output
117  * 1: chip pin output high level when direction is output
118  */
119 #define GPIO_DO_TOGGLE_OUTPUT_MASK (0xFFFFFFFFUL)
120 #define GPIO_DO_TOGGLE_OUTPUT_SHIFT (0U)
121 #define GPIO_DO_TOGGLE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_TOGGLE_OUTPUT_SHIFT) & GPIO_DO_TOGGLE_OUTPUT_MASK)
122 #define GPIO_DO_TOGGLE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_TOGGLE_OUTPUT_MASK) >> GPIO_DO_TOGGLE_OUTPUT_SHIFT)
123 
124 /* Bitfield definition for register of struct array OE: VALUE */
125 /*
126  * DIRECTION (RW)
127  *
128  * GPIO direction, each bit represents a bus bit
129  * 0: input
130  * 1: output
131  */
132 #define GPIO_OE_VALUE_DIRECTION_MASK (0xFFFFFFFFUL)
133 #define GPIO_OE_VALUE_DIRECTION_SHIFT (0U)
134 #define GPIO_OE_VALUE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_VALUE_DIRECTION_SHIFT) & GPIO_OE_VALUE_DIRECTION_MASK)
135 #define GPIO_OE_VALUE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_VALUE_DIRECTION_MASK) >> GPIO_OE_VALUE_DIRECTION_SHIFT)
136 
137 /* Bitfield definition for register of struct array OE: SET */
138 /*
139  * DIRECTION (RW)
140  *
141  * GPIO direction, each bit represents a bus bit
142  * 0: input
143  * 1: output
144  */
145 #define GPIO_OE_SET_DIRECTION_MASK (0xFFFFFFFFUL)
146 #define GPIO_OE_SET_DIRECTION_SHIFT (0U)
147 #define GPIO_OE_SET_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_SET_DIRECTION_SHIFT) & GPIO_OE_SET_DIRECTION_MASK)
148 #define GPIO_OE_SET_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_SET_DIRECTION_MASK) >> GPIO_OE_SET_DIRECTION_SHIFT)
149 
150 /* Bitfield definition for register of struct array OE: CLEAR */
151 /*
152  * DIRECTION (RW)
153  *
154  * GPIO direction, each bit represents a bus bit
155  * 0: input
156  * 1: output
157  */
158 #define GPIO_OE_CLEAR_DIRECTION_MASK (0xFFFFFFFFUL)
159 #define GPIO_OE_CLEAR_DIRECTION_SHIFT (0U)
160 #define GPIO_OE_CLEAR_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_CLEAR_DIRECTION_SHIFT) & GPIO_OE_CLEAR_DIRECTION_MASK)
161 #define GPIO_OE_CLEAR_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_CLEAR_DIRECTION_MASK) >> GPIO_OE_CLEAR_DIRECTION_SHIFT)
162 
163 /* Bitfield definition for register of struct array OE: TOGGLE */
164 /*
165  * DIRECTION (RW)
166  *
167  * GPIO direction, each bit represents a bus bit
168  * 0: input
169  * 1: output
170  */
171 #define GPIO_OE_TOGGLE_DIRECTION_MASK (0xFFFFFFFFUL)
172 #define GPIO_OE_TOGGLE_DIRECTION_SHIFT (0U)
173 #define GPIO_OE_TOGGLE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_TOGGLE_DIRECTION_SHIFT) & GPIO_OE_TOGGLE_DIRECTION_MASK)
174 #define GPIO_OE_TOGGLE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_TOGGLE_DIRECTION_MASK) >> GPIO_OE_TOGGLE_DIRECTION_SHIFT)
175 
176 /* Bitfield definition for register of struct array IF: VALUE */
177 /*
178  * IRQ_FLAG (W1C)
179  *
180  * GPIO interrupt flag, write 1 to clear this flag
181  * 0: no irq
182  * 1: irq pending
183  */
184 #define GPIO_IF_VALUE_IRQ_FLAG_MASK (0xFFFFFFFFUL)
185 #define GPIO_IF_VALUE_IRQ_FLAG_SHIFT (0U)
186 #define GPIO_IF_VALUE_IRQ_FLAG_SET(x) (((uint32_t)(x) << GPIO_IF_VALUE_IRQ_FLAG_SHIFT) & GPIO_IF_VALUE_IRQ_FLAG_MASK)
187 #define GPIO_IF_VALUE_IRQ_FLAG_GET(x) (((uint32_t)(x) & GPIO_IF_VALUE_IRQ_FLAG_MASK) >> GPIO_IF_VALUE_IRQ_FLAG_SHIFT)
188 
189 /* Bitfield definition for register of struct array IE: VALUE */
190 /*
191  * IRQ_EN (RW)
192  *
193  * GPIO interrupt enable, each bit represents a bus bit
194  * 0: irq is disabled
195  * 1: irq is enable
196  */
197 #define GPIO_IE_VALUE_IRQ_EN_MASK (0xFFFFFFFFUL)
198 #define GPIO_IE_VALUE_IRQ_EN_SHIFT (0U)
199 #define GPIO_IE_VALUE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_VALUE_IRQ_EN_SHIFT) & GPIO_IE_VALUE_IRQ_EN_MASK)
200 #define GPIO_IE_VALUE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_VALUE_IRQ_EN_MASK) >> GPIO_IE_VALUE_IRQ_EN_SHIFT)
201 
202 /* Bitfield definition for register of struct array IE: SET */
203 /*
204  * IRQ_EN (RW)
205  *
206  * GPIO interrupt enable, each bit represents a bus bit
207  * 0: irq is disabled
208  * 1: irq is enable
209  */
210 #define GPIO_IE_SET_IRQ_EN_MASK (0xFFFFFFFFUL)
211 #define GPIO_IE_SET_IRQ_EN_SHIFT (0U)
212 #define GPIO_IE_SET_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_SET_IRQ_EN_SHIFT) & GPIO_IE_SET_IRQ_EN_MASK)
213 #define GPIO_IE_SET_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_SET_IRQ_EN_MASK) >> GPIO_IE_SET_IRQ_EN_SHIFT)
214 
215 /* Bitfield definition for register of struct array IE: CLEAR */
216 /*
217  * IRQ_EN (RW)
218  *
219  * GPIO interrupt enable, each bit represents a bus bit
220  * 0: irq is disabled
221  * 1: irq is enable
222  */
223 #define GPIO_IE_CLEAR_IRQ_EN_MASK (0xFFFFFFFFUL)
224 #define GPIO_IE_CLEAR_IRQ_EN_SHIFT (0U)
225 #define GPIO_IE_CLEAR_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_CLEAR_IRQ_EN_SHIFT) & GPIO_IE_CLEAR_IRQ_EN_MASK)
226 #define GPIO_IE_CLEAR_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_CLEAR_IRQ_EN_MASK) >> GPIO_IE_CLEAR_IRQ_EN_SHIFT)
227 
228 /* Bitfield definition for register of struct array IE: TOGGLE */
229 /*
230  * IRQ_EN (RW)
231  *
232  * GPIO interrupt enable, each bit represents a bus bit
233  * 0: irq is disabled
234  * 1: irq is enable
235  */
236 #define GPIO_IE_TOGGLE_IRQ_EN_MASK (0xFFFFFFFFUL)
237 #define GPIO_IE_TOGGLE_IRQ_EN_SHIFT (0U)
238 #define GPIO_IE_TOGGLE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_TOGGLE_IRQ_EN_SHIFT) & GPIO_IE_TOGGLE_IRQ_EN_MASK)
239 #define GPIO_IE_TOGGLE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_TOGGLE_IRQ_EN_MASK) >> GPIO_IE_TOGGLE_IRQ_EN_SHIFT)
240 
241 /* Bitfield definition for register of struct array PL: VALUE */
242 /*
243  * IRQ_POL (RW)
244  *
245  * GPIO interrupt polarity, each bit represents a bus bit
246  * 0: irq is high level or rising edge
247  * 1: irq is low level or falling edge
248  */
249 #define GPIO_PL_VALUE_IRQ_POL_MASK (0xFFFFFFFFUL)
250 #define GPIO_PL_VALUE_IRQ_POL_SHIFT (0U)
251 #define GPIO_PL_VALUE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_VALUE_IRQ_POL_SHIFT) & GPIO_PL_VALUE_IRQ_POL_MASK)
252 #define GPIO_PL_VALUE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_VALUE_IRQ_POL_MASK) >> GPIO_PL_VALUE_IRQ_POL_SHIFT)
253 
254 /* Bitfield definition for register of struct array PL: SET */
255 /*
256  * IRQ_POL (RW)
257  *
258  * GPIO interrupt polarity, each bit represents a bus bit
259  * 0: irq is high level or rising edge
260  * 1: irq is low level or falling edge
261  */
262 #define GPIO_PL_SET_IRQ_POL_MASK (0xFFFFFFFFUL)
263 #define GPIO_PL_SET_IRQ_POL_SHIFT (0U)
264 #define GPIO_PL_SET_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_SET_IRQ_POL_SHIFT) & GPIO_PL_SET_IRQ_POL_MASK)
265 #define GPIO_PL_SET_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_SET_IRQ_POL_MASK) >> GPIO_PL_SET_IRQ_POL_SHIFT)
266 
267 /* Bitfield definition for register of struct array PL: CLEAR */
268 /*
269  * IRQ_POL (RW)
270  *
271  * GPIO interrupt polarity, each bit represents a bus bit
272  * 0: irq is high level or rising edge
273  * 1: irq is low level or falling edge
274  */
275 #define GPIO_PL_CLEAR_IRQ_POL_MASK (0xFFFFFFFFUL)
276 #define GPIO_PL_CLEAR_IRQ_POL_SHIFT (0U)
277 #define GPIO_PL_CLEAR_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_CLEAR_IRQ_POL_SHIFT) & GPIO_PL_CLEAR_IRQ_POL_MASK)
278 #define GPIO_PL_CLEAR_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_CLEAR_IRQ_POL_MASK) >> GPIO_PL_CLEAR_IRQ_POL_SHIFT)
279 
280 /* Bitfield definition for register of struct array PL: TOGGLE */
281 /*
282  * IRQ_POL (RW)
283  *
284  * GPIO interrupt polarity, each bit represents a bus bit
285  * 0: irq is high level or rising edge
286  * 1: irq is low level or falling edge
287  */
288 #define GPIO_PL_TOGGLE_IRQ_POL_MASK (0xFFFFFFFFUL)
289 #define GPIO_PL_TOGGLE_IRQ_POL_SHIFT (0U)
290 #define GPIO_PL_TOGGLE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_TOGGLE_IRQ_POL_SHIFT) & GPIO_PL_TOGGLE_IRQ_POL_MASK)
291 #define GPIO_PL_TOGGLE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_TOGGLE_IRQ_POL_MASK) >> GPIO_PL_TOGGLE_IRQ_POL_SHIFT)
292 
293 /* Bitfield definition for register of struct array TP: VALUE */
294 /*
295  * IRQ_TYPE (RW)
296  *
297  * GPIO interrupt type, each bit represents a bus bit
298  * 0: irq is triggered by level
299  * 1: irq is triggered by edge
300  */
301 #define GPIO_TP_VALUE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
302 #define GPIO_TP_VALUE_IRQ_TYPE_SHIFT (0U)
303 #define GPIO_TP_VALUE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_VALUE_IRQ_TYPE_SHIFT) & GPIO_TP_VALUE_IRQ_TYPE_MASK)
304 #define GPIO_TP_VALUE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_VALUE_IRQ_TYPE_MASK) >> GPIO_TP_VALUE_IRQ_TYPE_SHIFT)
305 
306 /* Bitfield definition for register of struct array TP: SET */
307 /*
308  * IRQ_TYPE (RW)
309  *
310  * GPIO interrupt type, each bit represents a bus bit
311  * 0: irq is triggered by level
312  * 1: irq is triggered by edge
313  */
314 #define GPIO_TP_SET_IRQ_TYPE_MASK (0xFFFFFFFFUL)
315 #define GPIO_TP_SET_IRQ_TYPE_SHIFT (0U)
316 #define GPIO_TP_SET_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_SET_IRQ_TYPE_SHIFT) & GPIO_TP_SET_IRQ_TYPE_MASK)
317 #define GPIO_TP_SET_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_SET_IRQ_TYPE_MASK) >> GPIO_TP_SET_IRQ_TYPE_SHIFT)
318 
319 /* Bitfield definition for register of struct array TP: CLEAR */
320 /*
321  * IRQ_TYPE (RW)
322  *
323  * GPIO interrupt type, each bit represents a bus bit
324  * 0: irq is triggered by level
325  * 1: irq is triggered by edge
326  */
327 #define GPIO_TP_CLEAR_IRQ_TYPE_MASK (0xFFFFFFFFUL)
328 #define GPIO_TP_CLEAR_IRQ_TYPE_SHIFT (0U)
329 #define GPIO_TP_CLEAR_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_CLEAR_IRQ_TYPE_SHIFT) & GPIO_TP_CLEAR_IRQ_TYPE_MASK)
330 #define GPIO_TP_CLEAR_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_CLEAR_IRQ_TYPE_MASK) >> GPIO_TP_CLEAR_IRQ_TYPE_SHIFT)
331 
332 /* Bitfield definition for register of struct array TP: TOGGLE */
333 /*
334  * IRQ_TYPE (RW)
335  *
336  * GPIO interrupt type, each bit represents a bus bit
337  * 0: irq is triggered by level
338  * 1: irq is triggered by edge
339  */
340 #define GPIO_TP_TOGGLE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
341 #define GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT (0U)
342 #define GPIO_TP_TOGGLE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK)
343 #define GPIO_TP_TOGGLE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK) >> GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT)
344 
345 /* Bitfield definition for register of struct array AS: VALUE */
346 /*
347  * IRQ_ASYNC (RW)
348  *
349  * GPIO interrupt asynchronous, each bit represents a bus bit
350  * 0: irq is triggered base on system clock
351  * 1: irq is triggered combinational
352  * Note: combinational interrupt is sensitive to environment noise
353  */
354 #define GPIO_AS_VALUE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
355 #define GPIO_AS_VALUE_IRQ_ASYNC_SHIFT (0U)
356 #define GPIO_AS_VALUE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_VALUE_IRQ_ASYNC_SHIFT) & GPIO_AS_VALUE_IRQ_ASYNC_MASK)
357 #define GPIO_AS_VALUE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_VALUE_IRQ_ASYNC_MASK) >> GPIO_AS_VALUE_IRQ_ASYNC_SHIFT)
358 
359 /* Bitfield definition for register of struct array AS: SET */
360 /*
361  * IRQ_ASYNC (RW)
362  *
363  * GPIO interrupt asynchronous, each bit represents a bus bit
364  * 0: irq is triggered base on system clock
365  * 1: irq is triggered combinational
366  * Note: combinational interrupt is sensitive to environment noise
367  */
368 #define GPIO_AS_SET_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
369 #define GPIO_AS_SET_IRQ_ASYNC_SHIFT (0U)
370 #define GPIO_AS_SET_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_SET_IRQ_ASYNC_SHIFT) & GPIO_AS_SET_IRQ_ASYNC_MASK)
371 #define GPIO_AS_SET_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_SET_IRQ_ASYNC_MASK) >> GPIO_AS_SET_IRQ_ASYNC_SHIFT)
372 
373 /* Bitfield definition for register of struct array AS: CLEAR */
374 /*
375  * IRQ_ASYNC (RW)
376  *
377  * GPIO interrupt asynchronous, each bit represents a bus bit
378  * 0: irq is triggered base on system clock
379  * 1: irq is triggered combinational
380  * Note: combinational interrupt is sensitive to environment noise
381  */
382 #define GPIO_AS_CLEAR_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
383 #define GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT (0U)
384 #define GPIO_AS_CLEAR_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK)
385 #define GPIO_AS_CLEAR_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK) >> GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT)
386 
387 /* Bitfield definition for register of struct array AS: TOGGLE */
388 /*
389  * IRQ_ASYNC (RW)
390  *
391  * GPIO interrupt asynchronous, each bit represents a bus bit
392  * 0: irq is triggered base on system clock
393  * 1: irq is triggered combinational
394  * Note: combinational interrupt is sensitive to environment noise
395  */
396 #define GPIO_AS_TOGGLE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
397 #define GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT (0U)
398 #define GPIO_AS_TOGGLE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK)
399 #define GPIO_AS_TOGGLE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK) >> GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT)
400 
401 
402 
403 /* DI register group index macro definition */
404 #define GPIO_DI_GPIOA (0UL)
405 #define GPIO_DI_GPIOB (1UL)
406 #define GPIO_DI_GPIOC (2UL)
407 #define GPIO_DI_GPIOD (3UL)
408 #define GPIO_DI_GPIOE (4UL)
409 #define GPIO_DI_GPIOF (5UL)
410 #define GPIO_DI_GPIOX (13UL)
411 #define GPIO_DI_GPIOY (14UL)
412 #define GPIO_DI_GPIOZ (15UL)
413 
414 /* DO register group index macro definition */
415 #define GPIO_DO_GPIOA (0UL)
416 #define GPIO_DO_GPIOB (1UL)
417 #define GPIO_DO_GPIOC (2UL)
418 #define GPIO_DO_GPIOD (3UL)
419 #define GPIO_DO_GPIOE (4UL)
420 #define GPIO_DO_GPIOF (5UL)
421 #define GPIO_DO_GPIOX (13UL)
422 #define GPIO_DO_GPIOY (14UL)
423 #define GPIO_DO_GPIOZ (15UL)
424 
425 /* OE register group index macro definition */
426 #define GPIO_OE_GPIOA (0UL)
427 #define GPIO_OE_GPIOB (1UL)
428 #define GPIO_OE_GPIOC (2UL)
429 #define GPIO_OE_GPIOD (3UL)
430 #define GPIO_OE_GPIOE (4UL)
431 #define GPIO_OE_GPIOF (5UL)
432 #define GPIO_OE_GPIOX (13UL)
433 #define GPIO_OE_GPIOY (14UL)
434 #define GPIO_OE_GPIOZ (15UL)
435 
436 /* IF register group index macro definition */
437 #define GPIO_IF_GPIOA (0UL)
438 #define GPIO_IF_GPIOB (1UL)
439 #define GPIO_IF_GPIOC (2UL)
440 #define GPIO_IF_GPIOD (3UL)
441 #define GPIO_IF_GPIOE (4UL)
442 #define GPIO_IF_GPIOF (5UL)
443 #define GPIO_IF_GPIOX (13UL)
444 #define GPIO_IF_GPIOY (14UL)
445 #define GPIO_IF_GPIOZ (15UL)
446 
447 /* IE register group index macro definition */
448 #define GPIO_IE_GPIOA (0UL)
449 #define GPIO_IE_GPIOB (1UL)
450 #define GPIO_IE_GPIOC (2UL)
451 #define GPIO_IE_GPIOD (3UL)
452 #define GPIO_IE_GPIOE (4UL)
453 #define GPIO_IE_GPIOF (5UL)
454 #define GPIO_IE_GPIOX (13UL)
455 #define GPIO_IE_GPIOY (14UL)
456 #define GPIO_IE_GPIOZ (15UL)
457 
458 /* PL register group index macro definition */
459 #define GPIO_PL_GPIOA (0UL)
460 #define GPIO_PL_GPIOB (1UL)
461 #define GPIO_PL_GPIOC (2UL)
462 #define GPIO_PL_GPIOD (3UL)
463 #define GPIO_PL_GPIOE (4UL)
464 #define GPIO_PL_GPIOF (5UL)
465 #define GPIO_PL_GPIOX (13UL)
466 #define GPIO_PL_GPIOY (14UL)
467 #define GPIO_PL_GPIOZ (15UL)
468 
469 /* TP register group index macro definition */
470 #define GPIO_TP_GPIOA (0UL)
471 #define GPIO_TP_GPIOB (1UL)
472 #define GPIO_TP_GPIOC (2UL)
473 #define GPIO_TP_GPIOD (3UL)
474 #define GPIO_TP_GPIOE (4UL)
475 #define GPIO_TP_GPIOF (5UL)
476 #define GPIO_TP_GPIOX (13UL)
477 #define GPIO_TP_GPIOY (14UL)
478 #define GPIO_TP_GPIOZ (15UL)
479 
480 /* AS register group index macro definition */
481 #define GPIO_AS_GPIOA (0UL)
482 #define GPIO_AS_GPIOB (1UL)
483 #define GPIO_AS_GPIOC (2UL)
484 #define GPIO_AS_GPIOD (3UL)
485 #define GPIO_AS_GPIOE (4UL)
486 #define GPIO_AS_GPIOF (5UL)
487 #define GPIO_AS_GPIOX (13UL)
488 #define GPIO_AS_GPIOY (14UL)
489 #define GPIO_AS_GPIOZ (15UL)
490 
491 
492 #endif /* HPM_GPIO_H */
493