HPM SDK
HPMicro Software Development Kit
hpm_gpio_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 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[15];
17  __R uint8_t RESERVED0[16]; /* 0xF0 - 0xFF: Reserved */
18  struct {
19  __RW uint32_t VALUE; /* 0x100: GPIO output value */
20  __RW uint32_t SET; /* 0x104: GPIO output set */
21  __RW uint32_t CLEAR; /* 0x108: GPIO output clear */
22  __RW uint32_t TOGGLE; /* 0x10C: GPIO output toggle */
23  } DO[15];
24  __R uint8_t RESERVED1[16]; /* 0x1F0 - 0x1FF: Reserved */
25  struct {
26  __RW uint32_t VALUE; /* 0x200: GPIO direction value */
27  __RW uint32_t SET; /* 0x204: GPIO direction set */
28  __RW uint32_t CLEAR; /* 0x208: GPIO direction clear */
29  __RW uint32_t TOGGLE; /* 0x20C: GPIO direction toggle */
30  } OE[15];
31  __R uint8_t RESERVED2[16]; /* 0x2F0 - 0x2FF: Reserved */
32  struct {
33  __W uint32_t VALUE; /* 0x300: GPIO interrupt flag value */
34  __R uint8_t RESERVED0[12]; /* 0x304 - 0x30F: Reserved */
35  } IF[15];
36  __R uint8_t RESERVED3[16]; /* 0x3F0 - 0x3FF: Reserved */
37  struct {
38  __RW uint32_t VALUE; /* 0x400: GPIO interrupt enable value */
39  __RW uint32_t SET; /* 0x404: GPIO interrupt enable set */
40  __RW uint32_t CLEAR; /* 0x408: GPIO interrupt enable clear */
41  __RW uint32_t TOGGLE; /* 0x40C: GPIO interrupt enable toggle */
42  } IE[15];
43  __R uint8_t RESERVED4[16]; /* 0x4F0 - 0x4FF: Reserved */
44  struct {
45  __RW uint32_t VALUE; /* 0x500: GPIO interrupt polarity value */
46  __RW uint32_t SET; /* 0x504: GPIO interrupt polarity set */
47  __RW uint32_t CLEAR; /* 0x508: GPIO interrupt polarity clear */
48  __RW uint32_t TOGGLE; /* 0x50C: GPIO interrupt polarity toggle */
49  } PL[15];
50  __R uint8_t RESERVED5[16]; /* 0x5F0 - 0x5FF: Reserved */
51  struct {
52  __RW uint32_t VALUE; /* 0x600: GPIO interrupt type value */
53  __RW uint32_t SET; /* 0x604: GPIO interrupt type set */
54  __RW uint32_t CLEAR; /* 0x608: GPIO interrupt type clear */
55  __RW uint32_t TOGGLE; /* 0x60C: GPIO interrupt type toggle */
56  } TP[15];
57  __R uint8_t RESERVED6[16]; /* 0x6F0 - 0x6FF: Reserved */
58  struct {
59  __RW uint32_t VALUE; /* 0x700: GPIO interrupt asynchronous value */
60  __RW uint32_t SET; /* 0x704: GPIO interrupt asynchronous set */
61  __RW uint32_t CLEAR; /* 0x708: GPIO interrupt asynchronous clear */
62  __RW uint32_t TOGGLE; /* 0x70C: GPIO interrupt asynchronous toggle */
63  } AS[15];
64  __R uint8_t RESERVED7[16]; /* 0x7F0 - 0x7FF: Reserved */
65  struct {
66  __RW uint32_t VALUE; /* 0x800: GPIO dual edge interrupt enable value */
67  __RW uint32_t SET; /* 0x804: GPIO dual edge interrupt enable set */
68  __RW uint32_t CLEAR; /* 0x808: GPIO dual edge interrupt enable clear */
69  __RW uint32_t TOGGLE; /* 0x80C: GPIO dual edge interrupt enable toggle */
70  } PD[15];
71 } GPIO_Type;
72 
73 
74 /* Bitfield definition for register of struct array DI: VALUE */
75 /*
76  * INPUT (RO)
77  *
78  * GPIO input bus value, each bit represents a bus bit
79  * 0: low level presents on chip pin
80  * 1: high level presents on chip pin
81  */
82 #define GPIO_DI_VALUE_INPUT_MASK (0xFFFFFFFFUL)
83 #define GPIO_DI_VALUE_INPUT_SHIFT (0U)
84 #define GPIO_DI_VALUE_INPUT_GET(x) (((uint32_t)(x) & GPIO_DI_VALUE_INPUT_MASK) >> GPIO_DI_VALUE_INPUT_SHIFT)
85 
86 /* Bitfield definition for register of struct array DO: VALUE */
87 /*
88  * OUTPUT (RW)
89  *
90  * GPIO output register value, each bit represents a bus bit
91  * 0: chip pin output low level when direction is output
92  * 1: chip pin output high level when direction is output
93  */
94 #define GPIO_DO_VALUE_OUTPUT_MASK (0xFFFFFFFFUL)
95 #define GPIO_DO_VALUE_OUTPUT_SHIFT (0U)
96 #define GPIO_DO_VALUE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_VALUE_OUTPUT_SHIFT) & GPIO_DO_VALUE_OUTPUT_MASK)
97 #define GPIO_DO_VALUE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_VALUE_OUTPUT_MASK) >> GPIO_DO_VALUE_OUTPUT_SHIFT)
98 
99 /* Bitfield definition for register of struct array DO: SET */
100 /*
101  * OUTPUT (RW)
102  *
103  * GPIO output register value, each bit represents a bus bit
104  * 0: chip pin output low level when direction is output
105  * 1: chip pin output high level when direction is output
106  */
107 #define GPIO_DO_SET_OUTPUT_MASK (0xFFFFFFFFUL)
108 #define GPIO_DO_SET_OUTPUT_SHIFT (0U)
109 #define GPIO_DO_SET_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_SET_OUTPUT_SHIFT) & GPIO_DO_SET_OUTPUT_MASK)
110 #define GPIO_DO_SET_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_SET_OUTPUT_MASK) >> GPIO_DO_SET_OUTPUT_SHIFT)
111 
112 /* Bitfield definition for register of struct array DO: CLEAR */
113 /*
114  * OUTPUT (RW)
115  *
116  * GPIO output register value, each bit represents a bus bit
117  * 0: chip pin output low level when direction is output
118  * 1: chip pin output high level when direction is output
119  */
120 #define GPIO_DO_CLEAR_OUTPUT_MASK (0xFFFFFFFFUL)
121 #define GPIO_DO_CLEAR_OUTPUT_SHIFT (0U)
122 #define GPIO_DO_CLEAR_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_CLEAR_OUTPUT_SHIFT) & GPIO_DO_CLEAR_OUTPUT_MASK)
123 #define GPIO_DO_CLEAR_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_CLEAR_OUTPUT_MASK) >> GPIO_DO_CLEAR_OUTPUT_SHIFT)
124 
125 /* Bitfield definition for register of struct array DO: TOGGLE */
126 /*
127  * OUTPUT (RW)
128  *
129  * GPIO output register value, each bit represents a bus bit
130  * 0: chip pin output low level when direction is output
131  * 1: chip pin output high level when direction is output
132  */
133 #define GPIO_DO_TOGGLE_OUTPUT_MASK (0xFFFFFFFFUL)
134 #define GPIO_DO_TOGGLE_OUTPUT_SHIFT (0U)
135 #define GPIO_DO_TOGGLE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_TOGGLE_OUTPUT_SHIFT) & GPIO_DO_TOGGLE_OUTPUT_MASK)
136 #define GPIO_DO_TOGGLE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_TOGGLE_OUTPUT_MASK) >> GPIO_DO_TOGGLE_OUTPUT_SHIFT)
137 
138 /* Bitfield definition for register of struct array OE: VALUE */
139 /*
140  * DIRECTION (RW)
141  *
142  * GPIO direction, each bit represents a bus bit
143  * 0: input
144  * 1: output
145  */
146 #define GPIO_OE_VALUE_DIRECTION_MASK (0xFFFFFFFFUL)
147 #define GPIO_OE_VALUE_DIRECTION_SHIFT (0U)
148 #define GPIO_OE_VALUE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_VALUE_DIRECTION_SHIFT) & GPIO_OE_VALUE_DIRECTION_MASK)
149 #define GPIO_OE_VALUE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_VALUE_DIRECTION_MASK) >> GPIO_OE_VALUE_DIRECTION_SHIFT)
150 
151 /* Bitfield definition for register of struct array OE: SET */
152 /*
153  * DIRECTION (RW)
154  *
155  * GPIO direction, each bit represents a bus bit
156  * 0: input
157  * 1: output
158  */
159 #define GPIO_OE_SET_DIRECTION_MASK (0xFFFFFFFFUL)
160 #define GPIO_OE_SET_DIRECTION_SHIFT (0U)
161 #define GPIO_OE_SET_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_SET_DIRECTION_SHIFT) & GPIO_OE_SET_DIRECTION_MASK)
162 #define GPIO_OE_SET_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_SET_DIRECTION_MASK) >> GPIO_OE_SET_DIRECTION_SHIFT)
163 
164 /* Bitfield definition for register of struct array OE: CLEAR */
165 /*
166  * DIRECTION (RW)
167  *
168  * GPIO direction, each bit represents a bus bit
169  * 0: input
170  * 1: output
171  */
172 #define GPIO_OE_CLEAR_DIRECTION_MASK (0xFFFFFFFFUL)
173 #define GPIO_OE_CLEAR_DIRECTION_SHIFT (0U)
174 #define GPIO_OE_CLEAR_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_CLEAR_DIRECTION_SHIFT) & GPIO_OE_CLEAR_DIRECTION_MASK)
175 #define GPIO_OE_CLEAR_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_CLEAR_DIRECTION_MASK) >> GPIO_OE_CLEAR_DIRECTION_SHIFT)
176 
177 /* Bitfield definition for register of struct array OE: TOGGLE */
178 /*
179  * DIRECTION (RW)
180  *
181  * GPIO direction, each bit represents a bus bit
182  * 0: input
183  * 1: output
184  */
185 #define GPIO_OE_TOGGLE_DIRECTION_MASK (0xFFFFFFFFUL)
186 #define GPIO_OE_TOGGLE_DIRECTION_SHIFT (0U)
187 #define GPIO_OE_TOGGLE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_TOGGLE_DIRECTION_SHIFT) & GPIO_OE_TOGGLE_DIRECTION_MASK)
188 #define GPIO_OE_TOGGLE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_TOGGLE_DIRECTION_MASK) >> GPIO_OE_TOGGLE_DIRECTION_SHIFT)
189 
190 /* Bitfield definition for register of struct array IF: VALUE */
191 /*
192  * IRQ_FLAG (W1C)
193  *
194  * GPIO interrupt flag, write 1 to clear this flag
195  * 0: no irq
196  * 1: irq pending
197  */
198 #define GPIO_IF_VALUE_IRQ_FLAG_MASK (0xFFFFFFFFUL)
199 #define GPIO_IF_VALUE_IRQ_FLAG_SHIFT (0U)
200 #define GPIO_IF_VALUE_IRQ_FLAG_SET(x) (((uint32_t)(x) << GPIO_IF_VALUE_IRQ_FLAG_SHIFT) & GPIO_IF_VALUE_IRQ_FLAG_MASK)
201 #define GPIO_IF_VALUE_IRQ_FLAG_GET(x) (((uint32_t)(x) & GPIO_IF_VALUE_IRQ_FLAG_MASK) >> GPIO_IF_VALUE_IRQ_FLAG_SHIFT)
202 
203 /* Bitfield definition for register of struct array IE: VALUE */
204 /*
205  * IRQ_EN (RW)
206  *
207  * GPIO interrupt enable, each bit represents a bus bit
208  * 0: irq is disabled
209  * 1: irq is enable
210  */
211 #define GPIO_IE_VALUE_IRQ_EN_MASK (0xFFFFFFFFUL)
212 #define GPIO_IE_VALUE_IRQ_EN_SHIFT (0U)
213 #define GPIO_IE_VALUE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_VALUE_IRQ_EN_SHIFT) & GPIO_IE_VALUE_IRQ_EN_MASK)
214 #define GPIO_IE_VALUE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_VALUE_IRQ_EN_MASK) >> GPIO_IE_VALUE_IRQ_EN_SHIFT)
215 
216 /* Bitfield definition for register of struct array IE: SET */
217 /*
218  * IRQ_EN (RW)
219  *
220  * GPIO interrupt enable, each bit represents a bus bit
221  * 0: irq is disabled
222  * 1: irq is enable
223  */
224 #define GPIO_IE_SET_IRQ_EN_MASK (0xFFFFFFFFUL)
225 #define GPIO_IE_SET_IRQ_EN_SHIFT (0U)
226 #define GPIO_IE_SET_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_SET_IRQ_EN_SHIFT) & GPIO_IE_SET_IRQ_EN_MASK)
227 #define GPIO_IE_SET_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_SET_IRQ_EN_MASK) >> GPIO_IE_SET_IRQ_EN_SHIFT)
228 
229 /* Bitfield definition for register of struct array IE: CLEAR */
230 /*
231  * IRQ_EN (RW)
232  *
233  * GPIO interrupt enable, each bit represents a bus bit
234  * 0: irq is disabled
235  * 1: irq is enable
236  */
237 #define GPIO_IE_CLEAR_IRQ_EN_MASK (0xFFFFFFFFUL)
238 #define GPIO_IE_CLEAR_IRQ_EN_SHIFT (0U)
239 #define GPIO_IE_CLEAR_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_CLEAR_IRQ_EN_SHIFT) & GPIO_IE_CLEAR_IRQ_EN_MASK)
240 #define GPIO_IE_CLEAR_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_CLEAR_IRQ_EN_MASK) >> GPIO_IE_CLEAR_IRQ_EN_SHIFT)
241 
242 /* Bitfield definition for register of struct array IE: TOGGLE */
243 /*
244  * IRQ_EN (RW)
245  *
246  * GPIO interrupt enable, each bit represents a bus bit
247  * 0: irq is disabled
248  * 1: irq is enable
249  */
250 #define GPIO_IE_TOGGLE_IRQ_EN_MASK (0xFFFFFFFFUL)
251 #define GPIO_IE_TOGGLE_IRQ_EN_SHIFT (0U)
252 #define GPIO_IE_TOGGLE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_TOGGLE_IRQ_EN_SHIFT) & GPIO_IE_TOGGLE_IRQ_EN_MASK)
253 #define GPIO_IE_TOGGLE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_TOGGLE_IRQ_EN_MASK) >> GPIO_IE_TOGGLE_IRQ_EN_SHIFT)
254 
255 /* Bitfield definition for register of struct array PL: VALUE */
256 /*
257  * IRQ_POL (RW)
258  *
259  * GPIO interrupt polarity, each bit represents a bus bit
260  * 0: irq is high level or rising edge
261  * 1: irq is low level or falling edge
262  */
263 #define GPIO_PL_VALUE_IRQ_POL_MASK (0xFFFFFFFFUL)
264 #define GPIO_PL_VALUE_IRQ_POL_SHIFT (0U)
265 #define GPIO_PL_VALUE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_VALUE_IRQ_POL_SHIFT) & GPIO_PL_VALUE_IRQ_POL_MASK)
266 #define GPIO_PL_VALUE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_VALUE_IRQ_POL_MASK) >> GPIO_PL_VALUE_IRQ_POL_SHIFT)
267 
268 /* Bitfield definition for register of struct array PL: SET */
269 /*
270  * IRQ_POL (RW)
271  *
272  * GPIO interrupt polarity, each bit represents a bus bit
273  * 0: irq is high level or rising edge
274  * 1: irq is low level or falling edge
275  */
276 #define GPIO_PL_SET_IRQ_POL_MASK (0xFFFFFFFFUL)
277 #define GPIO_PL_SET_IRQ_POL_SHIFT (0U)
278 #define GPIO_PL_SET_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_SET_IRQ_POL_SHIFT) & GPIO_PL_SET_IRQ_POL_MASK)
279 #define GPIO_PL_SET_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_SET_IRQ_POL_MASK) >> GPIO_PL_SET_IRQ_POL_SHIFT)
280 
281 /* Bitfield definition for register of struct array PL: CLEAR */
282 /*
283  * IRQ_POL (RW)
284  *
285  * GPIO interrupt polarity, each bit represents a bus bit
286  * 0: irq is high level or rising edge
287  * 1: irq is low level or falling edge
288  */
289 #define GPIO_PL_CLEAR_IRQ_POL_MASK (0xFFFFFFFFUL)
290 #define GPIO_PL_CLEAR_IRQ_POL_SHIFT (0U)
291 #define GPIO_PL_CLEAR_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_CLEAR_IRQ_POL_SHIFT) & GPIO_PL_CLEAR_IRQ_POL_MASK)
292 #define GPIO_PL_CLEAR_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_CLEAR_IRQ_POL_MASK) >> GPIO_PL_CLEAR_IRQ_POL_SHIFT)
293 
294 /* Bitfield definition for register of struct array PL: TOGGLE */
295 /*
296  * IRQ_POL (RW)
297  *
298  * GPIO interrupt polarity, each bit represents a bus bit
299  * 0: irq is high level or rising edge
300  * 1: irq is low level or falling edge
301  */
302 #define GPIO_PL_TOGGLE_IRQ_POL_MASK (0xFFFFFFFFUL)
303 #define GPIO_PL_TOGGLE_IRQ_POL_SHIFT (0U)
304 #define GPIO_PL_TOGGLE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_TOGGLE_IRQ_POL_SHIFT) & GPIO_PL_TOGGLE_IRQ_POL_MASK)
305 #define GPIO_PL_TOGGLE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_TOGGLE_IRQ_POL_MASK) >> GPIO_PL_TOGGLE_IRQ_POL_SHIFT)
306 
307 /* Bitfield definition for register of struct array TP: VALUE */
308 /*
309  * IRQ_TYPE (RW)
310  *
311  * GPIO interrupt type, each bit represents a bus bit
312  * 0: irq is triggered by level
313  * 1: irq is triggered by edge
314  */
315 #define GPIO_TP_VALUE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
316 #define GPIO_TP_VALUE_IRQ_TYPE_SHIFT (0U)
317 #define GPIO_TP_VALUE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_VALUE_IRQ_TYPE_SHIFT) & GPIO_TP_VALUE_IRQ_TYPE_MASK)
318 #define GPIO_TP_VALUE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_VALUE_IRQ_TYPE_MASK) >> GPIO_TP_VALUE_IRQ_TYPE_SHIFT)
319 
320 /* Bitfield definition for register of struct array TP: SET */
321 /*
322  * IRQ_TYPE (RW)
323  *
324  * GPIO interrupt type, each bit represents a bus bit
325  * 0: irq is triggered by level
326  * 1: irq is triggered by edge
327  */
328 #define GPIO_TP_SET_IRQ_TYPE_MASK (0xFFFFFFFFUL)
329 #define GPIO_TP_SET_IRQ_TYPE_SHIFT (0U)
330 #define GPIO_TP_SET_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_SET_IRQ_TYPE_SHIFT) & GPIO_TP_SET_IRQ_TYPE_MASK)
331 #define GPIO_TP_SET_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_SET_IRQ_TYPE_MASK) >> GPIO_TP_SET_IRQ_TYPE_SHIFT)
332 
333 /* Bitfield definition for register of struct array TP: CLEAR */
334 /*
335  * IRQ_TYPE (RW)
336  *
337  * GPIO interrupt type, each bit represents a bus bit
338  * 0: irq is triggered by level
339  * 1: irq is triggered by edge
340  */
341 #define GPIO_TP_CLEAR_IRQ_TYPE_MASK (0xFFFFFFFFUL)
342 #define GPIO_TP_CLEAR_IRQ_TYPE_SHIFT (0U)
343 #define GPIO_TP_CLEAR_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_CLEAR_IRQ_TYPE_SHIFT) & GPIO_TP_CLEAR_IRQ_TYPE_MASK)
344 #define GPIO_TP_CLEAR_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_CLEAR_IRQ_TYPE_MASK) >> GPIO_TP_CLEAR_IRQ_TYPE_SHIFT)
345 
346 /* Bitfield definition for register of struct array TP: TOGGLE */
347 /*
348  * IRQ_TYPE (RW)
349  *
350  * GPIO interrupt type, each bit represents a bus bit
351  * 0: irq is triggered by level
352  * 1: irq is triggered by edge
353  */
354 #define GPIO_TP_TOGGLE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
355 #define GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT (0U)
356 #define GPIO_TP_TOGGLE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK)
357 #define GPIO_TP_TOGGLE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK) >> GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT)
358 
359 /* Bitfield definition for register of struct array AS: VALUE */
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_VALUE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
369 #define GPIO_AS_VALUE_IRQ_ASYNC_SHIFT (0U)
370 #define GPIO_AS_VALUE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_VALUE_IRQ_ASYNC_SHIFT) & GPIO_AS_VALUE_IRQ_ASYNC_MASK)
371 #define GPIO_AS_VALUE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_VALUE_IRQ_ASYNC_MASK) >> GPIO_AS_VALUE_IRQ_ASYNC_SHIFT)
372 
373 /* Bitfield definition for register of struct array AS: SET */
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_SET_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
383 #define GPIO_AS_SET_IRQ_ASYNC_SHIFT (0U)
384 #define GPIO_AS_SET_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_SET_IRQ_ASYNC_SHIFT) & GPIO_AS_SET_IRQ_ASYNC_MASK)
385 #define GPIO_AS_SET_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_SET_IRQ_ASYNC_MASK) >> GPIO_AS_SET_IRQ_ASYNC_SHIFT)
386 
387 /* Bitfield definition for register of struct array AS: CLEAR */
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_CLEAR_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
397 #define GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT (0U)
398 #define GPIO_AS_CLEAR_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK)
399 #define GPIO_AS_CLEAR_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK) >> GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT)
400 
401 /* Bitfield definition for register of struct array AS: TOGGLE */
402 /*
403  * IRQ_ASYNC (RW)
404  *
405  * GPIO interrupt asynchronous, each bit represents a bus bit
406  * 0: irq is triggered base on system clock
407  * 1: irq is triggered combinational
408  * Note: combinational interrupt is sensitive to environment noise
409  */
410 #define GPIO_AS_TOGGLE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
411 #define GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT (0U)
412 #define GPIO_AS_TOGGLE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK)
413 #define GPIO_AS_TOGGLE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK) >> GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT)
414 
415 /* Bitfield definition for register of struct array PD: VALUE */
416 /*
417  * IRQ_DUAL (RW)
418  *
419  * GPIO dual edge interrupt enable
420  * 0: single edge interrupt
421  * 1: dual edge interrupt enable
422  */
423 #define GPIO_PD_VALUE_IRQ_DUAL_MASK (0x1U)
424 #define GPIO_PD_VALUE_IRQ_DUAL_SHIFT (0U)
425 #define GPIO_PD_VALUE_IRQ_DUAL_SET(x) (((uint32_t)(x) << GPIO_PD_VALUE_IRQ_DUAL_SHIFT) & GPIO_PD_VALUE_IRQ_DUAL_MASK)
426 #define GPIO_PD_VALUE_IRQ_DUAL_GET(x) (((uint32_t)(x) & GPIO_PD_VALUE_IRQ_DUAL_MASK) >> GPIO_PD_VALUE_IRQ_DUAL_SHIFT)
427 
428 /* Bitfield definition for register of struct array PD: SET */
429 /*
430  * IRQ_DUAL (RW)
431  *
432  * GPIO dual edge interrupt enable set
433  * 0: keep original edge interrupt type
434  * 1: dual edge interrupt enable
435  */
436 #define GPIO_PD_SET_IRQ_DUAL_MASK (0x1U)
437 #define GPIO_PD_SET_IRQ_DUAL_SHIFT (0U)
438 #define GPIO_PD_SET_IRQ_DUAL_SET(x) (((uint32_t)(x) << GPIO_PD_SET_IRQ_DUAL_SHIFT) & GPIO_PD_SET_IRQ_DUAL_MASK)
439 #define GPIO_PD_SET_IRQ_DUAL_GET(x) (((uint32_t)(x) & GPIO_PD_SET_IRQ_DUAL_MASK) >> GPIO_PD_SET_IRQ_DUAL_SHIFT)
440 
441 /* Bitfield definition for register of struct array PD: CLEAR */
442 /*
443  * IRQ_DUAL (RW)
444  *
445  * GPIO dual edge interrupt enable clear
446  * 0: keep original edge interrupt type
447  * 1: single edge interrupt enable
448  */
449 #define GPIO_PD_CLEAR_IRQ_DUAL_MASK (0x1U)
450 #define GPIO_PD_CLEAR_IRQ_DUAL_SHIFT (0U)
451 #define GPIO_PD_CLEAR_IRQ_DUAL_SET(x) (((uint32_t)(x) << GPIO_PD_CLEAR_IRQ_DUAL_SHIFT) & GPIO_PD_CLEAR_IRQ_DUAL_MASK)
452 #define GPIO_PD_CLEAR_IRQ_DUAL_GET(x) (((uint32_t)(x) & GPIO_PD_CLEAR_IRQ_DUAL_MASK) >> GPIO_PD_CLEAR_IRQ_DUAL_SHIFT)
453 
454 /* Bitfield definition for register of struct array PD: TOGGLE */
455 /*
456  * IRQ_DUAL (RW)
457  *
458  * GPIO dual edge interrupt enable toggle
459  * 0: keep original edge interrupt type
460  * 1: change original edge interrupt type to another one.
461  */
462 #define GPIO_PD_TOGGLE_IRQ_DUAL_MASK (0x1U)
463 #define GPIO_PD_TOGGLE_IRQ_DUAL_SHIFT (0U)
464 #define GPIO_PD_TOGGLE_IRQ_DUAL_SET(x) (((uint32_t)(x) << GPIO_PD_TOGGLE_IRQ_DUAL_SHIFT) & GPIO_PD_TOGGLE_IRQ_DUAL_MASK)
465 #define GPIO_PD_TOGGLE_IRQ_DUAL_GET(x) (((uint32_t)(x) & GPIO_PD_TOGGLE_IRQ_DUAL_MASK) >> GPIO_PD_TOGGLE_IRQ_DUAL_SHIFT)
466 
467 
468 
469 /* DI register group index macro definition */
470 #define GPIO_DI_GPIOA (0UL)
471 #define GPIO_DI_GPIOB (1UL)
472 #define GPIO_DI_GPIOC (2UL)
473 #define GPIO_DI_GPIOD (3UL)
474 #define GPIO_DI_GPIOX (13UL)
475 #define GPIO_DI_GPIOY (14UL)
476 
477 /* DO register group index macro definition */
478 #define GPIO_DO_GPIOA (0UL)
479 #define GPIO_DO_GPIOB (1UL)
480 #define GPIO_DO_GPIOC (2UL)
481 #define GPIO_DO_GPIOD (3UL)
482 #define GPIO_DO_GPIOX (13UL)
483 #define GPIO_DO_GPIOY (14UL)
484 
485 /* OE register group index macro definition */
486 #define GPIO_OE_GPIOA (0UL)
487 #define GPIO_OE_GPIOB (1UL)
488 #define GPIO_OE_GPIOC (2UL)
489 #define GPIO_OE_GPIOD (3UL)
490 #define GPIO_OE_GPIOX (13UL)
491 #define GPIO_OE_GPIOY (14UL)
492 
493 /* IF register group index macro definition */
494 #define GPIO_IF_GPIOA (0UL)
495 #define GPIO_IF_GPIOB (1UL)
496 #define GPIO_IF_GPIOC (2UL)
497 #define GPIO_IF_GPIOD (3UL)
498 #define GPIO_IF_GPIOX (13UL)
499 #define GPIO_IF_GPIOY (14UL)
500 
501 /* IE register group index macro definition */
502 #define GPIO_IE_GPIOA (0UL)
503 #define GPIO_IE_GPIOB (1UL)
504 #define GPIO_IE_GPIOC (2UL)
505 #define GPIO_IE_GPIOD (3UL)
506 #define GPIO_IE_GPIOX (13UL)
507 #define GPIO_IE_GPIOY (14UL)
508 
509 /* PL register group index macro definition */
510 #define GPIO_PL_GPIOA (0UL)
511 #define GPIO_PL_GPIOB (1UL)
512 #define GPIO_PL_GPIOC (2UL)
513 #define GPIO_PL_GPIOD (3UL)
514 #define GPIO_PL_GPIOX (13UL)
515 #define GPIO_PL_GPIOY (14UL)
516 
517 /* TP register group index macro definition */
518 #define GPIO_TP_GPIOA (0UL)
519 #define GPIO_TP_GPIOB (1UL)
520 #define GPIO_TP_GPIOC (2UL)
521 #define GPIO_TP_GPIOD (3UL)
522 #define GPIO_TP_GPIOX (13UL)
523 #define GPIO_TP_GPIOY (14UL)
524 
525 /* AS register group index macro definition */
526 #define GPIO_AS_GPIOA (0UL)
527 #define GPIO_AS_GPIOB (1UL)
528 #define GPIO_AS_GPIOC (2UL)
529 #define GPIO_AS_GPIOD (3UL)
530 #define GPIO_AS_GPIOX (13UL)
531 #define GPIO_AS_GPIOY (14UL)
532 
533 /* PD register group index macro definition */
534 #define GPIO_PD_GPIOA (0UL)
535 #define GPIO_PD_GPIOB (1UL)
536 #define GPIO_PD_GPIOC (2UL)
537 #define GPIO_PD_GPIOD (3UL)
538 #define GPIO_PD_GPIOX (13UL)
539 #define GPIO_PD_GPIOY (14UL)
540 
541 
542 #endif /* HPM_GPIO_H */
Definition: hpm_gpio_regs.h:12