gpio.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (C) 2006, 2008 Atmel Corporation
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef __ASM_AVR32_ARCH_GPIO_H__
  7. #define __ASM_AVR32_ARCH_GPIO_H__
  8. #include <asm/arch/chip-features.h>
  9. #include <asm/arch/hardware.h>
  10. #define NR_GPIO_CONTROLLERS 5
  11. /*
  12. * Pin numbers identifying specific GPIO pins on the chip.
  13. */
  14. #define GPIO_PIOA_BASE (0)
  15. #define GPIO_PIOB_BASE (GPIO_PIOA_BASE + 32)
  16. #define GPIO_PIOC_BASE (GPIO_PIOB_BASE + 32)
  17. #define GPIO_PIOD_BASE (GPIO_PIOC_BASE + 32)
  18. #define GPIO_PIOE_BASE (GPIO_PIOD_BASE + 32)
  19. #define GPIO_PIN_PA(x) (GPIO_PIOA_BASE + (x))
  20. #define GPIO_PIN_PB(x) (GPIO_PIOB_BASE + (x))
  21. #define GPIO_PIN_PC(x) (GPIO_PIOC_BASE + (x))
  22. #define GPIO_PIN_PD(x) (GPIO_PIOD_BASE + (x))
  23. #define GPIO_PIN_PE(x) (GPIO_PIOE_BASE + (x))
  24. static inline void *pio_pin_to_port(unsigned int pin)
  25. {
  26. switch (pin >> 5) {
  27. case 0:
  28. return (void *)ATMEL_BASE_PIOA;
  29. case 1:
  30. return (void *)ATMEL_BASE_PIOB;
  31. case 2:
  32. return (void *)ATMEL_BASE_PIOC;
  33. case 3:
  34. return (void *)ATMEL_BASE_PIOD;
  35. case 4:
  36. return (void *)ATMEL_BASE_PIOE;
  37. default:
  38. return NULL;
  39. }
  40. }
  41. #include <asm/arch-common/portmux-pio.h>
  42. #endif /* __ASM_AVR32_ARCH_GPIO_H__ */