summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mxs/include/mach/iomux-imx23.h
blob: 82362d7d16d6185dcf5cbc5bf1ab4dd74b75aacb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
/*
 * (C) Copyright 2010 Juergen Beisert - Pengutronix
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301, USA.
 */

/* 3322222222221111111111
 * 10987654321098765432109876543210
 *                              ^^^_ Register Number
 *                          ^^^^____ Bit offset
 *                        ^^________ Function
 *                       ^__________ Drive strength feature present
 *                      ^___________ Pull up present
 *                    ^^____________ Drive strength setting
 *                   ^______________ Pull up / bit keeper setting
 *                  ^_______________ Voltage select present
 *                 ^________________ Voltage selection
 *             ^____________________ direction if enabled as GPIO (1 = output)
 *            ^_____________________ initial output value if enabled as GPIO and configured as output
 *           ^______________________ Bit keeper present
 */
#ifndef __ASM_MACH_IOMUX_H
#define __ASM_MACH_IOMUX_H

/* control pad's function */
#define FBIT_SHIFT (3)
#define PORTF(bank,bit)	(((bit) << FBIT_SHIFT) | (bank))
#define GET_PORTF(x) ((x) & 0x7)
#define GET_FBITPOS(x) (((x) >> FBIT_SHIFT) & 0xf)
#define GET_GPIO_NO(x) ((GET_PORTF(x) << 4) + GET_FBITPOS(m))
#define FUNC_SHIFT 7
#define FUNC(x)	((x) << FUNC_SHIFT)
#define GET_FUNC(x) (((x) >> FUNC_SHIFT) & 3)
#define IS_GPIO (3)

/* control pad's GPIO feature if enabled */
#define GPIO_OUT (1 << 19)
#define GPIO_VALUE(x) ((x) << 20)
#define GPIO_IN (0 << 19)
#define GET_GPIODIR(x) (!!((x) & (1 << 19)))
#define GET_GPIOVAL(x) (!!((x) & (1 << 20)))

/* control pad's drive strength */
#define SE (1 << 9)
#define SE_PRESENT(x) (!!((x) & SE))
#define STRENGTH(x) ((x) << 11)
#define S4MA 0	/* used to define a 4 mA drive strength */
#define S8MA 1	/* used to define a 8 mA drive strength */
#define S12MA 2	/* used to define a 12 mA drive strength */
#define S16MA 3	/* used to define a 16 mA drive strength, not all pads can drive this current! */
#define GET_STRENGTH(x) (((x) >> 11) & 0x3)

/* control pad's pull up / bit keeper feature */
#define PE (1 << 10)
#define BK (1 << 21)
#define PE_PRESENT(x) (!!((x) & PE))
#define BK_PRESENT(x) (!!((x) & BK))
#define PULLUP(x) ((x) << 13)
#define BITKEEPER(x) ((x) << 14)
#define GET_PULLUP(x) (!!((x) & (1 << 13)))
#define GET_BITKEEPER(x) (!!((x) & BITKEEPER(1)))

/* control pad's voltage feature */
#define VE (1 << 14)
#define VE_PRESENT(x) (!!((x) & VE))
#define VE_1_8V (0 << 15)
#define VE_2_5V (0 << 15) /* don't ask my why, RTFM */
#define GET_VOLTAGE(x) (!!((x) & (1 << 15)))

/* Bank 0, pins 0 ... 15, GPIO pins 0 ... 15 */
#define GPMI_D15		(FUNC(0) | PORTF(0, 15) | SE | PE)
#define GPMI_D15_AUART2_TX	(FUNC(1) | PORTF(0, 15) | SE | PE)
#define GPMI_D15_GPMI_CE3N	(FUNC(2) | PORTF(0, 15) | SE | PE)
#define GPMI_D15_GPIO		(FUNC(3) | PORTF(0, 15) | SE | PE)
#define GPMI_D14		(FUNC(0) | PORTF(0, 14) | SE)
#define GPMI_D14_AUART2_RX	(FUNC(1) | PORTF(0, 14) | SE)
#define GPMI_D14_GPIO		(FUNC(3) | PORTF(0, 14) | SE)
#define GPMI_D13		(FUNC(0) | PORTF(0, 13) | SE)
#define GPMI_D13_LCD_D23	(FUNC(1) | PORTF(0, 13) | SE)
#define GPMI_D13_GPIO		(FUNC(3) | PORTF(0, 13) | SE)
#define GPMI_D12		(FUNC(0) | PORTF(0, 12) | SE)
#define GPMI_D12_LCD_D22	(FUNC(1) | PORTF(0, 12) | SE)
#define GPMI_D12_GPIO		(FUNC(3) | PORTF(0, 12) | SE)
#define GPMI_D11		(FUNC(0) | PORTF(0, 11) | SE | PE)
#define GPMI_D11_LCD_D21	(FUNC(1) | PORTF(0, 11) | SE | PE)
#define GPMI_D11_SSP1_D7	(FUNC(2) | PORTF(0, 11) | SE | PE)
#define GPMI_D11_GPIO		(FUNC(3) | PORTF(0, 11) | SE | PE)
#define GPMI_D10		(FUNC(0) | PORTF(0, 10) | SE | PE)
#define GPMI_D10_LCD_D20	(FUNC(1) | PORTF(0, 10) | SE | PE)
#define GPMI_D10_SSP1_D6	(FUNC(2) | PORTF(0, 10) | SE | PE)
#define GPMI_D10_GPIO		(FUNC(3) | PORTF(0, 10) | SE | PE)
#define GPMI_D09		(FUNC(0) | PORTF(0, 9) | SE | PE)
#define GPMI_D09_LCD_D19	(FUNC(1) | PORTF(0, 9) | SE | PE)
#define GPMI_D09_SSP1_D5	(FUNC(2) | PORTF(0, 9) | SE | PE)
#define GPMI_D09_GPIO		(FUNC(3) | PORTF(0, 9) | SE | PE)
#define GPMI_D08		(FUNC(0) | PORTF(0, 8) | SE | PE)
#define GPMI_D08_LCD_D18	(FUNC(1) | PORTF(0, 8) | SE | PE)
#define GPMI_D08_SSP1_D4	(FUNC(2) | PORTF(0, 8) | SE | PE)
#define GPMI_D08_GPIO		(FUNC(3) | PORTF(0, 8) | SE | PE)
#define GPMI_D07		(FUNC(0) | PORTF(0, 7) | SE | PE)
#define GPMI_D07_LCD_D15	(FUNC(1) | PORTF(0, 7) | SE | PE)
#define GPMI_D07_SSP2_D7	(FUNC(2) | PORTF(0, 7) | SE | PE)
#define GPMI_D07_GPIO		(FUNC(3) | PORTF(0, 7) | SE | PE)
#define GPMI_D06		(FUNC(0) | PORTF(0, 6) | SE | PE)
#define GPMI_D06_LCD_D14	(FUNC(1) | PORTF(0, 6) | SE | PE)
#define GPMI_D06_SSP2_D6	(FUNC(2) | PORTF(0, 6) | SE | PE)
#define GPMI_D06_GPIO		(FUNC(3) | PORTF(0, 6) | SE | PE)
#define GPMI_D05		(FUNC(0) | PORTF(0, 5) | SE | PE)
#define GPMI_D05_LCD_D13	(FUNC(1) | PORTF(0, 5) | SE | PE)
#define GPMI_D05_SSP2_D5	(FUNC(2) | PORTF(0, 5) | SE | PE)
#define GPMI_D05_GPIO		(FUNC(3) | PORTF(0, 5) | SE | PE)
#define GPMI_D04		(FUNC(0) | PORTF(0, 4) | SE | PE)
#define GPMI_D04_LCD_D12	(FUNC(1) | PORTF(0, 4) | SE | PE)
#define GPMI_D04_SSP2_D4	(FUNC(2) | PORTF(0, 4) | SE | PE)
#define GPMI_D04_GPIO		(FUNC(3) | PORTF(0, 4) | SE | PE)
#define GPMI_D03		(FUNC(0) | PORTF(0, 3) | SE | PE)
#define GPMI_D03_LCD_D11	(FUNC(1) | PORTF(0, 3) | SE | PE)
#define GPMI_D03_SSP2_D3	(FUNC(2) | PORTF(0, 3) | SE | PE)
#define GPMI_D03_GPIO		(FUNC(3) | PORTF(0, 3) | SE | PE)
#define GPMI_D02		(FUNC(0) | PORTF(0, 2) | SE | PE)
#define GPMI_D02_LCD_D10	(FUNC(1) | PORTF(0, 2) | SE | PE)
#define GPMI_D02_SSP2_D2	(FUNC(2) | PORTF(0, 2) | SE | PE)
#define GPMI_D02_GPIO		(FUNC(3) | PORTF(0, 2) | SE | PE)
#define GPMI_D01		(FUNC(0) | PORTF(0, 1) | SE | PE)
#define GPMI_D01_LCD_D9		(FUNC(1) | PORTF(0, 1) | SE | PE)
#define GPMI_D01_SSP2_D1	(FUNC(2) | PORTF(0, 1) | SE | PE)
#define GPMI_D01_GPIO		(FUNC(3) | PORTF(0, 1) | SE | PE)
#define GPMI_D00		(FUNC(0) | PORTF(0, 0) | SE | PE)
#define GPMI_D00_LCD_D8		(FUNC(1) | PORTF(0, 0) | SE | PE)
#define GPMI_D00_SSP2_D0	(FUNC(2) | PORTF(0, 0) | SE | PE)
#define GPMI_D00_GPIO		(FUNC(3) | PORTF(0, 0) | SE | PE)

/* Bank 0, pins 16 ... 31 GPIO pins 16 ... 31 */
#define I2C_SDA			(FUNC(0) | PORTF(1, 15) | SE)
#define I2C_SDA_GPMI_CE2N	(FUNC(1) | PORTF(1, 15) | SE)
#define I2C_SDA_AUART1_RX	(FUNC(2) | PORTF(1, 15) | SE)
#define I2C_SDA_GPIO		(FUNC(3) | PORTF(1, 15) | SE)
#define I2C_CLK			(FUNC(0) | PORTF(1, 14) | SE | PE)
#define I2C_CLK_GPMI_RDY2	(FUNC(1) | PORTF(1, 14) | SE | PE)
#define I2C_CLK_AUART1_TX	(FUNC(2) | PORTF(1, 14) | SE | PE)
#define I2C_CLK_GPIO		(FUNC(3) | PORTF(1, 14) | SE | PE)
#define AUART1_TX		(FUNC(0) | PORTF(1, 13) | SE | PE)
#define AUART1_TX_SSP1_D7	(FUNC(2) | PORTF(1, 13) | SE | PE)
#define AUART1_TX_GPIO		(FUNC(3) | PORTF(1, 13) | SE | PE)
#define AUART1_RX		(FUNC(0) | PORTF(1, 12) | SE | PE)
#define AUART1_RX_SSP1_D6	(FUNC(2) | PORTF(1, 12) | SE | PE)
#define AUART1_RX_GPIO		(FUNC(3) | PORTF(1, 12) | SE | PE)
#define AUART1_RTS		(FUNC(0) | PORTF(1, 11) | SE | PE)
#define AUART1_RTS_SSP1_D5	(FUNC(2) | PORTF(1, 11) | SE | PE)
#define AUART1_RTS_GPIO		(FUNC(3) | PORTF(1, 11) | SE | PE)
#define AUART1_CTS		(FUNC(0) | PORTF(1, 10) | SE | PE)
#define AUART1_CTS_SSP1_D4	(FUNC(2) | PORTF(1, 10) | SE | PE)
#define AUART1_CTS_GPIO		(FUNC(3) | PORTF(1, 10) | SE | PE)
#define GPMI_RDN		(FUNC(0) | PORTF(1, 9) | SE)
#define GPMI_RDN_GPIO		(FUNC(3) | PORTF(1, 9) | SE)
#define GPMI_WRN		(FUNC(0) | PORTF(1, 8) | SE)
#define GPMI_WRN_SSP2_SCK	(FUNC(2) | PORTF(1, 8) | SE)
#define GPMI_WRN_GPIO		(FUNC(3) | PORTF(1, 8) | SE)
#define GPMI_WPM		(FUNC(0) | PORTF(1, 7) | SE)
#define GPMI_WPM_GPIO		(FUNC(3) | PORTF(1, 7) | SE)
#define GPMI_RDY3		(FUNC(0) | PORTF(1, 6) | SE | PE)
#define GPMI_RDY3_GPIO		(FUNC(3) | PORTF(1, 6) | SE | PE)
#define GPMI_RDY2		(FUNC(0) | PORTF(1, 5) | SE | PE)
#define GPMI_RDY2_GPIO		(FUNC(3) | PORTF(1, 5) | SE | PE)
#define GPMI_RDY1		(FUNC(0) | PORTF(1, 4) | SE | PE)
#define GPMI_RDY1_SSP2_CMD	(FUNC(2) | PORTF(1, 4) | SE | PE)
#define GPMI_RDY1_GPIO		(FUNC(3) | PORTF(1, 4) | SE | PE)
#define GPMI_RDY0		(FUNC(0) | PORTF(1, 3) | SE | PE)
#define GPMI_RDY0_SSP2_DETECT	(FUNC(2) | PORTF(1, 3) | SE | PE)
#define GPMI_RDY0_GPIO		(FUNC(3) | PORTF(1, 3) | SE | PE)
#define GPMI_CE2N		(FUNC(0) | PORTF(1, 2) | SE | PE)
#define GPMI_CE2N_GPIO		(FUNC(3) | PORTF(1, 2) | SE | PE)
#define GPMI_ALE		(FUNC(0) | PORTF(1, 1) | SE)
#define GPMI_ALE_LCD_D17	(FUNC(1) | PORTF(1, 1) | SE)
#define GPMI_ALE_GPIO		(FUNC(3) | PORTF(1, 1) | SE)
#define GPMI_CLE		(FUNC(0) | PORTF(1, 0) | SE)
#define GPMI_CLE_LCD_D16	(FUNC(1) | PORTF(1, 1) | SE)
#define GPMI_CLE_GPIO		(FUNC(3) | PORTF(1, 0) | SE)

/* Bank 1, pins 0 ... 15 GPIO pins 32 ... 47 */
#define LCD_D15			(FUNC(0) | PORTF(2, 15) | SE)
#define LCD_D15_ETM_DA7		(FUNC(1) | PORTF(2, 15) | SE)
#define LCD_D15_SAIF1_SDATA1	(FUNC(2) | PORTF(2, 15) | SE)
#define LCD_D15_GPIO		(FUNC(3) | PORTF(2, 15) | SE)
#define LCD_D14			(FUNC(0) | PORTF(2, 14) | SE)
#define LCD_D14_ETM_DA6		(FUNC(1) | PORTF(2, 14) | SE)
#define LCD_D14_SAIF1_SDATA2	(FUNC(2) | PORTF(2, 14) | SE)
#define LCD_D14_GPIO		(FUNC(3) | PORTF(2, 14) | SE)
#define LCD_D13			(FUNC(0) | PORTF(2, 13) | SE)
#define LCD_D13_ETM_DA5		(FUNC(1) | PORTF(2, 13) | SE)
#define LCD_D13_SAIF2_SDATA2	(FUNC(2) | PORTF(2, 13) | SE)
#define LCD_D13_GPIO		(FUNC(3) | PORTF(2, 13) | SE)
#define LCD_D12			(FUNC(0) | PORTF(2, 12) | SE)
#define LCD_D12_ETM_DA4		(FUNC(1) | PORTF(2, 12) | SE)
#define LCD_D12_SAIF2_SDATA1	(FUNC(2) | PORTF(2, 12) | SE)
#define LCD_D12_GPIO		(FUNC(3) | PORTF(2, 12) | SE)
#define LCD_D11			(FUNC(0) | PORTF(2, 11) | SE)
#define LCD_D11_ETM_DA3		(FUNC(1) | PORTF(2, 11) | SE)
#define LCD_D11_SAIF_LRCLK	(FUNC(2) | PORTF(2, 11) | SE)
#define LCD_D11_GPIO		(FUNC(3) | PORTF(2, 11) | SE)
#define LCD_D10			(FUNC(0) | PORTF(2, 10) | SE)
#define LCD_D10_ETM_DA2		(FUNC(1) | PORTF(2, 10) | SE)
#define LCD_D10_SAIF_BITCLK	(FUNC(2) | PORTF(2, 10) | SE)
#define LCD_D10_GPIO		(FUNC(3) | PORTF(2, 10) | SE)
#define LCD_D9			(FUNC(0) | PORTF(2, 9) | SE)
#define LCD_D9_ETM_DA1		(FUNC(1) | PORTF(2, 9) | SE)
#define LCD_D9_SAIF1_SDATA0	(FUNC(2) | PORTF(2, 9) | SE)
#define LCD_D9_GPIO		(FUNC(3) | PORTF(2, 9) | SE)
#define LCD_D8			(FUNC(0) | PORTF(2, 8) | SE)
#define LCD_D8_ETM_DA0		(FUNC(1) | PORTF(2, 8) | SE)
#define LCD_D8_SAIF2_SDATA0	(FUNC(2) | PORTF(2, 8) | SE)
#define LCD_D8_GPIO		(FUNC(3) | PORTF(2, 8) | SE)
#define LCD_D7			(FUNC(0) | PORTF(2, 7) | SE)
#define LCD_D7_ETM_DA15		(FUNC(1) | PORTF(2, 7) | SE)
#define LCD_D7_GPIO		(FUNC(3) | PORTF(2, 7) | SE)
#define LCD_D6			(FUNC(0) | PORTF(2, 6) | SE)
#define LCD_D6_ETM_DA14		(FUNC(1) | PORTF(2, 6) | SE)
#define LCD_D6_GPIO		(FUNC(3) | PORTF(2, 6) | SE)
#define LCD_D5			(FUNC(0) | PORTF(2, 5) | SE)
#define LCD_D5_ETM_DA13		(FUNC(1) | PORTF(2, 5) | SE)
#define LCD_D5_GPIO		(FUNC(3) | PORTF(2, 5) | SE)
#define LCD_D4			(FUNC(0) | PORTF(2, 4) | SE)
#define LCD_D4_ETM_DA12		(FUNC(1) | PORTF(2, 4) | SE)
#define LCD_D4_GPIO		(FUNC(3) | PORTF(2, 4) | SE)
#define LCD_D3			(FUNC(0) | PORTF(2, 3) | SE)
#define LCD_D3_ETM_DA11		(FUNC(1) | PORTF(2, 3) | SE)
#define LCD_D3_GPIO		(FUNC(3) | PORTF(2, 3) | SE)
#define LCD_D2			(FUNC(0) | PORTF(2, 2) | SE)
#define LCD_D2_ETM_DA10		(FUNC(1) | PORTF(2, 2) | SE)
#define LCD_D2_GPIO		(FUNC(3) | PORTF(2, 2) | SE)
#define LCD_D1			(FUNC(0) | PORTF(2, 1) | SE)
#define LCD_D1_ETM_DA9		(FUNC(1) | PORTF(2, 1) | SE)
#define LCD_D1_GPIO		(FUNC(3) | PORTF(2, 1) | SE)
#define LCD_D0			(FUNC(0) | PORTF(2, 0) | SE)
#define LCD_D0_ETM_DA8		(FUNC(1) | PORTF(2, 0) | SE)
#define LCD_D0_GPIO		(FUNC(3) | PORTF(2, 0) | SE)

/* Bank 1, pins 16 ... 30 GPIO pins 48 ... 63 */
#define PWM4			(FUNC(0) | PORTF(3, 14) | SE)
#define PWM4_ETM_CLK		(FUNC(1) | PORTF(3, 14) | SE)
#define PWM4_AUART1_RTS		(FUNC(2) | PORTF(3, 14) | SE)
#define PWM4_GPIO		(FUNC(3) | PORTF(3, 14) | SE)
#define PWM3			(FUNC(0) | PORTF(3, 13) | SE)
#define PWM3_ETM_TCTL		(FUNC(1) | PORTF(3, 13) | SE)
#define PWM3_AUART1_CTS		(FUNC(2) | PORTF(3, 13) | SE)
#define PWM3_GPIO		(FUNC(3) | PORTF(3, 13) | SE)
#define PWM2			(FUNC(0) | PORTF(3, 12) | SE | PE)
#define PWM2_GPMI_READY3	(FUNC(1) | PORTF(3, 12) | SE | PE)
#define PWM2_GPIO		(FUNC(3) | PORTF(3, 12) | SE | PE)
#define PWM1			(FUNC(0) | PORTF(3, 11) | SE)
#define PWM1_TIMROT2		(FUNC(1) | PORTF(3, 11) | SE)
#define PWM1_DUART_TX		(FUNC(2) | PORTF(3, 11) | SE)
#define PWM1_GPIO		(FUNC(3) | PORTF(3, 11) | SE)
#define PWM0			(FUNC(0) | PORTF(3, 10) | SE)
#define PWM0_TIMROT1		(FUNC(1) | PORTF(3, 10) | SE)
#define PWM0_DUART_RX		(FUNC(2) | PORTF(3, 10) | SE)
#define PWM0_GPIO		(FUNC(3) | PORTF(3, 10) | SE)
#define LCD_VSYNC		(FUNC(0) | PORTF(3, 9) | SE)
#define LCD_VSYNC_LCD_BUSY	(FUNC(1) | PORTF(3, 9) | SE)
#define LCD_VSYNC_GPIO		(FUNC(3) | PORTF(3, 9) | SE)
#define LCD_HSYNC		(FUNC(0) | PORTF(3, 8) | SE)
#define LCD_HSYNC_I2C_SD	(FUNC(1) | PORTF(3, 8) | SE)
#define LCD_HSYNC_GPIO		(FUNC(3) | PORTF(3, 8) | SE)
#define LCD_ENABE		(FUNC(0) | PORTF(3, 7) | SE)
#define LCD_ENABE_I2C_CLK	(FUNC(1) | PORTF(3, 7) | SE)
#define LCD_ENABE_GPIO		(FUNC(3) | PORTF(3, 7) | SE)
#define LCD_DOTCLOCK		(FUNC(0) | PORTF(3, 6) | SE | PE)
#define LCD_DOTCLOCK_GPMI_READY3 (FUNC(1) | PORTF(3, 6) | SE | PE)
#define LCD_DOTCLOCK_GPIO	(FUNC(3) | PORTF(3, 6) | SE | PE)
#define LCD_CS			(FUNC(0) | PORTF(3, 5) | SE)
#define LCD_CS_GPIO		(FUNC(3) | PORTF(3, 5) | SE)
#define LCD_WR			(FUNC(0) | PORTF(3, 4) | SE)
#define LCD_WR_GPIO		(FUNC(3) | PORTF(3, 4) | SE)
#define LCD_RS			(FUNC(0) | PORTF(3, 3) | SE)
#define LCD_RS_ETM_TCLK		(FUNC(1) | PORTF(3, 3) | SE)
#define LCD_RS_GPIO		(FUNC(3) | PORTF(3, 3) | SE)
#define LCD_RESET		(FUNC(0) | PORTF(3, 2) | SE | PE)
#define LCD_RESET_ETM_TCTL	(FUNC(1) | PORTF(3, 2) | SE | PE)
#define LCD_RESET_GPMI_CE3N	(FUNC(2) | PORTF(3, 2) | SE | PE)
#define LCD_RESET_GPIO		(FUNC(3) | PORTF(3, 2) | SE | PE)
#define LCD_D17			(FUNC(0) | PORTF(3, 1) | SE)
#define LCD_D17_GPIO		(FUNC(3) | PORTF(3, 1) | SE)
#define LCD_D16			(FUNC(0) | PORTF(3, 0) | SE)
#define LCD_D16_SAIF_ALT_BITCLK	(FUNC(2) | PORTF(3, 0) | SE)
#define LCD_D16_GPIO		(FUNC(3) | PORTF(3, 0) | SE)

/* Bank 2, pins 0 ... 15 GPIO pins 64 ... 79 */
#define EMI_A6			(FUNC(0) | PORTF(4, 15) | SE | VE)
#define EMI_A6_GPIO		(FUNC(3) | PORTF(4, 15) | SE | VE)
#define EMI_A5			(FUNC(0) | PORTF(4, 14) | SE | VE)
#define EMI_A5_GPIO		(FUNC(3) | PORTF(4, 14) | SE | VE)
#define EMI_A4			(FUNC(0) | PORTF(4, 13) | SE | VE)
#define EMI_A4_GPIO		(FUNC(3) | PORTF(4, 13) | SE | VE)
#define EMI_A3			(FUNC(0) | PORTF(4, 12) | SE | VE)
#define EMI_A3_GPIO		(FUNC(3) | PORTF(4, 12) | SE | VE)
#define EMI_A2			(FUNC(0) | PORTF(4, 11) | SE | VE)
#define EMI_A2_GPIO		(FUNC(3) | PORTF(4, 11) | SE | VE)
#define EMI_A1			(FUNC(0) | PORTF(4, 10) | SE | VE)
#define EMI_A1_GPIO		(FUNC(3) | PORTF(4, 10) | SE | VE)
#define EMI_A0			(FUNC(0) | PORTF(4, 9) | SE | VE)
#define EMI_A0_GPIO		(FUNC(3) | PORTF(4, 9) | SE | VE)
#define ROTARYB			(FUNC(0) | PORTF(4, 8) | SE | PE)
#define ROTARYB_AUART2_CTS	(FUNC(1) | PORTF(4, 8) | SE | PE)
#define ROTARYB_GPMI_CE3N	(FUNC(2) | PORTF(4, 8) | SE | PE)
#define ROTARYB_GPIO		(FUNC(3) | PORTF(4, 8) | SE | PE)
#define ROTARYA			(FUNC(0) | PORTF(4, 7) | SE)
#define ROTARYA_AUART2_RTS	(FUNC(1) | PORTF(4, 7) | SE)
#define ROTARYA_SPDIF		(FUNC(2) | PORTF(4, 7) | SE)
#define ROTARYA_GPIO		(FUNC(3) | PORTF(4, 7) | SE)
#define SSP1_SCK		(FUNC(0) | PORTF(4, 6) | SE)
#define SSP1_SCK_ALT_JTAG_TRST	(FUNC(2) | PORTF(4, 6) | SE)
#define SSP1_SCK_GPIO		(FUNC(3) | PORTF(4, 6) | SE)
#define SSP1_DATA3		(FUNC(0) | PORTF(4, 5) | SE | PE)
#define SSP1_DATA3_ALT_JTAG_TMS	(FUNC(2) | PORTF(4, 5) | SE | PE)
#define SSP1_DATA3_GPIO		(FUNC(3) | PORTF(4, 5) | SE | PE)
#define SSP1_DATA2		(FUNC(0) | PORTF(4, 4) | SE | PE)
#define SSP1_DATA2_I2C_SD	(FUNC(1) | PORTF(4, 4) | SE | PE)
#define SSP1_DATA2_ALT_JTAG_RTCK (FUNC(2) | PORTF(4, 4) | SE | PE)
#define SSP1_DATA2_GPIO		(FUNC(3) | PORTF(4, 4) | SE | PE)
#define SSP1_DATA1		(FUNC(0) | PORTF(4, 3) | SE | PE)
#define SSP1_DATA1_I2C_CLK	(FUNC(1) | PORTF(4, 3) | SE | PE)
#define SSP1_DATA1_ALT_JTAG_TCK	(FUNC(2) | PORTF(4, 3) | SE | PE)
#define SSP1_DATA1_GPIO		(FUNC(3) | PORTF(4, 3) | SE | PE)
#define SSP1_DATA0		(FUNC(0) | PORTF(4, 2) | SE | PE)
#define SSP1_DATA0_ALT_JTAG_TDI	(FUNC(2) | PORTF(4, 2) | SE | PE)
#define SSP1_DATA0_GPIO		(FUNC(3) | PORTF(4, 2) | SE | PE)
#define SSP1_DETECT		(FUNC(0) | PORTF(4, 1) | SE | PE)
#define SSP1_DETECT_GPMI_CE3N	(FUNC(1) | PORTF(4, 1) | SE | PE)
#define SSP1_DETECT_USB_ID	(FUNC(2) | PORTF(4, 1) | SE | PE)
#define SSP1_DETECT_GPIO	(FUNC(3) | PORTF(4, 1) | SE | PE)
#define SSP1_CMD		(FUNC(0) | PORTF(4, 0) | SE | PE)
#define SSP1_CMD_JTAG_TDO	(FUNC(2) | PORTF(4, 0) | SE | PE)
#define SSP1_CMD_GPIO		(FUNC(3) | PORTF(4, 0) | SE | PE)

/* Bank 2, pins 16 ... 31 GPIO pins 80 ... 95 */
#define EMI_WEN			(FUNC(0) | PORTF(5, 15) | SE | VE)
#define EMI_WEN_GPIO		(FUNC(3) | PORTF(5, 15) | SE | VE)
#define EMI_RASN		(FUNC(0) | PORTF(5, 14) | SE | VE)
#define EMI_RASN_GPIO		(FUNC(3) | PORTF(5, 14) | SE | VE)
#define EMI_CKE			(FUNC(0) | PORTF(5, 13) | SE | VE)
#define EMI_CKE_GPIO		(FUNC(3) | PORTF(5, 13) | SE | VE)
#define GPMI_CE0N		(FUNC(0) | PORTF(5, 12) | SE)
#define GPMI_CE0N_GPIO		(FUNC(3) | PORTF(5, 12) | SE)
#define GPMI_CE1N		(FUNC(0) | PORTF(5, 11) | SE | PE)
#define GPMI_CE1N_GPIO		(FUNC(3) | PORTF(5, 11) | SE | PE)
#define EMI_CE1N		(FUNC(0) | PORTF(5, 10) | SE | VE | PE)
#define EMI_CE1N_GPIO		(FUNC(3) | PORTF(5, 10) | SE | VE | PE)
#define EMI_CE0N		(FUNC(0) | PORTF(5, 9) | SE | VE)
#define EMI_CE0N_GPIO		(FUNC(3) | PORTF(5, 9) | SE | VE)
#define EMI_CASN		(FUNC(0) | PORTF(5, 8) | SE | VE)
#define EMI_CASN_GPIO		(FUNC(3) | PORTF(5, 8) | SE | VE)
#define EMI_BA1			(FUNC(0) | PORTF(5, 7) | SE | VE)
#define EMI_BA1_GPIO		(FUNC(3) | PORTF(5, 7) | SE | VE)
#define EMI_BA0			(FUNC(0) | PORTF(5, 6) | SE | VE)
#define EMI_BA0_GPIO		(FUNC(3) | PORTF(5, 6) | SE | VE)
#define EMI_A12			(FUNC(0) | PORTF(5, 5) | SE | VE)
#define EMI_A12_GPIO		(FUNC(3) | PORTF(5, 5) | SE | VE)
#define EMI_A11			(FUNC(0) | PORTF(5, 4) | SE | VE)
#define EMI_A11_GPIO		(FUNC(3) | PORTF(5, 4) | SE | VE)
#define EMI_A10			(FUNC(0) | PORTF(5, 3) | SE | VE)
#define EMI_A10_GPIO		(FUNC(3) | PORTF(5, 3) | SE | VE)
#define EMI_A9			(FUNC(0) | PORTF(5, 2) | SE | VE)
#define EMI_A9_GPIO		(FUNC(3) | PORTF(5, 2) | SE | VE)
#define EMI_A8			(FUNC(0) | PORTF(5, 1) | SE | VE)
#define EMI_A8_GPIO		(FUNC(3) | PORTF(5, 1) | SE | VE)
#define EMI_A7			(FUNC(0) | PORTF(5, 0) | SE | VE)
#define EMI_A7_GPIO		(FUNC(3) | PORTF(5, 0) | SE | VE)

/* Bank 3, pins 0 ... 15 GPIO pins 96 ... 111 */
#define EMI_D15			(FUNC(0) | PORTF(6, 15) | SE | VE | PE)
#define EMI_D15_DISABLED	(FUNC(3) | PORTF(6, 15) | SE | VE | PE)
#define EMI_D14			(FUNC(0) | PORTF(6, 14) | SE | VE | PE)
#define EMI_D14_DISABLED	(FUNC(3) | PORTF(6, 14) | SE | VE | PE)
#define EMI_D13			(FUNC(0) | PORTF(6, 13) | SE | VE | PE)
#define EMI_D13_DISABLED	(FUNC(3) | PORTF(6, 13) | SE | VE | PE)
#define EMI_D12			(FUNC(0) | PORTF(6, 12) | SE | VE | PE)
#define EMI_D12_DISABLED	(FUNC(3) | PORTF(6, 12) | SE | VE | PE)
#define EMI_D11			(FUNC(0) | PORTF(6, 11) | SE | VE | PE)
#define EMI_D11_DISABLED	(FUNC(3) | PORTF(6, 11) | SE | VE | PE)
#define EMI_D10			(FUNC(0) | PORTF(6, 10) | SE | VE | PE)
#define EMI_D10_DISABLED	(FUNC(3) | PORTF(6, 10) | SE | VE | PE)
#define EMI_D9			(FUNC(0) | PORTF(6, 9) | SE | VE | PE)
#define EMI_D9_DISABLED		(FUNC(3) | PORTF(6, 9) | SE | VE | PE)
#define EMI_D8			(FUNC(0) | PORTF(6, 8) | SE | VE | PE)
#define EMI_D8_DISABLED		(FUNC(3) | PORTF(6, 8) | SE | VE | PE)
#define EMI_D7			(FUNC(0) | PORTF(6, 7) | SE | VE | PE)
#define EMI_D7_DISABLED		(FUNC(3) | PORTF(6, 7) | SE | VE | PE)
#define EMI_D6			(FUNC(0) | PORTF(6, 6) | SE | VE | PE)
#define EMI_D6_DISABLED		(FUNC(3) | PORTF(6, 6) | SE | VE | PE)
#define EMI_D5			(FUNC(0) | PORTF(6, 5) | SE | VE | PE)
#define EMI_D5_DISABLED		(FUNC(3) | PORTF(6, 5) | SE | VE | PE)
#define EMI_D4			(FUNC(0) | PORTF(6, 4) | SE | VE | PE)
#define EMI_D4_DISABLED		(FUNC(3) | PORTF(6, 4) | SE | VE | PE)
#define EMI_D3			(FUNC(0) | PORTF(6, 3) | SE | VE | PE)
#define EMI_D3_DISABLED		(FUNC(3) | PORTF(6, 3) | SE | VE | PE)
#define EMI_D2			(FUNC(0) | PORTF(6, 2) | SE | VE | PE)
#define EMI_D2_DISABLED		(FUNC(3) | PORTF(6, 2) | SE | VE | PE)
#define EMI_D1			(FUNC(0) | PORTF(6, 1) | SE | VE | PE)
#define EMI_D1_DISABLED		(FUNC(3) | PORTF(6, 1) | SE | VE | PE)
#define EMI_D0			(FUNC(0) | PORTF(6, 0) | SE | VE | PE)
#define EMI_D0_DISABLED		(FUNC(3) | PORTF(6, 0) | SE | VE | PE)

/* Bank 3, pins 16 ... 21 GPIO pins 112 ... 117 */
#define EMI_CLKN		(FUNC(0) | PORTF(7, 5) | SE | VE)
#define EMI_CLKN_DISABLED	(FUNC(3) | PORTF(7, 5) | SE | VE)
#define EMI_CLK			(FUNC(0) | PORTF(7, 4) | SE | VE)
#define EMI_CLK_DISABLED	(FUNC(3) | PORTF(7, 4) | SE | VE)
#define EMI_DQS1		(FUNC(0) | PORTF(7, 3) | SE | VE)
#define EMI_DQS1_DISABLED	(FUNC(3) | PORTF(7, 3) | SE | VE)
#define EMI_DQS0		(FUNC(0) | PORTF(7, 2) | SE | VE)
#define EMI_DQS0_DISABLED	(FUNC(3) | PORTF(7, 2) | SE | VE)
#define EMI_DQM1		(FUNC(0) | PORTF(7, 1) | SE | VE | PE)
#define EMI_DQM1_DISABLED	(FUNC(3) | PORTF(7, 1) | SE | VE | PE)
#define EMI_DQM0		(FUNC(0) | PORTF(7, 0) | SE | VE | PE)
#define EMI_DQM0_DISABLED	(FUNC(3) | PORTF(7, 0) | SE | VE | PE)

#endif /* __ASM_MACH_IOMUX_H */