gpio.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * linux/arch/unicore32/include/asm/gpio.h
  3. *
  4. * Code specific to PKUnity SoC and UniCore ISA
  5. *
  6. * Copyright (C) 2001-2010 GUAN Xue-tao
  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 version 2 as
  10. * published by the Free Software Foundation.
  11. */
  12. #ifndef __UNICORE_GPIO_H__
  13. #define __UNICORE_GPIO_H__
  14. #include <linux/io.h>
  15. #include <asm/irq.h>
  16. #include <mach/hardware.h>
  17. #include <asm-generic/gpio.h>
  18. #define GPI_OTP_INT 0
  19. #define GPI_PCI_INTA 1
  20. #define GPI_PCI_INTB 2
  21. #define GPI_PCI_INTC 3
  22. #define GPI_PCI_INTD 4
  23. #define GPI_BAT_DET 5
  24. #define GPI_SD_CD 6
  25. #define GPI_SOFF_REQ 7
  26. #define GPI_SD_WP 8
  27. #define GPI_LCD_CASE_OFF 9
  28. #define GPO_WIFI_EN 10
  29. #define GPO_HDD_LED 11
  30. #define GPO_VGA_EN 12
  31. #define GPO_LCD_EN 13
  32. #define GPO_LED_DATA 14
  33. #define GPO_LED_CLK 15
  34. #define GPO_CAM_PWR_EN 16
  35. #define GPO_LCD_VCC_EN 17
  36. #define GPO_SOFT_OFF 18
  37. #define GPO_BT_EN 19
  38. #define GPO_FAN_ON 20
  39. #define GPO_SPKR 21
  40. #define GPO_SET_V1 23
  41. #define GPO_SET_V2 24
  42. #define GPO_CPU_HEALTH 25
  43. #define GPO_LAN_SEL 26
  44. #ifdef CONFIG_PUV3_NB0916
  45. #define GPI_BTN_TOUCH 14
  46. #define GPIO_IN 0x000043ff /* 1 for input */
  47. #define GPIO_OUT 0x0fffbc00 /* 1 for output */
  48. #endif /* CONFIG_PUV3_NB0916 */
  49. #ifdef CONFIG_PUV3_SMW0919
  50. #define GPIO_IN 0x000003ff /* 1 for input */
  51. #define GPIO_OUT 0x0ffffc00 /* 1 for output */
  52. #endif /* CONFIG_PUV3_SMW0919 */
  53. #ifdef CONFIG_PUV3_DB0913
  54. #define GPIO_IN 0x000001df /* 1 for input */
  55. #define GPIO_OUT 0x03fee800 /* 1 for output */
  56. #endif /* CONFIG_PUV3_DB0913 */
  57. #define GPIO_DIR (~((GPIO_IN) | 0xf0000000))
  58. /* 0 input, 1 output */
  59. static inline int gpio_get_value(unsigned gpio)
  60. {
  61. if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX))
  62. return readl(GPIO_GPLR) & GPIO_GPIO(gpio);
  63. else
  64. return __gpio_get_value(gpio);
  65. }
  66. static inline void gpio_set_value(unsigned gpio, int value)
  67. {
  68. if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX))
  69. if (value)
  70. writel(GPIO_GPIO(gpio), GPIO_GPSR);
  71. else
  72. writel(GPIO_GPIO(gpio), GPIO_GPCR);
  73. else
  74. __gpio_set_value(gpio, value);
  75. }
  76. #define gpio_cansleep __gpio_cansleep
  77. static inline unsigned gpio_to_irq(unsigned gpio)
  78. {
  79. if ((gpio < IRQ_GPIOHIGH) && (FIELD(1, 1, gpio) & readl(GPIO_GPIR)))
  80. return IRQ_GPIOLOW0 + gpio;
  81. else
  82. return IRQ_GPIO0 + gpio;
  83. }
  84. static inline unsigned irq_to_gpio(unsigned irq)
  85. {
  86. if (irq < IRQ_GPIOHIGH)
  87. return irq - IRQ_GPIOLOW0;
  88. else
  89. return irq - IRQ_GPIO0;
  90. }
  91. #endif /* __UNICORE_GPIO_H__ */