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 with register manipulation macro definitions.
Header file for the GPIO HAL.