ASoC: TWL4030: Add actual support for 96KHz playback support
[sfrench/cifs-2.6.git] / arch / arm / plat-mxc / include / mach / iomux-mx1-mx2.h
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
19 #ifndef _MXC_GPIO_MX1_MX2_H
20 #define _MXC_GPIO_MX1_MX2_H
21
22 #include <linux/io.h>
23
24 /*
25  *  GPIO Module and I/O Multiplexer
26  *  x = 0..3 for reg_A, reg_B, reg_C, reg_D
27  */
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))
46
47 #ifdef CONFIG_ARCH_MX1
48 # define GPIO_PORT_MAX  3
49 #endif
50 #ifdef CONFIG_ARCH_MX2
51 # define GPIO_PORT_MAX  5
52 #endif
53
54 #ifndef GPIO_PORT_MAX
55 # error "GPIO config port count unknown!"
56 #endif
57
58 #define GPIO_PIN_MASK 0x1f
59
60 #define GPIO_PORT_SHIFT 5
61 #define GPIO_PORT_MASK (0x7 << GPIO_PORT_SHIFT)
62
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)
69
70 #define GPIO_OUT   (1 << 8)
71 #define GPIO_IN    (0 << 8)
72 #define GPIO_PUEN  (1 << 9)
73
74 #define GPIO_PF    (1 << 10)
75 #define GPIO_AF    (1 << 11)
76
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)
83
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)
90
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)
97
98 extern void mxc_gpio_mode(int gpio_mode);
99 extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
100                                         const char *label);
101 extern void mxc_gpio_release_multiple_pins(const int *pin_list, int count);
102
103 /*-------------------------------------------------------------------------*/
104
105 /* assignements for GPIO alternate/primary functions */
106
107 /* FIXME: This list is not completed. The correct directions are
108  * missing on some (many) pins
109  */
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)
242 #endif
243
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)
405 #endif
406
407 /* decode irq number to use with IMR(x), ISR(x) and friends */
408 #define IRQ_TO_REG(irq) ((irq - MXC_INTERNAL_IRQS) >> 5)
409
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)
415
416 #endif /* _MXC_GPIO_MX1_MX2_H */