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