iomux-mx1-mx2.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. /*
  2. * Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
  3. *
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU General Public License
  6. * as published by the Free Software Foundation; either version 2
  7. * of the License, or (at your option) any later version.
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program; if not, write to the Free Software
  15. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16. * MA 02110-1301, USA.
  17. */
  18. #ifndef _MXC_GPIO_MX1_MX2_H
  19. #define _MXC_GPIO_MX1_MX2_H
  20. #include <linux/io.h>
  21. #define MXC_GPIO_ALLOC_MODE_NORMAL 0
  22. #define MXC_GPIO_ALLOC_MODE_NO_ALLOC 1
  23. #define MXC_GPIO_ALLOC_MODE_TRY_ALLOC 2
  24. #define MXC_GPIO_ALLOC_MODE_ALLOC_ONLY 4
  25. #define MXC_GPIO_ALLOC_MODE_RELEASE 8
  26. /*
  27. * GPIO Module and I/O Multiplexer
  28. * x = 0..3 for reg_A, reg_B, reg_C, reg_D
  29. */
  30. #define VA_GPIO_BASE IO_ADDRESS(GPIO_BASE_ADDR)
  31. #define MXC_DDIR(x) (0x00 + ((x) << 8))
  32. #define MXC_OCR1(x) (0x04 + ((x) << 8))
  33. #define MXC_OCR2(x) (0x08 + ((x) << 8))
  34. #define MXC_ICONFA1(x) (0x0c + ((x) << 8))
  35. #define MXC_ICONFA2(x) (0x10 + ((x) << 8))
  36. #define MXC_ICONFB1(x) (0x14 + ((x) << 8))
  37. #define MXC_ICONFB2(x) (0x18 + ((x) << 8))
  38. #define MXC_DR(x) (0x1c + ((x) << 8))
  39. #define MXC_GIUS(x) (0x20 + ((x) << 8))
  40. #define MXC_SSR(x) (0x24 + ((x) << 8))
  41. #define MXC_ICR1(x) (0x28 + ((x) << 8))
  42. #define MXC_ICR2(x) (0x2c + ((x) << 8))
  43. #define MXC_IMR(x) (0x30 + ((x) << 8))
  44. #define MXC_ISR(x) (0x34 + ((x) << 8))
  45. #define MXC_GPR(x) (0x38 + ((x) << 8))
  46. #define MXC_SWR(x) (0x3c + ((x) << 8))
  47. #define MXC_PUEN(x) (0x40 + ((x) << 8))
  48. #ifdef CONFIG_ARCH_MX1
  49. # define GPIO_PORT_MAX 3
  50. #endif
  51. #ifdef CONFIG_ARCH_MX2
  52. # define GPIO_PORT_MAX 5
  53. #endif
  54. #ifndef GPIO_PORT_MAX
  55. # error "GPIO config port count unknown!"
  56. #endif
  57. #define GPIO_PIN_MASK 0x1f
  58. #define GPIO_PORT_SHIFT 5
  59. #define GPIO_PORT_MASK (0x7 << GPIO_PORT_SHIFT)
  60. #define GPIO_PORTA (0 << GPIO_PORT_SHIFT)
  61. #define GPIO_PORTB (1 << GPIO_PORT_SHIFT)
  62. #define GPIO_PORTC (2 << GPIO_PORT_SHIFT)
  63. #define GPIO_PORTD (3 << GPIO_PORT_SHIFT)
  64. #define GPIO_PORTE (4 << GPIO_PORT_SHIFT)
  65. #define GPIO_PORTF (5 << GPIO_PORT_SHIFT)
  66. #define GPIO_OUT (1 << 8)
  67. #define GPIO_IN (0 << 8)
  68. #define GPIO_PUEN (1 << 9)
  69. #define GPIO_PF (1 << 10)
  70. #define GPIO_AF (1 << 11)
  71. #define GPIO_OCR_SHIFT 12
  72. #define GPIO_OCR_MASK (3 << GPIO_OCR_SHIFT)
  73. #define GPIO_AIN (0 << GPIO_OCR_SHIFT)
  74. #define GPIO_BIN (1 << GPIO_OCR_SHIFT)
  75. #define GPIO_CIN (2 << GPIO_OCR_SHIFT)
  76. #define GPIO_GPIO (3 << GPIO_OCR_SHIFT)
  77. #define GPIO_AOUT_SHIFT 14
  78. #define GPIO_AOUT_MASK (3 << GPIO_AOUT_SHIFT)
  79. #define GPIO_AOUT (0 << GPIO_AOUT_SHIFT)
  80. #define GPIO_AOUT_ISR (1 << GPIO_AOUT_SHIFT)
  81. #define GPIO_AOUT_0 (2 << GPIO_AOUT_SHIFT)
  82. #define GPIO_AOUT_1 (3 << GPIO_AOUT_SHIFT)
  83. #define GPIO_BOUT_SHIFT 16
  84. #define GPIO_BOUT_MASK (3 << GPIO_BOUT_SHIFT)
  85. #define GPIO_BOUT (0 << GPIO_BOUT_SHIFT)
  86. #define GPIO_BOUT_ISR (1 << GPIO_BOUT_SHIFT)
  87. #define GPIO_BOUT_0 (2 << GPIO_BOUT_SHIFT)
  88. #define GPIO_BOUT_1 (3 << GPIO_BOUT_SHIFT)
  89. extern void mxc_gpio_mode(int gpio_mode);
  90. extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
  91. int alloc_mode, const char *label);
  92. /*-------------------------------------------------------------------------*/
  93. /* assignements for GPIO alternate/primary functions */
  94. /* FIXME: This list is not completed. The correct directions are
  95. * missing on some (many) pins
  96. */
  97. #ifdef CONFIG_ARCH_MX1
  98. #define PA0_AIN_SPI2_CLK (GPIO_GIUS | GPIO_PORTA | GPIO_OUT | 0)
  99. #define PA0_AF_ETMTRACESYNC (GPIO_PORTA | GPIO_AF | 0)
  100. #define PA1_AOUT_SPI2_RXD (GPIO_GIUS | GPIO_PORTA | GPIO_IN | 1)
  101. #define PA1_PF_TIN (GPIO_PORTA | GPIO_PF | 1)
  102. #define PA2_PF_PWM0 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 2)
  103. #define PA3_PF_CSI_MCLK (GPIO_PORTA | GPIO_PF | 3)
  104. #define PA4_PF_CSI_D0 (GPIO_PORTA | GPIO_PF | 4)
  105. #define PA5_PF_CSI_D1 (GPIO_PORTA | GPIO_PF | 5)
  106. #define PA6_PF_CSI_D2 (GPIO_PORTA | GPIO_PF | 6)
  107. #define PA7_PF_CSI_D3 (GPIO_PORTA | GPIO_PF | 7)
  108. #define PA8_PF_CSI_D4 (GPIO_PORTA | GPIO_PF | 8)
  109. #define PA9_PF_CSI_D5 (GPIO_PORTA | GPIO_PF | 9)
  110. #define PA10_PF_CSI_D6 (GPIO_PORTA | GPIO_PF | 10)
  111. #define PA11_PF_CSI_D7 (GPIO_PORTA | GPIO_PF | 11)
  112. #define PA12_PF_CSI_VSYNC (GPIO_PORTA | GPIO_PF | 12)
  113. #define PA13_PF_CSI_HSYNC (GPIO_PORTA | GPIO_PF | 13)
  114. #define PA14_PF_CSI_PIXCLK (GPIO_PORTA | GPIO_PF | 14)
  115. #define PA15_PF_I2C_SDA (GPIO_PORTA | GPIO_OUT | GPIO_PF | 15)
  116. #define PA16_PF_I2C_SCL (GPIO_PORTA | GPIO_OUT | GPIO_PF | 16)
  117. #define PA17_AF_ETMTRACEPKT4 (GPIO_PORTA | GPIO_AF | 17)
  118. #define PA17_AIN_SPI2_SS (GPIO_GIUS | GPIO_PORTA | GPIO_OUT | 17)
  119. #define PA18_AF_ETMTRACEPKT5 (GPIO_PORTA | GPIO_AF | 18)
  120. #define PA19_AF_ETMTRACEPKT6 (GPIO_PORTA | GPIO_AF | 19)
  121. #define PA20_AF_ETMTRACEPKT7 (GPIO_PORTA | GPIO_AF | 20)
  122. #define PA21_PF_A0 (GPIO_PORTA | GPIO_PF | 21)
  123. #define PA22_PF_CS4 (GPIO_PORTA | GPIO_PF | 22)
  124. #define PA23_PF_CS5 (GPIO_PORTA | GPIO_PF | 23)
  125. #define PA24_PF_A16 (GPIO_PORTA | GPIO_PF | 24)
  126. #define PA24_AF_ETMTRACEPKT0 (GPIO_PORTA | GPIO_AF | 24)
  127. #define PA25_PF_A17 (GPIO_PORTA | GPIO_PF | 25)
  128. #define PA25_AF_ETMTRACEPKT1 (GPIO_PORTA | GPIO_AF | 25)
  129. #define PA26_PF_A18 (GPIO_PORTA | GPIO_PF | 26)
  130. #define PA26_AF_ETMTRACEPKT2 (GPIO_PORTA | GPIO_AF | 26)
  131. #define PA27_PF_A19 (GPIO_PORTA | GPIO_PF | 27)
  132. #define PA27_AF_ETMTRACEPKT3 (GPIO_PORTA | GPIO_AF | 27)
  133. #define PA28_PF_A20 (GPIO_PORTA | GPIO_PF | 28)
  134. #define PA28_AF_ETMPIPESTAT0 (GPIO_PORTA | GPIO_AF | 28)
  135. #define PA29_PF_A21 (GPIO_PORTA | GPIO_PF | 29)
  136. #define PA29_AF_ETMPIPESTAT1 (GPIO_PORTA | GPIO_AF | 29)
  137. #define PA30_PF_A22 (GPIO_PORTA | GPIO_PF | 30)
  138. #define PA30_AF_ETMPIPESTAT2 (GPIO_PORTA | GPIO_AF | 30)
  139. #define PA31_PF_A23 (GPIO_PORTA | GPIO_PF | 31)
  140. #define PA31_AF_ETMTRACECLK (GPIO_PORTA | GPIO_AF | 31)
  141. #define PB8_PF_SD_DAT0 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 8)
  142. #define PB8_AF_MS_PIO (GPIO_PORTB | GPIO_AF | 8)
  143. #define PB9_PF_SD_DAT1 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 9)
  144. #define PB9_AF_MS_PI1 (GPIO_PORTB | GPIO_AF | 9)
  145. #define PB10_PF_SD_DAT2 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 10)
  146. #define PB10_AF_MS_SCLKI (GPIO_PORTB | GPIO_AF | 10)
  147. #define PB11_PF_SD_DAT3 (GPIO_PORTB | GPIO_PF | 11)
  148. #define PB11_AF_MS_SDIO (GPIO_PORTB | GPIO_AF | 11)
  149. #define PB12_PF_SD_CLK (GPIO_PORTB | GPIO_PF | 12)
  150. #define PB12_AF_MS_SCLK0 (GPIO_PORTB | GPIO_AF | 12)
  151. #define PB13_PF_SD_CMD (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 13)
  152. #define PB13_AF_MS_BS (GPIO_PORTB | GPIO_AF | 13)
  153. #define PB14_AF_SSI_RXFS (GPIO_PORTB | GPIO_AF | 14)
  154. #define PB15_AF_SSI_RXCLK (GPIO_PORTB | GPIO_AF | 15)
  155. #define PB16_AF_SSI_RXDAT (GPIO_PORTB | GPIO_IN | GPIO_AF | 16)
  156. #define PB17_AF_SSI_TXDAT (GPIO_PORTB | GPIO_OUT | GPIO_AF | 17)
  157. #define PB18_AF_SSI_TXFS (GPIO_PORTB | GPIO_AF | 18)
  158. #define PB19_AF_SSI_TXCLK (GPIO_PORTB | GPIO_AF | 19)
  159. #define PB20_PF_USBD_AFE (GPIO_PORTB | GPIO_PF | 20)
  160. #define PB21_PF_USBD_OE (GPIO_PORTB | GPIO_PF | 21)
  161. #define PB22_PFUSBD_RCV (GPIO_PORTB | GPIO_PF | 22)
  162. #define PB23_PF_USBD_SUSPND (GPIO_PORTB | GPIO_PF | 23)
  163. #define PB24_PF_USBD_VP (GPIO_PORTB | GPIO_PF | 24)
  164. #define PB25_PF_USBD_VM (GPIO_PORTB | GPIO_PF | 25)
  165. #define PB26_PF_USBD_VPO (GPIO_PORTB | GPIO_PF | 26)
  166. #define PB27_PF_USBD_VMO (GPIO_PORTB | GPIO_PF | 27)
  167. #define PB28_PF_UART2_CTS (GPIO_PORTB | GPIO_OUT | GPIO_PF | 28)
  168. #define PB29_PF_UART2_RTS (GPIO_PORTB | GPIO_IN | GPIO_PF | 29)
  169. #define PB30_PF_UART2_TXD (GPIO_PORTB | GPIO_OUT | GPIO_PF | 30)
  170. #define PB31_PF_UART2_RXD (GPIO_PORTB | GPIO_IN | GPIO_PF | 31)
  171. #define PC3_PF_SSI_RXFS (GPIO_PORTC | GPIO_PF | 3)
  172. #define PC4_PF_SSI_RXCLK (GPIO_PORTC | GPIO_PF | 4)
  173. #define PC5_PF_SSI_RXDAT (GPIO_PORTC | GPIO_IN | GPIO_PF | 5)
  174. #define PC6_PF_SSI_TXDAT (GPIO_PORTC | GPIO_OUT | GPIO_PF | 6)
  175. #define PC7_PF_SSI_TXFS (GPIO_PORTC | GPIO_PF | 7)
  176. #define PC8_PF_SSI_TXCLK (GPIO_PORTC | GPIO_PF | 8)
  177. #define PC9_PF_UART1_CTS (GPIO_PORTC | GPIO_OUT | GPIO_PF | 9)
  178. #define PC10_PF_UART1_RTS (GPIO_PORTC | GPIO_IN | GPIO_PF | 10)
  179. #define PC11_PF_UART1_TXD (GPIO_PORTC | GPIO_OUT | GPIO_PF | 11)
  180. #define PC12_PF_UART1_RXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 12)
  181. #define PC13_PF_SPI1_SPI_RDY (GPIO_PORTC | GPIO_PF | 13)
  182. #define PC14_PF_SPI1_SCLK (GPIO_PORTC | GPIO_PF | 14)
  183. #define PC15_PF_SPI1_SS (GPIO_PORTC | GPIO_PF | 15)
  184. #define PC16_PF_SPI1_MISO (GPIO_PORTC | GPIO_PF | 16)
  185. #define PC17_PF_SPI1_MOSI (GPIO_PORTC | GPIO_PF | 17)
  186. #define PC24_BIN_UART3_RI (GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 24)
  187. #define PC25_BIN_UART3_DSR (GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 25)
  188. #define PC26_AOUT_UART3_DTR (GPIO_GIUS | GPIO_PORTC | GPIO_IN | 26)
  189. #define PC27_BIN_UART3_DCD (GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 27)
  190. #define PC28_BIN_UART3_CTS (GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 28)
  191. #define PC29_AOUT_UART3_RTS (GPIO_GIUS | GPIO_PORTC | GPIO_IN | 29)
  192. #define PC30_BIN_UART3_TX (GPIO_GIUS | GPIO_PORTC | GPIO_BIN | 30)
  193. #define PC31_AOUT_UART3_RX (GPIO_GIUS | GPIO_PORTC | GPIO_IN | 31)
  194. #define PD6_PF_LSCLK (GPIO_PORTD | GPIO_OUT | GPIO_PF | 6)
  195. #define PD7_PF_REV (GPIO_PORTD | GPIO_PF | 7)
  196. #define PD7_AF_UART2_DTR (GPIO_GIUS | GPIO_PORTD | GPIO_IN | GPIO_AF | 7)
  197. #define PD7_AIN_SPI2_SCLK (GPIO_GIUS | GPIO_PORTD | GPIO_AIN | 7)
  198. #define PD8_PF_CLS (GPIO_PORTD | GPIO_PF | 8)
  199. #define PD8_AF_UART2_DCD (GPIO_PORTD | GPIO_OUT | GPIO_AF | 8)
  200. #define PD8_AIN_SPI2_SS (GPIO_GIUS | GPIO_PORTD | GPIO_AIN | 8)
  201. #define PD9_PF_PS (GPIO_PORTD | GPIO_PF | 9)
  202. #define PD9_AF_UART2_RI (GPIO_PORTD | GPIO_OUT | GPIO_AF | 9)
  203. #define PD9_AOUT_SPI2_RXD (GPIO_GIUS | GPIO_PORTD | GPIO_IN | 9)
  204. #define PD10_PF_SPL_SPR (GPIO_PORTD | GPIO_OUT | GPIO_PF | 10)
  205. #define PD10_AF_UART2_DSR (GPIO_PORTD | GPIO_OUT | GPIO_AF | 10)
  206. #define PD10_AIN_SPI2_TXD (GPIO_GIUS | GPIO_PORTD | GPIO_OUT | 10)
  207. #define PD11_PF_CONTRAST (GPIO_PORTD | GPIO_OUT | GPIO_PF | 11)
  208. #define PD12_PF_ACD_OE (GPIO_PORTD | GPIO_OUT | GPIO_PF | 12)
  209. #define PD13_PF_LP_HSYNC (GPIO_PORTD | GPIO_OUT | GPIO_PF | 13)
  210. #define PD14_PF_FLM_VSYNC (GPIO_PORTD | GPIO_OUT | GPIO_PF | 14)
  211. #define PD15_PF_LD0 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 15)
  212. #define PD16_PF_LD1 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 16)
  213. #define PD17_PF_LD2 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 17)
  214. #define PD18_PF_LD3 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 18)
  215. #define PD19_PF_LD4 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 19)
  216. #define PD20_PF_LD5 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 20)
  217. #define PD21_PF_LD6 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 21)
  218. #define PD22_PF_LD7 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 22)
  219. #define PD23_PF_LD8 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 23)
  220. #define PD24_PF_LD9 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 24)
  221. #define PD25_PF_LD10 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 25)
  222. #define PD26_PF_LD11 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 26)
  223. #define PD27_PF_LD12 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 27)
  224. #define PD28_PF_LD13 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 28)
  225. #define PD29_PF_LD14 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 29)
  226. #define PD30_PF_LD15 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 30)
  227. #define PD31_PF_TMR2OUT (GPIO_PORTD | GPIO_PF | 31)
  228. #define PD31_BIN_SPI2_TXD (GPIO_GIUS | GPIO_PORTD | GPIO_BIN | 31)
  229. #endif
  230. #ifdef CONFIG_ARCH_MX2
  231. #define PA0_PF_USBH2_CLK (GPIO_PORTA | GPIO_PF | 0)
  232. #define PA1_PF_USBH2_DIR (GPIO_PORTA | GPIO_PF | 1)
  233. #define PA2_PF_USBH2_DATA7 (GPIO_PORTA | GPIO_PF | 2)
  234. #define PA3_PF_USBH2_NXT (GPIO_PORTA | GPIO_PF | 3)
  235. #define PA4_PF_USBH2_STP (GPIO_PORTA | GPIO_PF | 4)
  236. #define PA5_PF_LSCLK (GPIO_PORTA | GPIO_OUT | GPIO_PF | 5)
  237. #define PA6_PF_LD0 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 6)
  238. #define PA7_PF_LD1 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 7)
  239. #define PA8_PF_LD2 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 8)
  240. #define PA9_PF_LD3 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 9)
  241. #define PA10_PF_LD4 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 10)
  242. #define PA11_PF_LD5 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 11)
  243. #define PA12_PF_LD6 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 12)
  244. #define PA13_PF_LD7 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 13)
  245. #define PA14_PF_LD8 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 14)
  246. #define PA15_PF_LD9 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 15)
  247. #define PA16_PF_LD10 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 16)
  248. #define PA17_PF_LD11 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 17)
  249. #define PA18_PF_LD12 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 18)
  250. #define PA19_PF_LD13 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 19)
  251. #define PA20_PF_LD14 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 20)
  252. #define PA21_PF_LD15 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 21)
  253. #define PA22_PF_LD16 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 22)
  254. #define PA23_PF_LD17 (GPIO_PORTA | GPIO_OUT | GPIO_PF | 23)
  255. #define PA24_PF_REV (GPIO_PORTA | GPIO_OUT | GPIO_PF | 24)
  256. #define PA25_PF_CLS (GPIO_PORTA | GPIO_OUT | GPIO_PF | 25)
  257. #define PA26_PF_PS (GPIO_PORTA | GPIO_OUT | GPIO_PF | 26)
  258. #define PA27_PF_SPL_SPR (GPIO_PORTA | GPIO_OUT | GPIO_PF | 27)
  259. #define PA28_PF_HSYNC (GPIO_PORTA | GPIO_OUT | GPIO_PF | 28)
  260. #define PA29_PF_VSYNC (GPIO_PORTA | GPIO_OUT | GPIO_PF | 29)
  261. #define PA30_PF_CONTRAST (GPIO_PORTA | GPIO_OUT | GPIO_PF | 30)
  262. #define PA31_PF_OE_ACD (GPIO_PORTA | GPIO_OUT | GPIO_PF | 31)
  263. #define PB10_PF_CSI_D0 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 10)
  264. #define PB10_AF_UART6_TXD (GPIO_PORTB | GPIO_OUT | GPIO_AF | 10)
  265. #define PB11_PF_CSI_D1 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 11)
  266. #define PB11_AF_UART6_RXD (GPIO_PORTB | GPIO_IN | GPIO_AF | 11)
  267. #define PB12_PF_CSI_D2 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 12)
  268. #define PB12_AF_UART6_CTS (GPIO_PORTB | GPIO_OUT | GPIO_AF | 12)
  269. #define PB13_PF_CSI_D3 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 13)
  270. #define PB13_AF_UART6_RTS (GPIO_PORTB | GPIO_IN | GPIO_AF | 13)
  271. #define PB14_PF_CSI_D4 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 14)
  272. #define PB15_PF_CSI_MCLK (GPIO_PORTB | GPIO_OUT | GPIO_PF | 15)
  273. #define PB16_PF_CSI_PIXCLK (GPIO_PORTB | GPIO_OUT | GPIO_PF | 16)
  274. #define PB17_PF_CSI_D5 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 17)
  275. #define PB18_PF_CSI_D6 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 18)
  276. #define PB18_AF_UART5_TXD (GPIO_PORTB | GPIO_OUT | GPIO_AF | 18)
  277. #define PB19_PF_CSI_D7 (GPIO_PORTB | GPIO_OUT | GPIO_PF | 19)
  278. #define PB19_AF_UART5_RXD (GPIO_PORTB | GPIO_IN | GPIO_AF | 19)
  279. #define PB20_PF_CSI_VSYNC (GPIO_PORTB | GPIO_OUT | GPIO_PF | 20)
  280. #define PB20_AF_UART5_CTS (GPIO_PORTB | GPIO_OUT | GPIO_AF | 20)
  281. #define PB21_PF_CSI_HSYNC (GPIO_PORTB | GPIO_OUT | GPIO_PF | 21)
  282. #define PB21_AF_UART5_RTS (GPIO_PORTB | GPIO_IN | GPIO_AF | 21)
  283. #define PB22_PF_USBH1_SUSP (GPIO_PORTB | GPIO_PF | 22)
  284. #define PB23_PF_USB_PWR (GPIO_PORTB | GPIO_PF | 23)
  285. #define PB24_PF_USB_OC_B (GPIO_PORTB | GPIO_PF | 24)
  286. #define PB25_PF_USBH1_RCV (GPIO_PORTB | GPIO_PF | 25)
  287. #define PB26_PF_USBH1_FS (GPIO_PORTB | GPIO_PF | 26)
  288. #define PB27_PF_USBH1_OE_B (GPIO_PORTB | GPIO_PF | 27)
  289. #define PB28_PF_USBH1_TXDM (GPIO_PORTB | GPIO_PF | 28)
  290. #define PB29_PF_USBH1_TXDP (GPIO_PORTB | GPIO_PF | 29)
  291. #define PB30_PF_USBH1_RXDM (GPIO_PORTB | GPIO_PF | 30)
  292. #define PB31_PF_USBH1_RXDP (GPIO_PORTB | GPIO_PF | 31)
  293. #define PB26_AF_UART4_RTS (GPIO_PORTB | GPIO_IN | GPIO_PF | 26)
  294. #define PB28_AF_UART4_TXD (GPIO_PORTB | GPIO_OUT | GPIO_AF | 28)
  295. #define PB29_AF_UART4_CTS (GPIO_PORTB | GPIO_OUT | GPIO_AF | 29)
  296. #define PB31_AF_UART4_RXD (GPIO_PORTB | GPIO_IN | GPIO_AF | 31)
  297. #define PC5_PF_I2C2_SDA (GPIO_PORTC | GPIO_IN | GPIO_PF | 5)
  298. #define PC6_PF_I2C2_SCL (GPIO_PORTC | GPIO_IN | GPIO_PF | 6)
  299. #define PC16_PF_SSI4_FS (GPIO_PORTC | GPIO_IN | GPIO_PF | 16)
  300. #define PC17_PF_SSI4_RXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 17)
  301. #define PC18_PF_SSI4_TXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 18)
  302. #define PC19_PF_SSI4_CLK (GPIO_PORTC | GPIO_IN | GPIO_PF | 19)
  303. #define PC20_PF_SSI1_FS (GPIO_PORTC | GPIO_IN | GPIO_PF | 20)
  304. #define PC21_PF_SSI1_RXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 21)
  305. #define PC22_PF_SSI1_TXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 22)
  306. #define PC23_PF_SSI1_CLK (GPIO_PORTC | GPIO_IN | GPIO_PF | 23)
  307. #define PC24_PF_SSI2_FS (GPIO_PORTC | GPIO_IN | GPIO_PF | 24)
  308. #define PC25_PF_SSI2_RXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 25)
  309. #define PC26_PF_SSI2_TXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 26)
  310. #define PC27_PF_SSI2_CLK (GPIO_PORTC | GPIO_IN | GPIO_PF | 27)
  311. #define PC28_PF_SSI3_FS (GPIO_PORTC | GPIO_IN | GPIO_PF | 28)
  312. #define PC29_PF_SSI3_RXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 29)
  313. #define PC30_PF_SSI3_TXD (GPIO_PORTC | GPIO_IN | GPIO_PF | 30)
  314. #define PC31_PF_SSI3_CLK (GPIO_PORTC | GPIO_IN | GPIO_PF | 31)
  315. #define PD0_AIN_FEC_TXD0 (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 0)
  316. #define PD1_AIN_FEC_TXD1 (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 1)
  317. #define PD2_AIN_FEC_TXD2 (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 2)
  318. #define PD3_AIN_FEC_TXD3 (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 3)
  319. #define PD4_AOUT_FEC_RX_ER (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 4)
  320. #define PD5_AOUT_FEC_RXD1 (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 5)
  321. #define PD6_AOUT_FEC_RXD2 (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 6)
  322. #define PD7_AOUT_FEC_RXD3 (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 7)
  323. #define PD8_AF_FEC_MDIO (GPIO_PORTD | GPIO_IN | GPIO_AF | 8)
  324. #define PD9_AIN_FEC_MDC (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 9)
  325. #define PD10_AOUT_FEC_CRS (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 10)
  326. #define PD11_AOUT_FEC_TX_CLK (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 11)
  327. #define PD12_AOUT_FEC_RXD0 (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 12)
  328. #define PD13_AOUT_FEC_RX_DV (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 13)
  329. #define PD14_AOUT_FEC_CLR (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 14)
  330. #define PD15_AOUT_FEC_COL (GPIO_PORTD | GPIO_IN | GPIO_AOUT | 15)
  331. #define PD16_AIN_FEC_TX_ER (GPIO_PORTD | GPIO_OUT | GPIO_AIN | 16)
  332. #define PD17_PF_I2C_DATA (GPIO_PORTD | GPIO_OUT | GPIO_PF | 17)
  333. #define PD18_PF_I2C_CLK (GPIO_PORTD | GPIO_OUT | GPIO_PF | 18)
  334. #define PD19_AF_USBH2_DATA4 (GPIO_PORTD | GPIO_AF | 19)
  335. #define PD20_AF_USBH2_DATA3 (GPIO_PORTD | GPIO_AF | 20)
  336. #define PD21_AF_USBH2_DATA6 (GPIO_PORTD | GPIO_AF | 21)
  337. #define PD22_AF_USBH2_DATA0 (GPIO_PORTD | GPIO_AF | 22)
  338. #define PD23_AF_USBH2_DATA2 (GPIO_PORTD | GPIO_AF | 23)
  339. #define PD24_AF_USBH2_DATA1 (GPIO_PORTD | GPIO_AF | 24)
  340. #define PD25_PF_CSPI1_RDY (GPIO_PORTD | GPIO_OUT | GPIO_PF | 25)
  341. #define PD26_PF_CSPI1_SS2 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 26)
  342. #define PD26_AF_USBH2_DATA5 (GPIO_PORTD | GPIO_AF | 26)
  343. #define PD27_PF_CSPI1_SS1 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 27)
  344. #define PD28_PF_CSPI1_SS0 (GPIO_PORTD | GPIO_OUT | GPIO_PF | 28)
  345. #define PD29_PF_CSPI1_SCLK (GPIO_PORTD | GPIO_OUT | GPIO_PF | 29)
  346. #define PD30_PF_CSPI1_MISO (GPIO_PORTD | GPIO_IN | GPIO_PF | 30)
  347. #define PD31_PF_CSPI1_MOSI (GPIO_PORTD | GPIO_OUT | GPIO_PF | 31)
  348. #define PF23_AIN_FEC_TX_EN (GPIO_PORTF | GPIO_OUT | GPIO_AIN | 23)
  349. #define PE3_PF_UART2_CTS (GPIO_PORTE | GPIO_OUT | GPIO_PF | 3)
  350. #define PE4_PF_UART2_RTS (GPIO_PORTE | GPIO_IN | GPIO_PF | 4)
  351. #define PE6_PF_UART2_TXD (GPIO_PORTE | GPIO_OUT | GPIO_PF | 6)
  352. #define PE7_PF_UART2_RXD (GPIO_PORTE | GPIO_IN | GPIO_PF | 7)
  353. #define PE8_PF_UART3_TXD (GPIO_PORTE | GPIO_OUT | GPIO_PF | 8)
  354. #define PE9_PF_UART3_RXD (GPIO_PORTE | GPIO_IN | GPIO_PF | 9)
  355. #define PE10_PF_UART3_CTS (GPIO_PORTE | GPIO_OUT | GPIO_PF | 10)
  356. #define PE11_PF_UART3_RTS (GPIO_PORTE | GPIO_IN | GPIO_PF | 11)
  357. #define PE12_PF_UART1_TXD (GPIO_PORTE | GPIO_OUT | GPIO_PF | 12)
  358. #define PE13_PF_UART1_RXD (GPIO_PORTE | GPIO_IN | GPIO_PF | 13)
  359. #define PE14_PF_UART1_CTS (GPIO_PORTE | GPIO_OUT | GPIO_PF | 14)
  360. #define PE15_PF_UART1_RTS (GPIO_PORTE | GPIO_IN | GPIO_PF | 15)
  361. #define PE16_AF_RTCK (GPIO_PORTE | GPIO_OUT | GPIO_AF | 16)
  362. #define PE16_PF_RTCK (GPIO_PORTE | GPIO_OUT | GPIO_PF | 16)
  363. #define PE18_AF_CSPI3_MISO (GPIO_PORTE | GPIO_IN | GPIO_AF | 18)
  364. #define PE21_AF_CSPI3_SS (GPIO_PORTE | GPIO_OUT | GPIO_AF | 21)
  365. #define PE22_AF_CSPI3_MOSI (GPIO_PORTE | GPIO_OUT | GPIO_AF | 22)
  366. #define PE23_AF_CSPI3_SCLK (GPIO_PORTE | GPIO_OUT | GPIO_AF | 23)
  367. #endif
  368. /* decode irq number to use with IMR(x), ISR(x) and friends */
  369. #define IRQ_TO_REG(irq) ((irq - MXC_MAX_INT_LINES) >> 5)
  370. #define IRQ_GPIOA(x) (MXC_MAX_INT_LINES + x)
  371. #define IRQ_GPIOB(x) (IRQ_GPIOA(32) + x)
  372. #define IRQ_GPIOC(x) (IRQ_GPIOB(32) + x)
  373. #define IRQ_GPIOD(x) (IRQ_GPIOC(32) + x)
  374. #endif /* _MXC_GPIO_MX1_MX2_H */