gpio-u300.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /*
  2. * Copyright (C) 2007-2011 ST-Ericsson AB
  3. * License terms: GNU General Public License (GPL) version 2
  4. * GPIO block resgister definitions and inline macros for
  5. * U300 GPIO COH 901 335 or COH 901 571/3
  6. * Author: Linus Walleij <linus.walleij@stericsson.com>
  7. */
  8. #ifndef __MACH_U300_GPIO_U300_H
  9. #define __MACH_U300_GPIO_U300_H
  10. #include <linux/kernel.h>
  11. #include <linux/io.h>
  12. #include <mach/hardware.h>
  13. #include <asm/irq.h>
  14. /* Switch type depending on platform/chip variant */
  15. #if defined(CONFIG_MACH_U300_BS2X) || defined(CONFIG_MACH_U300_BS330)
  16. #define U300_COH901335
  17. #endif
  18. #if defined(CONFIG_MACH_U300_BS365) || defined(CONFIG_MACH_U300_BS335)
  19. #define U300_COH901571_3
  20. #endif
  21. /* Get base address for regs here */
  22. #include "u300-regs.h"
  23. /* IRQ numbers */
  24. #include "irqs.h"
  25. /*
  26. * This is the GPIO block definitions. GPIO (General Purpose I/O) can be
  27. * used for anything, and often is. The event/enable etc figures are for
  28. * the lowermost pin (pin 0 on each port), shift this left to match your
  29. * pin if you're gonna use these values.
  30. */
  31. #ifdef U300_COH901335
  32. #define U300_GPIO_PORTX_SPACING (0x1C)
  33. /* Port X Pin Data Register 32bit, this is both input and output (R/W) */
  34. #define U300_GPIO_PXPDIR (0x00)
  35. #define U300_GPIO_PXPDOR (0x00)
  36. /* Port X Pin Config Register 32bit (R/W) */
  37. #define U300_GPIO_PXPCR (0x04)
  38. #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL)
  39. #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL)
  40. #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL)
  41. #define U300_GPIO_PXPCR_PIN_MODE_INPUT (0x00000000UL)
  42. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL)
  43. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL)
  44. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL)
  45. /* Port X Interrupt Event Register 32bit (R/W) */
  46. #define U300_GPIO_PXIEV (0x08)
  47. #define U300_GPIO_PXIEV_ALL_IRQ_EVENT_MASK (0x000000FFUL)
  48. #define U300_GPIO_PXIEV_IRQ_EVENT (0x00000001UL)
  49. /* Port X Interrupt Enable Register 32bit (R/W) */
  50. #define U300_GPIO_PXIEN (0x0C)
  51. #define U300_GPIO_PXIEN_ALL_IRQ_ENABLE_MASK (0x000000FFUL)
  52. #define U300_GPIO_PXIEN_IRQ_ENABLE (0x00000001UL)
  53. /* Port X Interrupt Force Register 32bit (R/W) */
  54. #define U300_GPIO_PXIFR (0x10)
  55. #define U300_GPIO_PXIFR_ALL_IRQ_FORCE_MASK (0x000000FFUL)
  56. #define U300_GPIO_PXIFR_IRQ_FORCE (0x00000001UL)
  57. /* Port X Interrupt Config Register 32bit (R/W) */
  58. #define U300_GPIO_PXICR (0x14)
  59. #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL)
  60. #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL)
  61. #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL)
  62. #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL)
  63. /* Port X Pull-up Enable Register 32bit (R/W) */
  64. #define U300_GPIO_PXPER (0x18)
  65. #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL)
  66. #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL)
  67. /* Control Register 32bit (R/W) */
  68. #define U300_GPIO_CR (0x54)
  69. #define U300_GPIO_CR_BLOCK_CLOCK_ENABLE (0x00000001UL)
  70. /* three ports of 8 bits each = GPIO pins 0..23 */
  71. #define U300_GPIO_NUM_PORTS 3
  72. #define U300_GPIO_PINS_PER_PORT 8
  73. #define U300_GPIO_MAX (U300_GPIO_PINS_PER_PORT * U300_GPIO_NUM_PORTS - 1)
  74. #endif
  75. #ifdef U300_COH901571_3
  76. /*
  77. * Control Register 32bit (R/W)
  78. * bit 15-9 (mask 0x0000FE00) contains the number of cores. 8*cores
  79. * gives the number of GPIO pins.
  80. * bit 8-2 (mask 0x000001FC) contains the core version ID.
  81. */
  82. #define U300_GPIO_CR (0x00)
  83. #define U300_GPIO_CR_SYNC_SEL_ENABLE (0x00000002UL)
  84. #define U300_GPIO_CR_BLOCK_CLKRQ_ENABLE (0x00000001UL)
  85. #define U300_GPIO_PORTX_SPACING (0x30)
  86. /* Port X Pin Data INPUT Register 32bit (R/W) */
  87. #define U300_GPIO_PXPDIR (0x04)
  88. /* Port X Pin Data OUTPUT Register 32bit (R/W) */
  89. #define U300_GPIO_PXPDOR (0x08)
  90. /* Port X Pin Config Register 32bit (R/W) */
  91. #define U300_GPIO_PXPCR (0x0C)
  92. #define U300_GPIO_PXPCR_ALL_PINS_MODE_MASK (0x0000FFFFUL)
  93. #define U300_GPIO_PXPCR_PIN_MODE_MASK (0x00000003UL)
  94. #define U300_GPIO_PXPCR_PIN_MODE_SHIFT (0x00000002UL)
  95. #define U300_GPIO_PXPCR_PIN_MODE_INPUT (0x00000000UL)
  96. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_PUSH_PULL (0x00000001UL)
  97. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_DRAIN (0x00000002UL)
  98. #define U300_GPIO_PXPCR_PIN_MODE_OUTPUT_OPEN_SOURCE (0x00000003UL)
  99. /* Port X Pull-up Enable Register 32bit (R/W) */
  100. #define U300_GPIO_PXPER (0x10)
  101. #define U300_GPIO_PXPER_ALL_PULL_UP_DISABLE_MASK (0x000000FFUL)
  102. #define U300_GPIO_PXPER_PULL_UP_DISABLE (0x00000001UL)
  103. /* Port X Interrupt Event Register 32bit (R/W) */
  104. #define U300_GPIO_PXIEV (0x14)
  105. #define U300_GPIO_PXIEV_ALL_IRQ_EVENT_MASK (0x000000FFUL)
  106. #define U300_GPIO_PXIEV_IRQ_EVENT (0x00000001UL)
  107. /* Port X Interrupt Enable Register 32bit (R/W) */
  108. #define U300_GPIO_PXIEN (0x18)
  109. #define U300_GPIO_PXIEN_ALL_IRQ_ENABLE_MASK (0x000000FFUL)
  110. #define U300_GPIO_PXIEN_IRQ_ENABLE (0x00000001UL)
  111. /* Port X Interrupt Force Register 32bit (R/W) */
  112. #define U300_GPIO_PXIFR (0x1C)
  113. #define U300_GPIO_PXIFR_ALL_IRQ_FORCE_MASK (0x000000FFUL)
  114. #define U300_GPIO_PXIFR_IRQ_FORCE (0x00000001UL)
  115. /* Port X Interrupt Config Register 32bit (R/W) */
  116. #define U300_GPIO_PXICR (0x20)
  117. #define U300_GPIO_PXICR_ALL_IRQ_CONFIG_MASK (0x000000FFUL)
  118. #define U300_GPIO_PXICR_IRQ_CONFIG_MASK (0x00000001UL)
  119. #define U300_GPIO_PXICR_IRQ_CONFIG_FALLING_EDGE (0x00000000UL)
  120. #define U300_GPIO_PXICR_IRQ_CONFIG_RISING_EDGE (0x00000001UL)
  121. #ifdef CONFIG_MACH_U300_BS335
  122. /* seven ports of 8 bits each = GPIO pins 0..55 */
  123. #define U300_GPIO_NUM_PORTS 7
  124. #else
  125. /* five ports of 8 bits each = GPIO pins 0..39 */
  126. #define U300_GPIO_NUM_PORTS 5
  127. #endif
  128. #define U300_GPIO_PINS_PER_PORT 8
  129. #define U300_GPIO_MAX (U300_GPIO_PINS_PER_PORT * U300_GPIO_NUM_PORTS - 1)
  130. #endif
  131. /*
  132. * Individual pin assignments for the B26/S26. Notice that the
  133. * actual usage of these pins depends on the PAD MUX settings, that
  134. * is why the same number can potentially appear several times.
  135. * In the reference design each pin is only used for one purpose.
  136. * These were determined by inspecting the B26/S26 schematic:
  137. * 2/1911-ROA 128 1603
  138. */
  139. #ifdef CONFIG_MACH_U300_BS2X
  140. #define U300_GPIO_PIN_UART_RX 0
  141. #define U300_GPIO_PIN_UART_TX 1
  142. #define U300_GPIO_PIN_GPIO02 2 /* Unrouted */
  143. #define U300_GPIO_PIN_GPIO03 3 /* Unrouted */
  144. #define U300_GPIO_PIN_CAM_SLEEP 4
  145. #define U300_GPIO_PIN_CAM_REG_EN 5
  146. #define U300_GPIO_PIN_GPIO06 6 /* Unrouted */
  147. #define U300_GPIO_PIN_GPIO07 7 /* Unrouted */
  148. #define U300_GPIO_PIN_GPIO08 8 /* Service point SP2321 */
  149. #define U300_GPIO_PIN_GPIO09 9 /* Service point SP2322 */
  150. #define U300_GPIO_PIN_PHFSENSE 10 /* Headphone jack sensing */
  151. #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */
  152. #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */
  153. #define U300_GPIO_PIN_FLIPSENSE 13 /* Mechanical flip sensing */
  154. #define U300_GPIO_PIN_GPIO14 14 /* DSP JTAG Port RTCK */
  155. #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */
  156. #define U300_GPIO_PIN_GPIO16 16 /* Unrouted */
  157. #define U300_GPIO_PIN_GPIO17 17 /* Unrouted */
  158. #define U300_GPIO_PIN_GPIO18 18 /* Unrouted */
  159. #define U300_GPIO_PIN_GPIO19 19 /* Unrouted */
  160. #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */
  161. #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */
  162. #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */
  163. #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */
  164. #endif
  165. /*
  166. * Individual pin assignments for the B330/S330 and B365/S365.
  167. * Notice that the actual usage of these pins depends on the
  168. * PAD MUX settings, that is why the same number can potentially
  169. * appear several times. In the reference design each pin is only
  170. * used for one purpose. These were determined by inspecting the
  171. * S365 schematic.
  172. */
  173. #if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \
  174. defined(CONFIG_MACH_U300_BS335)
  175. #define U300_GPIO_PIN_UART_RX 0
  176. #define U300_GPIO_PIN_UART_TX 1
  177. #define U300_GPIO_PIN_UART_CTS 2
  178. #define U300_GPIO_PIN_UART_RTS 3
  179. #define U300_GPIO_PIN_CAM_MAIN_STANDBY 4 /* Camera MAIN standby */
  180. #define U300_GPIO_PIN_GPIO05 5 /* Unrouted */
  181. #define U300_GPIO_PIN_MS_CD 6 /* Memory Stick Card insertion */
  182. #define U300_GPIO_PIN_GPIO07 7 /* Test point TP2430 */
  183. #define U300_GPIO_PIN_GPIO08 8 /* Test point TP2437 */
  184. #define U300_GPIO_PIN_GPIO09 9 /* Test point TP2431 */
  185. #define U300_GPIO_PIN_GPIO10 10 /* Test point TP2432 */
  186. #define U300_GPIO_PIN_MMC_CLKRET 11 /* Clock return from MMC/SD card */
  187. #define U300_GPIO_PIN_MMC_CD 12 /* MMC Card insertion detection */
  188. #define U300_GPIO_PIN_CAM_SUB_STANDBY 13 /* Camera SUB standby */
  189. #define U300_GPIO_PIN_GPIO14 14 /* Test point TP2436 */
  190. #define U300_GPIO_PIN_GPIO15 15 /* Unrouted */
  191. #define U300_GPIO_PIN_GPIO16 16 /* Test point TP2438 */
  192. #define U300_GPIO_PIN_PHFSENSE 17 /* Headphone jack sensing */
  193. #define U300_GPIO_PIN_GPIO18 18 /* Test point TP2439 */
  194. #define U300_GPIO_PIN_GPIO19 19 /* Routed somewhere */
  195. #define U300_GPIO_PIN_GPIO20 20 /* Unrouted */
  196. #define U300_GPIO_PIN_GPIO21 21 /* Unrouted */
  197. #define U300_GPIO_PIN_GPIO22 22 /* Unrouted */
  198. #define U300_GPIO_PIN_GPIO23 23 /* Unrouted */
  199. #define U300_GPIO_PIN_GPIO24 24 /* Unrouted */
  200. #define U300_GPIO_PIN_GPIO25 25 /* Unrouted */
  201. #define U300_GPIO_PIN_GPIO26 26 /* Unrouted */
  202. #define U300_GPIO_PIN_GPIO27 27 /* Unrouted */
  203. #define U300_GPIO_PIN_GPIO28 28 /* Unrouted */
  204. #define U300_GPIO_PIN_GPIO29 29 /* Unrouted */
  205. #define U300_GPIO_PIN_GPIO30 30 /* Unrouted */
  206. #define U300_GPIO_PIN_GPIO31 31 /* Unrouted */
  207. #define U300_GPIO_PIN_GPIO32 32 /* Unrouted */
  208. #define U300_GPIO_PIN_GPIO33 33 /* Unrouted */
  209. #define U300_GPIO_PIN_GPIO34 34 /* Unrouted */
  210. #define U300_GPIO_PIN_GPIO35 35 /* Unrouted */
  211. #define U300_GPIO_PIN_GPIO36 36 /* Unrouted */
  212. #define U300_GPIO_PIN_GPIO37 37 /* Unrouted */
  213. #define U300_GPIO_PIN_GPIO38 38 /* Unrouted */
  214. #define U300_GPIO_PIN_GPIO39 39 /* Unrouted */
  215. #ifdef CONFIG_MACH_U300_BS335
  216. #define U300_GPIO_PIN_GPIO40 40 /* Unrouted */
  217. #define U300_GPIO_PIN_GPIO41 41 /* Unrouted */
  218. #define U300_GPIO_PIN_GPIO42 42 /* Unrouted */
  219. #define U300_GPIO_PIN_GPIO43 43 /* Unrouted */
  220. #define U300_GPIO_PIN_GPIO44 44 /* Unrouted */
  221. #define U300_GPIO_PIN_GPIO45 45 /* Unrouted */
  222. #define U300_GPIO_PIN_GPIO46 46 /* Unrouted */
  223. #define U300_GPIO_PIN_GPIO47 47 /* Unrouted */
  224. #define U300_GPIO_PIN_GPIO48 48 /* Unrouted */
  225. #define U300_GPIO_PIN_GPIO49 49 /* Unrouted */
  226. #define U300_GPIO_PIN_GPIO50 50 /* Unrouted */
  227. #define U300_GPIO_PIN_GPIO51 51 /* Unrouted */
  228. #define U300_GPIO_PIN_GPIO52 52 /* Unrouted */
  229. #define U300_GPIO_PIN_GPIO53 53 /* Unrouted */
  230. #define U300_GPIO_PIN_GPIO54 54 /* Unrouted */
  231. #define U300_GPIO_PIN_GPIO55 55 /* Unrouted */
  232. #endif
  233. #endif
  234. #endif /* __MACH_U300_GPIO_U300_H */