xref: /linux/drivers/pinctrl/freescale/pinctrl-imx6ul.c (revision 9612327c1ffcdacc863b3baf0a3c8c9b0837ffd2)
1*9612327cSFrank Li /*
2*9612327cSFrank Li  * Copyright (C) 2015 Freescale Semiconductor, Inc.
3*9612327cSFrank Li  *
4*9612327cSFrank Li  * This program is free software; you can redistribute it and/or modify
5*9612327cSFrank Li  * it under the terms of the GNU General Public License version 2 as
6*9612327cSFrank Li  * published by the Free Software Foundation.
7*9612327cSFrank Li  */
8*9612327cSFrank Li 
9*9612327cSFrank Li #include <linux/err.h>
10*9612327cSFrank Li #include <linux/init.h>
11*9612327cSFrank Li #include <linux/io.h>
12*9612327cSFrank Li #include <linux/module.h>
13*9612327cSFrank Li #include <linux/of.h>
14*9612327cSFrank Li #include <linux/of_device.h>
15*9612327cSFrank Li #include <linux/pinctrl/pinctrl.h>
16*9612327cSFrank Li 
17*9612327cSFrank Li #include "pinctrl-imx.h"
18*9612327cSFrank Li 
19*9612327cSFrank Li enum imx6ul_pads {
20*9612327cSFrank Li 	MX6UL_PAD_RESERVE0 = 0,
21*9612327cSFrank Li 	MX6UL_PAD_RESERVE1 = 1,
22*9612327cSFrank Li 	MX6UL_PAD_RESERVE2 = 2,
23*9612327cSFrank Li 	MX6UL_PAD_RESERVE3 = 3,
24*9612327cSFrank Li 	MX6UL_PAD_RESERVE4 = 4,
25*9612327cSFrank Li 	MX6UL_PAD_RESERVE5 = 5,
26*9612327cSFrank Li 	MX6UL_PAD_RESERVE6 = 6,
27*9612327cSFrank Li 	MX6UL_PAD_RESERVE7 = 7,
28*9612327cSFrank Li 	MX6UL_PAD_RESERVE8 = 8,
29*9612327cSFrank Li 	MX6UL_PAD_RESERVE9 = 9,
30*9612327cSFrank Li 	MX6UL_PAD_RESERVE10 = 10,
31*9612327cSFrank Li 	MX6UL_PAD_SNVS_TAMPER4 = 11,
32*9612327cSFrank Li 	MX6UL_PAD_RESERVE12 = 12,
33*9612327cSFrank Li 	MX6UL_PAD_RESERVE13 = 13,
34*9612327cSFrank Li 	MX6UL_PAD_RESERVE14 = 14,
35*9612327cSFrank Li 	MX6UL_PAD_RESERVE15 = 15,
36*9612327cSFrank Li 	MX6UL_PAD_RESERVE16 = 16,
37*9612327cSFrank Li 	MX6UL_PAD_JTAG_MOD = 17,
38*9612327cSFrank Li 	MX6UL_PAD_JTAG_TMS = 18,
39*9612327cSFrank Li 	MX6UL_PAD_JTAG_TDO = 19,
40*9612327cSFrank Li 	MX6UL_PAD_JTAG_TDI = 20,
41*9612327cSFrank Li 	MX6UL_PAD_JTAG_TCK = 21,
42*9612327cSFrank Li 	MX6UL_PAD_JTAG_TRST_B = 22,
43*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO00 = 23,
44*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO01 = 24,
45*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO02 = 25,
46*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO03 = 26,
47*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO04 = 27,
48*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO05 = 28,
49*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO06 = 29,
50*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO07 = 30,
51*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO08 = 31,
52*9612327cSFrank Li 	MX6UL_PAD_GPIO1_IO09 = 32,
53*9612327cSFrank Li 	MX6UL_PAD_UART1_TX_DATA = 33,
54*9612327cSFrank Li 	MX6UL_PAD_UART1_RX_DATA = 34,
55*9612327cSFrank Li 	MX6UL_PAD_UART1_CTS_B = 35,
56*9612327cSFrank Li 	MX6UL_PAD_UART1_RTS_B = 36,
57*9612327cSFrank Li 	MX6UL_PAD_UART2_TX_DATA = 37,
58*9612327cSFrank Li 	MX6UL_PAD_UART2_RX_DATA = 38,
59*9612327cSFrank Li 	MX6UL_PAD_UART2_CTS_B = 39,
60*9612327cSFrank Li 	MX6UL_PAD_UART2_RTS_B = 40,
61*9612327cSFrank Li 	MX6UL_PAD_UART3_TX_DATA = 41,
62*9612327cSFrank Li 	MX6UL_PAD_UART3_RX_DATA = 42,
63*9612327cSFrank Li 	MX6UL_PAD_UART3_CTS_B = 43,
64*9612327cSFrank Li 	MX6UL_PAD_UART3_RTS_B = 44,
65*9612327cSFrank Li 	MX6UL_PAD_UART4_TX_DATA = 45,
66*9612327cSFrank Li 	MX6UL_PAD_UART4_RX_DATA = 46,
67*9612327cSFrank Li 	MX6UL_PAD_UART5_TX_DATA = 47,
68*9612327cSFrank Li 	MX6UL_PAD_UART5_RX_DATA = 48,
69*9612327cSFrank Li 	MX6UL_PAD_ENET1_RX_DATA0 = 49,
70*9612327cSFrank Li 	MX6UL_PAD_ENET1_RX_DATA1 = 50,
71*9612327cSFrank Li 	MX6UL_PAD_ENET1_RX_EN = 51,
72*9612327cSFrank Li 	MX6UL_PAD_ENET1_TX_DATA0 = 52,
73*9612327cSFrank Li 	MX6UL_PAD_ENET1_TX_DATA1 = 53,
74*9612327cSFrank Li 	MX6UL_PAD_ENET1_TX_EN = 54,
75*9612327cSFrank Li 	MX6UL_PAD_ENET1_TX_CLK = 55,
76*9612327cSFrank Li 	MX6UL_PAD_ENET1_RX_ER = 56,
77*9612327cSFrank Li 	MX6UL_PAD_ENET2_RX_DATA0 = 57,
78*9612327cSFrank Li 	MX6UL_PAD_ENET2_RX_DATA1 = 58,
79*9612327cSFrank Li 	MX6UL_PAD_ENET2_RX_EN = 59,
80*9612327cSFrank Li 	MX6UL_PAD_ENET2_TX_DATA0 = 60,
81*9612327cSFrank Li 	MX6UL_PAD_ENET2_TX_DATA1 = 61,
82*9612327cSFrank Li 	MX6UL_PAD_ENET2_TX_EN = 62,
83*9612327cSFrank Li 	MX6UL_PAD_ENET2_TX_CLK = 63,
84*9612327cSFrank Li 	MX6UL_PAD_ENET2_RX_ER = 64,
85*9612327cSFrank Li 	MX6UL_PAD_LCD_CLK = 65,
86*9612327cSFrank Li 	MX6UL_PAD_LCD_ENABLE = 66,
87*9612327cSFrank Li 	MX6UL_PAD_LCD_HSYNC = 67,
88*9612327cSFrank Li 	MX6UL_PAD_LCD_VSYNC = 68,
89*9612327cSFrank Li 	MX6UL_PAD_LCD_RESET = 69,
90*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA00 = 70,
91*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA01 = 71,
92*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA02 = 72,
93*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA03 = 73,
94*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA04 = 74,
95*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA05 = 75,
96*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA06 = 76,
97*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA07 = 77,
98*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA08 = 78,
99*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA09 = 79,
100*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA10 = 80,
101*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA11 = 81,
102*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA12 = 82,
103*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA13 = 83,
104*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA14 = 84,
105*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA15 = 85,
106*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA16 = 86,
107*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA17 = 87,
108*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA18 = 88,
109*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA19 = 89,
110*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA20 = 90,
111*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA21 = 91,
112*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA22 = 92,
113*9612327cSFrank Li 	MX6UL_PAD_LCD_DATA23 = 93,
114*9612327cSFrank Li 	MX6UL_PAD_NAND_RE_B = 94,
115*9612327cSFrank Li 	MX6UL_PAD_NAND_WE_B = 95,
116*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA00 = 96,
117*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA01 = 97,
118*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA02 = 98,
119*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA03 = 99,
120*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA04 = 100,
121*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA05 = 101,
122*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA06 = 102,
123*9612327cSFrank Li 	MX6UL_PAD_NAND_DATA07 = 103,
124*9612327cSFrank Li 	MX6UL_PAD_NAND_ALE = 104,
125*9612327cSFrank Li 	MX6UL_PAD_NAND_WP_B = 105,
126*9612327cSFrank Li 	MX6UL_PAD_NAND_READY_B = 106,
127*9612327cSFrank Li 	MX6UL_PAD_NAND_CE0_B = 107,
128*9612327cSFrank Li 	MX6UL_PAD_NAND_CE1_B = 108,
129*9612327cSFrank Li 	MX6UL_PAD_NAND_CLE = 109,
130*9612327cSFrank Li 	MX6UL_PAD_NAND_DQS = 110,
131*9612327cSFrank Li 	MX6UL_PAD_SD1_CMD = 111,
132*9612327cSFrank Li 	MX6UL_PAD_SD1_CLK = 112,
133*9612327cSFrank Li 	MX6UL_PAD_SD1_DATA0 = 113,
134*9612327cSFrank Li 	MX6UL_PAD_SD1_DATA1 = 114,
135*9612327cSFrank Li 	MX6UL_PAD_SD1_DATA2 = 115,
136*9612327cSFrank Li 	MX6UL_PAD_SD1_DATA3 = 116,
137*9612327cSFrank Li 	MX6UL_PAD_CSI_MCLK = 117,
138*9612327cSFrank Li 	MX6UL_PAD_CSI_PIXCLK = 118,
139*9612327cSFrank Li 	MX6UL_PAD_CSI_VSYNC = 119,
140*9612327cSFrank Li 	MX6UL_PAD_CSI_HSYNC = 120,
141*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA00 = 121,
142*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA01 = 122,
143*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA02 = 123,
144*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA03 = 124,
145*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA04 = 125,
146*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA05 = 126,
147*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA06 = 127,
148*9612327cSFrank Li 	MX6UL_PAD_CSI_DATA07 = 128,
149*9612327cSFrank Li };
150*9612327cSFrank Li 
151*9612327cSFrank Li /* Pad names for the pinmux subsystem */
152*9612327cSFrank Li static const struct pinctrl_pin_desc imx6ul_pinctrl_pads[] = {
153*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE0),
154*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE1),
155*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE2),
156*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE3),
157*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE4),
158*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE5),
159*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE6),
160*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE7),
161*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE8),
162*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE9),
163*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE10),
164*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SNVS_TAMPER4),
165*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE12),
166*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE13),
167*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE14),
168*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE15),
169*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_RESERVE16),
170*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_MOD),
171*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TMS),
172*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TDO),
173*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TDI),
174*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TCK),
175*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_JTAG_TRST_B),
176*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO00),
177*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO01),
178*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO02),
179*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO03),
180*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO04),
181*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO05),
182*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO06),
183*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO07),
184*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO08),
185*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_GPIO1_IO09),
186*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART1_TX_DATA),
187*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART1_RX_DATA),
188*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART1_CTS_B),
189*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART1_RTS_B),
190*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART2_TX_DATA),
191*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART2_RX_DATA),
192*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART2_CTS_B),
193*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART2_RTS_B),
194*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART3_TX_DATA),
195*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART3_RX_DATA),
196*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART3_CTS_B),
197*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART3_RTS_B),
198*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART4_TX_DATA),
199*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART4_RX_DATA),
200*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART5_TX_DATA),
201*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_UART5_RX_DATA),
202*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_DATA0),
203*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_DATA1),
204*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_EN),
205*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_DATA0),
206*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_DATA1),
207*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_EN),
208*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_TX_CLK),
209*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET1_RX_ER),
210*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_DATA0),
211*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_DATA1),
212*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_EN),
213*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_DATA0),
214*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_DATA1),
215*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_EN),
216*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_TX_CLK),
217*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_ENET2_RX_ER),
218*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_CLK),
219*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_ENABLE),
220*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_HSYNC),
221*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_VSYNC),
222*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_RESET),
223*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA00),
224*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA01),
225*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA02),
226*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA03),
227*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA04),
228*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA05),
229*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA06),
230*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA07),
231*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA08),
232*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA09),
233*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA10),
234*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA11),
235*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA12),
236*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA13),
237*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA14),
238*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA15),
239*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA16),
240*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA17),
241*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA18),
242*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA19),
243*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA20),
244*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA21),
245*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA22),
246*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_LCD_DATA23),
247*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_RE_B),
248*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_WE_B),
249*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA00),
250*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA01),
251*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA02),
252*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA03),
253*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA04),
254*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA05),
255*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA06),
256*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DATA07),
257*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_ALE),
258*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_WP_B),
259*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_READY_B),
260*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CE0_B),
261*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CE1_B),
262*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_CLE),
263*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_NAND_DQS),
264*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_CMD),
265*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_CLK),
266*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA0),
267*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA1),
268*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA2),
269*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_SD1_DATA3),
270*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_MCLK),
271*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_PIXCLK),
272*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_VSYNC),
273*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_HSYNC),
274*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA00),
275*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA01),
276*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA02),
277*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA03),
278*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA04),
279*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA05),
280*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA06),
281*9612327cSFrank Li 	IMX_PINCTRL_PIN(MX6UL_PAD_CSI_DATA07),
282*9612327cSFrank Li };
283*9612327cSFrank Li 
284*9612327cSFrank Li static struct imx_pinctrl_soc_info imx6ul_pinctrl_info = {
285*9612327cSFrank Li 	.pins = imx6ul_pinctrl_pads,
286*9612327cSFrank Li 	.npins = ARRAY_SIZE(imx6ul_pinctrl_pads),
287*9612327cSFrank Li };
288*9612327cSFrank Li 
289*9612327cSFrank Li static struct of_device_id imx6ul_pinctrl_of_match[] = {
290*9612327cSFrank Li 	{ .compatible = "fsl,imx6ul-iomuxc", },
291*9612327cSFrank Li 	{ /* sentinel */ }
292*9612327cSFrank Li };
293*9612327cSFrank Li 
294*9612327cSFrank Li static int imx6ul_pinctrl_probe(struct platform_device *pdev)
295*9612327cSFrank Li {
296*9612327cSFrank Li 	return imx_pinctrl_probe(pdev, &imx6ul_pinctrl_info);
297*9612327cSFrank Li }
298*9612327cSFrank Li 
299*9612327cSFrank Li static struct platform_driver imx6ul_pinctrl_driver = {
300*9612327cSFrank Li 	.driver = {
301*9612327cSFrank Li 		.name = "imx6ul-pinctrl",
302*9612327cSFrank Li 		.owner = THIS_MODULE,
303*9612327cSFrank Li 		.of_match_table = of_match_ptr(imx6ul_pinctrl_of_match),
304*9612327cSFrank Li 	},
305*9612327cSFrank Li 	.probe = imx6ul_pinctrl_probe,
306*9612327cSFrank Li 	.remove = imx_pinctrl_remove,
307*9612327cSFrank Li };
308*9612327cSFrank Li 
309*9612327cSFrank Li static int __init imx6ul_pinctrl_init(void)
310*9612327cSFrank Li {
311*9612327cSFrank Li 	return platform_driver_register(&imx6ul_pinctrl_driver);
312*9612327cSFrank Li }
313*9612327cSFrank Li arch_initcall(imx6ul_pinctrl_init);
314*9612327cSFrank Li 
315*9612327cSFrank Li static void __exit imx6ul_pinctrl_exit(void)
316*9612327cSFrank Li {
317*9612327cSFrank Li 	platform_driver_unregister(&imx6ul_pinctrl_driver);
318*9612327cSFrank Li }
319*9612327cSFrank Li module_exit(imx6ul_pinctrl_exit);
320*9612327cSFrank Li 
321*9612327cSFrank Li MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>");
322*9612327cSFrank Li MODULE_DESCRIPTION("Freescale imx6ul pinctrl driver");
323*9612327cSFrank Li MODULE_LICENSE("GPL v2");
324