55#define GPIO_A_BASE 0x400D9000
56#define GPIO_B_BASE 0x400DA000
57#define GPIO_C_BASE 0x400DB000
58#define GPIO_D_BASE 0x400DC000
78#define GPIO_SET_INPUT(PORT_BASE, PIN_MASK) \
79 do { REG((PORT_BASE) + GPIO_DIR) &= ~(PIN_MASK); } while(0)
85#define GPIO_SET_OUTPUT(PORT_BASE, PIN_MASK) \
86 do { REG((PORT_BASE) + GPIO_DIR) |= (PIN_MASK); } while(0)
99#define GPIO_IS_OUTPUT(PORT_BASE, PIN_MASK) \
100 (REG((PORT_BASE) + GPIO_DIR) & (PIN_MASK))
106#define GPIO_SET_PIN(PORT_BASE, PIN_MASK) \
107 do { REG((PORT_BASE) + GPIO_DATA + ((PIN_MASK) << 2)) = 0xFF; } while(0)
113#define GPIO_CLR_PIN(PORT_BASE, PIN_MASK) \
114 do { REG((PORT_BASE) + GPIO_DATA + ((PIN_MASK) << 2)) = 0x00; } while(0)
134#define GPIO_WRITE_PIN(PORT_BASE, PIN_MASK, value) \
135 do { REG((PORT_BASE) + GPIO_DATA + ((PIN_MASK) << 2)) = (value); } while(0)
147#define GPIO_READ_PIN(PORT_BASE, PIN_MASK) \
148 REG((PORT_BASE) + GPIO_DATA + ((PIN_MASK) << 2))
154#define GPIO_DETECT_EDGE(PORT_BASE, PIN_MASK) \
155 do { REG((PORT_BASE) + GPIO_IS) &= ~(PIN_MASK); } while(0)
161#define GPIO_DETECT_LEVEL(PORT_BASE, PIN_MASK) \
162 do { REG((PORT_BASE) + GPIO_IS) |= (PIN_MASK); } while(0)
169#define GPIO_TRIGGER_BOTH_EDGES(PORT_BASE, PIN_MASK) \
170 do { REG((PORT_BASE) + GPIO_IBE) |= (PIN_MASK); } while(0)
177#define GPIO_TRIGGER_SINGLE_EDGE(PORT_BASE, PIN_MASK) \
178 do { REG((PORT_BASE) + GPIO_IBE) &= ~(PIN_MASK); } while(0)
185#define GPIO_DETECT_RISING(PORT_BASE, PIN_MASK) \
186 do { REG((PORT_BASE) + GPIO_IEV) |= (PIN_MASK); } while(0)
193#define GPIO_DETECT_FALLING(PORT_BASE, PIN_MASK) \
194 do { REG((PORT_BASE) + GPIO_IEV) &= ~(PIN_MASK); } while(0)
201#define GPIO_ENABLE_INTERRUPT(PORT_BASE, PIN_MASK) \
202 do { REG((PORT_BASE) + GPIO_IE) |= (PIN_MASK); } while(0)
209#define GPIO_DISABLE_INTERRUPT(PORT_BASE, PIN_MASK) \
210 do { REG((PORT_BASE) + GPIO_IE) &= ~(PIN_MASK); } while(0)
222#define GPIO_GET_RAW_INT_STATUS(PORT_BASE) \
223 REG((PORT_BASE) + GPIO_RIS)
234#define GPIO_GET_MASKED_INT_STATUS(PORT_BASE) \
235 REG((PORT_BASE) + GPIO_MIS)
242#define GPIO_CLEAR_INTERRUPT(PORT_BASE, PIN_MASK) \
243 do { REG((PORT_BASE) + GPIO_IC) = (PIN_MASK); } while(0)
250#define GPIO_PERIPHERAL_CONTROL(PORT_BASE, PIN_MASK) \
251 do { REG((PORT_BASE) + GPIO_AFSEL) |= (PIN_MASK); } while(0)
258#define GPIO_SOFTWARE_CONTROL(PORT_BASE, PIN_MASK) \
259 do { REG((PORT_BASE) + GPIO_AFSEL) &= ~(PIN_MASK); } while(0)
266#define GPIO_POWER_UP_ON_RISING(PORT, PIN_MASK) \
267 do { REG(GPIO_PORT_TO_BASE(PORT) + GPIO_P_EDGE_CTRL) &= \
268 ~((PIN_MASK) << ((PORT) << 3)); } while(0)
275#define GPIO_POWER_UP_ON_FALLING(PORT, PIN_MASK) \
276 do { REG(GPIO_PORT_TO_BASE(PORT) + GPIO_P_EDGE_CTRL) |= \
277 (PIN_MASK) << ((PORT) << 3); } while(0)
284#define GPIO_ENABLE_POWER_UP_INTERRUPT(PORT, PIN_MASK) \
285 do { REG(GPIO_PORT_TO_BASE(PORT) + GPIO_PI_IEN) |= \
286 (PIN_MASK) << ((PORT) << 3); } while(0)
293#define GPIO_DISABLE_POWER_UP_INTERRUPT(PORT, PIN_MASK) \
294 do { REG(GPIO_PORT_TO_BASE(PORT) + GPIO_PI_IEN) &= \
295 ~((PIN_MASK) << ((PORT) << 3)); } while(0)
302#define GPIO_GET_POWER_UP_INT_STATUS(PORT) \
303 ((REG(GPIO_PORT_TO_BASE(PORT) + GPIO_IRQ_DETECT_ACK) >> ((PORT) << 3)) & 0xFF)
310#define GPIO_CLEAR_POWER_UP_INTERRUPT(PORT, PIN_MASK) \
311 do { REG(GPIO_PORT_TO_BASE(PORT) + GPIO_IRQ_DETECT_ACK) = \
312 (PIN_MASK) << ((PORT) << 3); } while(0)
320#define GPIO_PIN_MASK(PIN) (1 << (PIN))
328#define GPIO_PORT_TO_BASE(PORT) (GPIO_A_BASE + ((PORT) << 12))
336#define GPIO_PORT_PIN_TO_GPIO_HAL_PIN(PORT, PIN) (((PORT) << 3) + (PIN))
342#define GPIO_DATA 0x00000000
343#define GPIO_DIR 0x00000400
344#define GPIO_IS 0x00000404
345#define GPIO_IBE 0x00000408
346#define GPIO_IEV 0x0000040C
347#define GPIO_IE 0x00000410
348#define GPIO_RIS 0x00000414
349#define GPIO_MIS 0x00000418
350#define GPIO_IC 0x0000041C
351#define GPIO_AFSEL 0x00000420
352#define GPIO_GPIOLOCK 0x00000520
353#define GPIO_GPIOCR 0x00000524
354#define GPIO_PMUX 0x00000700
355#define GPIO_P_EDGE_CTRL 0x00000704
356#define GPIO_USB_CTRL 0x00000708
357#define GPIO_PI_IEN 0x00000710
358#define GPIO_IRQ_DETECT_ACK 0x00000718
359#define GPIO_USB_IRQ_ACK 0x0000071C
360#define GPIO_IRQ_DETECT_UNMASK 0x00000720
366#define GPIO_DATA_DATA 0x000000FF
372#define GPIO_DIR_DIR 0x000000FF
378#define GPIO_IS_IS 0x000000FF
384#define GPIO_IBE_IBE 0x000000FF
390#define GPIO_IEV_IEV 0x000000FF
396#define GPIO_IE_IE 0x000000FF
402#define GPIO_RIS_RIS 0x000000FF
408#define GPIO_MIS_MIS 0x000000FF
414#define GPIO_IC_IC 0x000000FF
420#define GPIO_AFSEL_AFSEL 0x000000FF
426#define GPIO_GPIOLOCK_LOCK 0xFFFFFFFF
432#define GPIO_GPIOCR_CR 0x000000FF
438#define GPIO_PMUX_CKOEN 0x00000080
439#define GPIO_PMUX_CKOPIN 0x00000010
440#define GPIO_PMUX_DCEN 0x00000008
441#define GPIO_PMUX_DCPIN 0x00000001
448#define GPIO_P_EDGE_CTRL_PDIRC7 0x80000000
449#define GPIO_P_EDGE_CTRL_PDIRC6 0x40000000
450#define GPIO_P_EDGE_CTRL_PDIRC5 0x20000000
451#define GPIO_P_EDGE_CTRL_PDIRC4 0x10000000
452#define GPIO_P_EDGE_CTRL_PDIRC3 0x08000000
453#define GPIO_P_EDGE_CTRL_PDIRC2 0x04000000
454#define GPIO_P_EDGE_CTRL_PDIRC1 0x02000000
455#define GPIO_P_EDGE_CTRL_PDIRC0 0x01000000
456#define GPIO_P_EDGE_CTRL_PCIRC7 0x00800000
457#define GPIO_P_EDGE_CTRL_PCIRC6 0x00400000
458#define GPIO_P_EDGE_CTRL_PCIRC5 0x00200000
459#define GPIO_P_EDGE_CTRL_PCIRC4 0x00100000
460#define GPIO_P_EDGE_CTRL_PCIRC3 0x00080000
461#define GPIO_P_EDGE_CTRL_PCIRC2 0x00040000
462#define GPIO_P_EDGE_CTRL_PCIRC1 0x00020000
463#define GPIO_P_EDGE_CTRL_PCIRC0 0x00010000
464#define GPIO_P_EDGE_CTRL_PBIRC7 0x00008000
465#define GPIO_P_EDGE_CTRL_PBIRC6 0x00004000
466#define GPIO_P_EDGE_CTRL_PBIRC5 0x00002000
467#define GPIO_P_EDGE_CTRL_PBIRC4 0x00001000
468#define GPIO_P_EDGE_CTRL_PBIRC3 0x00000800
469#define GPIO_P_EDGE_CTRL_PBIRC2 0x00000400
470#define GPIO_P_EDGE_CTRL_PBIRC1 0x00000200
471#define GPIO_P_EDGE_CTRL_PBIRC0 0x00000100
472#define GPIO_P_EDGE_CTRL_PAIRC7 0x00000080
473#define GPIO_P_EDGE_CTRL_PAIRC6 0x00000040
474#define GPIO_P_EDGE_CTRL_PAIRC5 0x00000020
475#define GPIO_P_EDGE_CTRL_PAIRC4 0x00000010
476#define GPIO_P_EDGE_CTRL_PAIRC3 0x00000008
477#define GPIO_P_EDGE_CTRL_PAIRC2 0x00000004
478#define GPIO_P_EDGE_CTRL_PAIRC1 0x00000002
479#define GPIO_P_EDGE_CTRL_PAIRC0 0x00000001
485#define GPIO_USB_CTRL_USB_EDGE_CTL 0x00000001
492#define GPIO_PI_IEN_PDIEN7 0x80000000
493#define GPIO_PI_IEN_PDIEN6 0x40000000
494#define GPIO_PI_IEN_PDIEN5 0x20000000
495#define GPIO_PI_IEN_PDIEN4 0x10000000
496#define GPIO_PI_IEN_PDIEN3 0x08000000
497#define GPIO_PI_IEN_PDIEN2 0x04000000
498#define GPIO_PI_IEN_PDIEN1 0x02000000
499#define GPIO_PI_IEN_PDIEN0 0x01000000
500#define GPIO_PI_IEN_PCIEN7 0x00800000
501#define GPIO_PI_IEN_PCIEN6 0x00400000
502#define GPIO_PI_IEN_PCIEN5 0x00200000
503#define GPIO_PI_IEN_PCIEN4 0x00100000
504#define GPIO_PI_IEN_PCIEN3 0x00080000
505#define GPIO_PI_IEN_PCIEN2 0x00040000
506#define GPIO_PI_IEN_PCIEN1 0x00020000
507#define GPIO_PI_IEN_PCIEN0 0x00010000
508#define GPIO_PI_IEN_PBIEN7 0x00008000
509#define GPIO_PI_IEN_PBIEN6 0x00004000
510#define GPIO_PI_IEN_PBIEN5 0x00002000
511#define GPIO_PI_IEN_PBIEN4 0x00001000
512#define GPIO_PI_IEN_PBIEN3 0x00000800
513#define GPIO_PI_IEN_PBIEN2 0x00000400
514#define GPIO_PI_IEN_PBIEN1 0x00000200
515#define GPIO_PI_IEN_PBIEN0 0x00000100
516#define GPIO_PI_IEN_PAIEN7 0x00000080
517#define GPIO_PI_IEN_PAIEN6 0x00000040
518#define GPIO_PI_IEN_PAIEN5 0x00000020
519#define GPIO_PI_IEN_PAIEN4 0x00000010
520#define GPIO_PI_IEN_PAIEN3 0x00000008
521#define GPIO_PI_IEN_PAIEN2 0x00000004
522#define GPIO_PI_IEN_PAIEN1 0x00000002
523#define GPIO_PI_IEN_PAIEN0 0x00000001
530#define GPIO_IRQ_DETECT_ACK_PDIACK7 0x80000000
531#define GPIO_IRQ_DETECT_ACK_PDIACK6 0x40000000
532#define GPIO_IRQ_DETECT_ACK_PDIACK5 0x20000000
533#define GPIO_IRQ_DETECT_ACK_PDIACK4 0x10000000
534#define GPIO_IRQ_DETECT_ACK_PDIACK3 0x08000000
535#define GPIO_IRQ_DETECT_ACK_PDIACK2 0x04000000
536#define GPIO_IRQ_DETECT_ACK_PDIACK1 0x02000000
537#define GPIO_IRQ_DETECT_ACK_PDIACK0 0x01000000
538#define GPIO_IRQ_DETECT_ACK_PCIACK7 0x00800000
539#define GPIO_IRQ_DETECT_ACK_PCIACK6 0x00400000
540#define GPIO_IRQ_DETECT_ACK_PCIACK5 0x00200000
541#define GPIO_IRQ_DETECT_ACK_PCIACK4 0x00100000
542#define GPIO_IRQ_DETECT_ACK_PCIACK3 0x00080000
543#define GPIO_IRQ_DETECT_ACK_PCIACK2 0x00040000
544#define GPIO_IRQ_DETECT_ACK_PCIACK1 0x00020000
545#define GPIO_IRQ_DETECT_ACK_PCIACK0 0x00010000
546#define GPIO_IRQ_DETECT_ACK_PBIACK7 0x00008000
547#define GPIO_IRQ_DETECT_ACK_PBIACK6 0x00004000
548#define GPIO_IRQ_DETECT_ACK_PBIACK5 0x00002000
549#define GPIO_IRQ_DETECT_ACK_PBIACK4 0x00001000
550#define GPIO_IRQ_DETECT_ACK_PBIACK3 0x00000800
551#define GPIO_IRQ_DETECT_ACK_PBIACK2 0x00000400
552#define GPIO_IRQ_DETECT_ACK_PBIACK1 0x00000200
553#define GPIO_IRQ_DETECT_ACK_PBIACK0 0x00000100
554#define GPIO_IRQ_DETECT_ACK_PAIACK7 0x00000080
555#define GPIO_IRQ_DETECT_ACK_PAIACK6 0x00000040
556#define GPIO_IRQ_DETECT_ACK_PAIACK5 0x00000020
557#define GPIO_IRQ_DETECT_ACK_PAIACK4 0x00000010
558#define GPIO_IRQ_DETECT_ACK_PAIACK3 0x00000008
559#define GPIO_IRQ_DETECT_ACK_PAIACK2 0x00000004
560#define GPIO_IRQ_DETECT_ACK_PAIACK1 0x00000002
561#define GPIO_IRQ_DETECT_ACK_PAIACK0 0x00000001
567#define GPIO_USB_IRQ_ACK_USBACK 0x00000001
574#define GPIO_IRQ_DETECT_UNMASK_PDIACK7 0x80000000
575#define GPIO_IRQ_DETECT_UNMASK_PDIACK6 0x40000000
576#define GPIO_IRQ_DETECT_UNMASK_PDIACK5 0x20000000
577#define GPIO_IRQ_DETECT_UNMASK_PDIACK4 0x10000000
578#define GPIO_IRQ_DETECT_UNMASK_PDIACK3 0x08000000
579#define GPIO_IRQ_DETECT_UNMASK_PDIACK2 0x04000000
580#define GPIO_IRQ_DETECT_UNMASK_PDIACK1 0x02000000
581#define GPIO_IRQ_DETECT_UNMASK_PDIACK0 0x01000000
582#define GPIO_IRQ_DETECT_UNMASK_PCIACK7 0x00800000
583#define GPIO_IRQ_DETECT_UNMASK_PCIACK6 0x00400000
584#define GPIO_IRQ_DETECT_UNMASK_PCIACK5 0x00200000
585#define GPIO_IRQ_DETECT_UNMASK_PCIACK4 0x00100000
586#define GPIO_IRQ_DETECT_UNMASK_PCIACK3 0x00080000
587#define GPIO_IRQ_DETECT_UNMASK_PCIACK2 0x00040000
588#define GPIO_IRQ_DETECT_UNMASK_PCIACK1 0x00020000
589#define GPIO_IRQ_DETECT_UNMASK_PCIACK0 0x00010000
590#define GPIO_IRQ_DETECT_UNMASK_PBIACK7 0x00008000
591#define GPIO_IRQ_DETECT_UNMASK_PBIACK6 0x00004000
592#define GPIO_IRQ_DETECT_UNMASK_PBIACK5 0x00002000
593#define GPIO_IRQ_DETECT_UNMASK_PBIACK4 0x00001000
594#define GPIO_IRQ_DETECT_UNMASK_PBIACK3 0x00000800
595#define GPIO_IRQ_DETECT_UNMASK_PBIACK2 0x00000400
596#define GPIO_IRQ_DETECT_UNMASK_PBIACK1 0x00000200
597#define GPIO_IRQ_DETECT_UNMASK_PBIACK0 0x00000100
598#define GPIO_IRQ_DETECT_UNMASK_PAIACK7 0x00000080
599#define GPIO_IRQ_DETECT_UNMASK_PAIACK6 0x00000040
600#define GPIO_IRQ_DETECT_UNMASK_PAIACK5 0x00000020
601#define GPIO_IRQ_DETECT_UNMASK_PAIACK4 0x00000010
602#define GPIO_IRQ_DETECT_UNMASK_PAIACK3 0x00000008
603#define GPIO_IRQ_DETECT_UNMASK_PAIACK2 0x00000004
604#define GPIO_IRQ_DETECT_UNMASK_PAIACK1 0x00000002
605#define GPIO_IRQ_DETECT_UNMASK_PAIACK0 0x00000001
Header file for the GPIO HAL.
Header file with register manipulation macro definitions.