gpio.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * arch/arm/mach-lpc32xx/include/mach/gpio.h
  3. *
  4. * Author: Kevin Wells <kevin.wells@nxp.com>
  5. *
  6. * Copyright (C) 2010 NXP Semiconductors
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. */
  18. #ifndef __ASM_ARCH_GPIO_H
  19. #define __ASM_ARCH_GPIO_H
  20. #include <asm-generic/gpio.h>
  21. /*
  22. * Note!
  23. * Muxed GP pins need to be setup to the GP state in the board level
  24. * code prior to using this driver.
  25. * GPI pins : 28xP3 group
  26. * GPO pins : 24xP3 group
  27. * GPIO pins: 8xP0 group, 24xP1 group, 13xP2 group, 6xP3 group
  28. */
  29. #define LPC32XX_GPIO_P0_MAX 8
  30. #define LPC32XX_GPIO_P1_MAX 24
  31. #define LPC32XX_GPIO_P2_MAX 13
  32. #define LPC32XX_GPIO_P3_MAX 6
  33. #define LPC32XX_GPI_P3_MAX 28
  34. #define LPC32XX_GPO_P3_MAX 24
  35. #define LPC32XX_GPIO_P0_GRP 0
  36. #define LPC32XX_GPIO_P1_GRP (LPC32XX_GPIO_P0_GRP + LPC32XX_GPIO_P0_MAX)
  37. #define LPC32XX_GPIO_P2_GRP (LPC32XX_GPIO_P1_GRP + LPC32XX_GPIO_P1_MAX)
  38. #define LPC32XX_GPIO_P3_GRP (LPC32XX_GPIO_P2_GRP + LPC32XX_GPIO_P2_MAX)
  39. #define LPC32XX_GPI_P3_GRP (LPC32XX_GPIO_P3_GRP + LPC32XX_GPIO_P3_MAX)
  40. #define LPC32XX_GPO_P3_GRP (LPC32XX_GPI_P3_GRP + LPC32XX_GPI_P3_MAX)
  41. /*
  42. * A specific GPIO can be selected with this macro
  43. * ie, GPIO_05 can be selected with LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 5)
  44. * See the LPC32x0 User's guide for GPIO group numbers
  45. */
  46. #define LPC32XX_GPIO(x, y) ((x) + (y))
  47. static inline int gpio_get_value(unsigned gpio)
  48. {
  49. return __gpio_get_value(gpio);
  50. }
  51. static inline void gpio_set_value(unsigned gpio, int value)
  52. {
  53. __gpio_set_value(gpio, value);
  54. }
  55. static inline int gpio_cansleep(unsigned gpio)
  56. {
  57. return __gpio_cansleep(gpio);
  58. }
  59. static inline int gpio_to_irq(unsigned gpio)
  60. {
  61. return __gpio_to_irq(gpio);
  62. }
  63. #endif