Linux 5.1.15
[linux/fpc-iii.git] / drivers / pinctrl / pxa / pinctrl-pxa27x.c
blob2e2c3709ef059343d62c59d24d6652b15146c879
1 /*
2 * Marvell PXA27x family pin control
4 * Copyright (C) 2015 Robert Jarzmik
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
11 #include <linux/module.h>
12 #include <linux/platform_device.h>
13 #include <linux/of.h>
14 #include <linux/of_device.h>
15 #include <linux/pinctrl/pinctrl.h>
17 #include "pinctrl-pxa2xx.h"
19 static const struct pxa_desc_pin pxa27x_pins[] = {
20 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
21 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1)),
22 PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
23 PXA_FUNCTION(0, 3, "FFCTS"),
24 PXA_FUNCTION(1, 1, "HZ_CLK"),
25 PXA_FUNCTION(1, 3, "CHOUT<0>")),
26 PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
27 PXA_FUNCTION(0, 1, "FFDCD"),
28 PXA_FUNCTION(0, 3, "USB_P3_5"),
29 PXA_FUNCTION(1, 1, "HZ_CLK"),
30 PXA_FUNCTION(1, 3, "CHOUT<1>")),
31 PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
32 PXA_FUNCTION(0, 1, "EXT_SYNC<0>"),
33 PXA_FUNCTION(0, 2, "SSPRXD2"),
34 PXA_FUNCTION(0, 3, "USB_P3_1"),
35 PXA_FUNCTION(1, 1, "CHOUT<0>"),
36 PXA_FUNCTION(1, 1, "PWM_OUT<2>"),
37 PXA_FUNCTION(1, 3, "48_MHz")),
38 PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
39 PXA_FUNCTION(0, 1, "EXT_SYNC<1>"),
40 PXA_FUNCTION(0, 2, "CIF_DD<7>"),
41 PXA_FUNCTION(1, 1, "CHOUT<1>"),
42 PXA_FUNCTION(1, 1, "PWM_OUT<3>"),
43 PXA_FUNCTION(1, 3, "48_MHz")),
44 PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
45 PXA_FUNCTION(0, 1, "CLK_EXT"),
46 PXA_FUNCTION(0, 2, "KP_DKIN<7>"),
47 PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
48 PXA_FUNCTION(1, 1, "SSPTXD2")),
49 PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
50 PXA_FUNCTION(0, 1, "L_VSYNC"),
51 PXA_FUNCTION(0, 2, "SSPSFRM2"),
52 PXA_FUNCTION(1, 1, "SSPSFRM2"),
53 PXA_FUNCTION(1, 3, "UCLK")),
54 PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15)),
55 PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
56 PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
57 PXA_FUNCTION(1, 2, "PWM_OUT<0>"),
58 PXA_FUNCTION(1, 3, "FFTXD")),
59 PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
60 PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
61 PXA_FUNCTION(0, 2, "CIF_DD<6>"),
62 PXA_FUNCTION(1, 2, "PWM_OUT<1>")),
63 PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
64 PXA_FUNCTION(0, 1, "RDY")),
65 PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
66 PXA_FUNCTION(0, 1, "SSPSCLK2"),
67 PXA_FUNCTION(0, 3, "FFRXD"),
68 PXA_FUNCTION(1, 1, "SSPSCLK2"),
69 PXA_FUNCTION(1, 2, "L_CS"),
70 PXA_FUNCTION(1, 3, "nURST")),
71 PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
72 PXA_FUNCTION(0, 1, "DREQ<0>"),
73 PXA_FUNCTION(0, 2, "MBREQ"),
74 PXA_FUNCTION(1, 1, "nSDCS<2>")),
75 PXA_GPIO_PIN(PXA_PINCTRL_PIN(21),
76 PXA_FUNCTION(1, 1, "nSDCS<3>"),
77 PXA_FUNCTION(1, 2, "DVAL<0>"),
78 PXA_FUNCTION(1, 3, "MBGNT")),
79 PXA_GPIO_PIN(PXA_PINCTRL_PIN(22),
80 PXA_FUNCTION(0, 1, "SSPEXTCLK2"),
81 PXA_FUNCTION(0, 2, "SSPSCLKEN2"),
82 PXA_FUNCTION(0, 3, "SSPSCLK2"),
83 PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
84 PXA_FUNCTION(1, 2, "SSPSYSCLK2"),
85 PXA_FUNCTION(1, 3, "SSPSCLK2")),
86 PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
87 PXA_FUNCTION(0, 2, "SSPSCLK"),
88 PXA_FUNCTION(1, 1, "CIF_MCLK"),
89 PXA_FUNCTION(1, 1, "SSPSCLK")),
90 PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
91 PXA_FUNCTION(0, 1, "CIF_FV"),
92 PXA_FUNCTION(0, 2, "SSPSFRM"),
93 PXA_FUNCTION(1, 1, "CIF_FV"),
94 PXA_FUNCTION(1, 2, "SSPSFRM")),
95 PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
96 PXA_FUNCTION(0, 1, "CIF_LV"),
97 PXA_FUNCTION(1, 1, "CIF_LV"),
98 PXA_FUNCTION(1, 2, "SSPTXD")),
99 PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
100 PXA_FUNCTION(0, 1, "SSPRXD"),
101 PXA_FUNCTION(0, 2, "CIF_PCLK"),
102 PXA_FUNCTION(0, 3, "FFCTS")),
103 PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
104 PXA_FUNCTION(0, 1, "SSPEXTCLK"),
105 PXA_FUNCTION(0, 2, "SSPSCLKEN"),
106 PXA_FUNCTION(0, 3, "CIF_DD<0>"),
107 PXA_FUNCTION(1, 1, "SSPSYSCLK"),
108 PXA_FUNCTION(1, 3, "FFRTS")),
109 PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
110 PXA_FUNCTION(0, 1, "AC97_BITCLK"),
111 PXA_FUNCTION(0, 2, "I2S_BITCLK"),
112 PXA_FUNCTION(0, 3, "SSPSFRM"),
113 PXA_FUNCTION(1, 1, "I2S_BITCLK"),
114 PXA_FUNCTION(1, 3, "SSPSFRM")),
115 PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
116 PXA_FUNCTION(0, 1, "AC97_SDATA_IN_0"),
117 PXA_FUNCTION(0, 2, "I2S_SDATA_IN"),
118 PXA_FUNCTION(0, 3, "SSPSCLK"),
119 PXA_FUNCTION(1, 1, "SSPRXD2"),
120 PXA_FUNCTION(1, 3, "SSPSCLK")),
121 PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
122 PXA_FUNCTION(1, 1, "I2S_SDATA_OUT"),
123 PXA_FUNCTION(1, 2, "AC97_SDATA_OUT"),
124 PXA_FUNCTION(1, 3, "USB_P3_2")),
125 PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
126 PXA_FUNCTION(1, 1, "I2S_SYNC"),
127 PXA_FUNCTION(1, 2, "AC97_SYNC"),
128 PXA_FUNCTION(1, 3, "USB_P3_6")),
129 PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
130 PXA_FUNCTION(1, 1, "MSSCLK"),
131 PXA_FUNCTION(1, 2, "MMCLK")),
132 PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
133 PXA_FUNCTION(0, 1, "FFRXD"),
134 PXA_FUNCTION(0, 2, "FFDSR"),
135 PXA_FUNCTION(1, 1, "DVAL<1>"),
136 PXA_FUNCTION(1, 2, "nCS<5>"),
137 PXA_FUNCTION(1, 3, "MBGNT")),
138 PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
139 PXA_FUNCTION(0, 1, "FFRXD"),
140 PXA_FUNCTION(0, 2, "KP_MKIN<3>"),
141 PXA_FUNCTION(0, 3, "SSPSCLK3"),
142 PXA_FUNCTION(1, 1, "USB_P2_2"),
143 PXA_FUNCTION(1, 3, "SSPSCLK3")),
144 PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
145 PXA_FUNCTION(0, 1, "FFCTS"),
146 PXA_FUNCTION(0, 2, "USB_P2_1"),
147 PXA_FUNCTION(0, 3, "SSPSFRM3"),
148 PXA_FUNCTION(1, 2, "KP_MKOUT<6>"),
149 PXA_FUNCTION(1, 3, "SSPTXD3")),
150 PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
151 PXA_FUNCTION(0, 1, "FFDCD"),
152 PXA_FUNCTION(0, 2, "SSPSCLK2"),
153 PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
154 PXA_FUNCTION(1, 1, "USB_P2_4"),
155 PXA_FUNCTION(1, 2, "SSPSCLK2")),
156 PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
157 PXA_FUNCTION(0, 1, "FFDSR"),
158 PXA_FUNCTION(0, 2, "SSPSFRM2"),
159 PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
160 PXA_FUNCTION(1, 1, "USB_P2_8"),
161 PXA_FUNCTION(1, 2, "SSPSFRM2"),
162 PXA_FUNCTION(1, 3, "FFTXD")),
163 PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
164 PXA_FUNCTION(0, 1, "FFRI"),
165 PXA_FUNCTION(0, 2, "KP_MKIN<4>"),
166 PXA_FUNCTION(0, 3, "USB_P2_3"),
167 PXA_FUNCTION(1, 1, "SSPTXD3"),
168 PXA_FUNCTION(1, 2, "SSPTXD2"),
169 PXA_FUNCTION(1, 3, "PWM_OUT<0>")),
170 PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
171 PXA_FUNCTION(0, 1, "KP_MKIN<4>"),
172 PXA_FUNCTION(0, 3, "SSPSFRM3"),
173 PXA_FUNCTION(1, 1, "USB_P2_6"),
174 PXA_FUNCTION(1, 2, "FFTXD"),
175 PXA_FUNCTION(1, 3, "SSPSFRM3")),
176 PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
177 PXA_FUNCTION(0, 1, "SSPRXD2"),
178 PXA_FUNCTION(0, 3, "USB_P2_5"),
179 PXA_FUNCTION(1, 1, "KP_MKOUT<6>"),
180 PXA_FUNCTION(1, 2, "FFDTR"),
181 PXA_FUNCTION(1, 3, "SSPSCLK3")),
182 PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
183 PXA_FUNCTION(0, 1, "FFRXD"),
184 PXA_FUNCTION(0, 2, "USB_P2_7"),
185 PXA_FUNCTION(0, 3, "SSPRXD3"),
186 PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
187 PXA_FUNCTION(1, 2, "FFRTS")),
188 PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
189 PXA_FUNCTION(0, 1, "BTRXD"),
190 PXA_FUNCTION(0, 2, "ICP_RXD"),
191 PXA_FUNCTION(1, 3, "CIF_MCLK")),
192 PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
193 PXA_FUNCTION(0, 3, "CIF_FV"),
194 PXA_FUNCTION(1, 1, "ICP_TXD"),
195 PXA_FUNCTION(1, 2, "BTTXD"),
196 PXA_FUNCTION(1, 3, "CIF_FV")),
197 PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
198 PXA_FUNCTION(0, 1, "BTCTS"),
199 PXA_FUNCTION(0, 3, "CIF_LV"),
200 PXA_FUNCTION(1, 3, "CIF_LV")),
201 PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
202 PXA_FUNCTION(0, 3, "CIF_PCLK"),
203 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
204 PXA_FUNCTION(1, 2, "BTRTS"),
205 PXA_FUNCTION(1, 3, "SSPSYSCLK3")),
206 PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
207 PXA_FUNCTION(0, 1, "ICP_RXD"),
208 PXA_FUNCTION(0, 2, "STD_RXD"),
209 PXA_FUNCTION(1, 2, "PWM_OUT<2>")),
210 PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
211 PXA_FUNCTION(0, 1, "CIF_DD<0>"),
212 PXA_FUNCTION(1, 1, "STD_TXD"),
213 PXA_FUNCTION(1, 2, "ICP_TXD"),
214 PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
215 PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
216 PXA_FUNCTION(0, 1, "CIF_DD<5>"),
217 PXA_FUNCTION(1, 1, "BB_OB_DAT<1>"),
218 PXA_FUNCTION(1, 2, "nPOE")),
219 PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
220 PXA_FUNCTION(1, 2, "nPWE")),
221 PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
222 PXA_FUNCTION(0, 1, "CIF_DD<3>"),
223 PXA_FUNCTION(0, 3, "SSPSCLK2"),
224 PXA_FUNCTION(1, 1, "BB_OB_DAT<2>"),
225 PXA_FUNCTION(1, 2, "nPIOR"),
226 PXA_FUNCTION(1, 3, "SSPSCLK2")),
227 PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
228 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
229 PXA_FUNCTION(1, 1, "BB_OB_DAT<3>"),
230 PXA_FUNCTION(1, 2, "nPIOW")),
231 PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
232 PXA_FUNCTION(0, 1, "CIF_DD<4>"),
233 PXA_FUNCTION(0, 2, "SSPSCLK3"),
234 PXA_FUNCTION(1, 1, "BB_OB_CLK"),
235 PXA_FUNCTION(1, 2, "SSPSCLK3")),
236 PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
237 PXA_FUNCTION(0, 1, "FFRXD"),
238 PXA_FUNCTION(0, 2, "USB_P2_3"),
239 PXA_FUNCTION(1, 1, "BB_OB_STB"),
240 PXA_FUNCTION(1, 2, "CIF_MCLK"),
241 PXA_FUNCTION(1, 3, "SSPSYSCLK")),
242 PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
243 PXA_FUNCTION(0, 2, "BB_OB_WAIT"),
244 PXA_FUNCTION(0, 3, "CIF_PCLK"),
245 PXA_FUNCTION(1, 2, "nPCE<2>")),
246 PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
247 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
248 PXA_FUNCTION(0, 2, "BB_IB_DAT<1>"),
249 PXA_FUNCTION(1, 2, "nPREG")),
250 PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
251 PXA_FUNCTION(0, 1, "nPWAIT"),
252 PXA_FUNCTION(0, 2, "BB_IB_DAT<2>"),
253 PXA_FUNCTION(1, 1, "USB_P3_4")),
254 PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
255 PXA_FUNCTION(0, 1, "nIOS16"),
256 PXA_FUNCTION(0, 2, "BB_IB_DAT<3>"),
257 PXA_FUNCTION(1, 3, "SSPTXD")),
258 PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
259 PXA_FUNCTION(0, 2, "LDD<0>"),
260 PXA_FUNCTION(1, 2, "LDD<0>")),
261 PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
262 PXA_FUNCTION(0, 2, "LDD<1>"),
263 PXA_FUNCTION(1, 2, "LDD<1>")),
264 PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
265 PXA_FUNCTION(0, 2, "LDD<2>"),
266 PXA_FUNCTION(1, 2, "LDD<2>")),
267 PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
268 PXA_FUNCTION(0, 2, "LDD<3>"),
269 PXA_FUNCTION(1, 2, "LDD<3>")),
270 PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
271 PXA_FUNCTION(0, 2, "LDD<4>"),
272 PXA_FUNCTION(1, 2, "LDD<4>")),
273 PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
274 PXA_FUNCTION(0, 2, "LDD<5>"),
275 PXA_FUNCTION(1, 2, "LDD<5>")),
276 PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
277 PXA_FUNCTION(0, 2, "LDD<6>"),
278 PXA_FUNCTION(1, 2, "LDD<6>")),
279 PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
280 PXA_FUNCTION(0, 2, "LDD<7>"),
281 PXA_FUNCTION(1, 2, "LDD<7>")),
282 PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
283 PXA_FUNCTION(0, 2, "LDD<8>"),
284 PXA_FUNCTION(1, 2, "LDD<8>")),
285 PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
286 PXA_FUNCTION(0, 2, "LDD<9>"),
287 PXA_FUNCTION(1, 2, "LDD<9>")),
288 PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
289 PXA_FUNCTION(0, 2, "LDD<10>"),
290 PXA_FUNCTION(1, 2, "LDD<10>")),
291 PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
292 PXA_FUNCTION(0, 2, "LDD<11>"),
293 PXA_FUNCTION(1, 2, "LDD<11>")),
294 PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
295 PXA_FUNCTION(0, 2, "LDD<12>"),
296 PXA_FUNCTION(1, 2, "LDD<12>")),
297 PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
298 PXA_FUNCTION(0, 2, "LDD<13>"),
299 PXA_FUNCTION(1, 2, "LDD<13>")),
300 PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
301 PXA_FUNCTION(0, 2, "LDD<14>"),
302 PXA_FUNCTION(1, 2, "LDD<14>")),
303 PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
304 PXA_FUNCTION(0, 2, "LDD<15>"),
305 PXA_FUNCTION(1, 2, "LDD<15>")),
306 PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
307 PXA_FUNCTION(1, 2, "L_FCLK_RD")),
308 PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
309 PXA_FUNCTION(1, 2, "L_LCLK_A0")),
310 PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
311 PXA_FUNCTION(1, 2, "L_PCLK_WR")),
312 PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
313 PXA_FUNCTION(1, 2, "L_BIAS")),
314 PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
315 PXA_FUNCTION(1, 1, "nPCE<2>"),
316 PXA_FUNCTION(1, 2, "nCS<2>")),
317 PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
318 PXA_FUNCTION(1, 1, "PSKTSEL"),
319 PXA_FUNCTION(1, 2, "nCS<3>"),
320 PXA_FUNCTION(1, 3, "PWM_OUT<2>")),
321 PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
322 PXA_FUNCTION(0, 1, "DREQ<1>"),
323 PXA_FUNCTION(0, 2, "MBREQ"),
324 PXA_FUNCTION(1, 2, "nCS<4>"),
325 PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
326 PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
327 PXA_FUNCTION(0, 2, "CIF_DD<0>"),
328 PXA_FUNCTION(1, 1, "SSPTXD3"),
329 PXA_FUNCTION(1, 2, "BB_OB_DAT<0>")),
330 PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
331 PXA_FUNCTION(0, 1, "SSPRXD3"),
332 PXA_FUNCTION(0, 2, "BB_IB_DAT<0>"),
333 PXA_FUNCTION(0, 3, "CIF_DD<5>"),
334 PXA_FUNCTION(1, 3, "FFDTR")),
335 PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
336 PXA_FUNCTION(0, 1, "SSPSFRM3"),
337 PXA_FUNCTION(0, 2, "BB_IB_CLK"),
338 PXA_FUNCTION(0, 3, "CIF_DD<5>"),
339 PXA_FUNCTION(1, 1, "SSPSFRM3"),
340 PXA_FUNCTION(1, 2, "FFTXD"),
341 PXA_FUNCTION(1, 3, "FFRTS")),
342 PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
343 PXA_FUNCTION(0, 1, "SSPCLK3"),
344 PXA_FUNCTION(0, 2, "BB_IB_STB"),
345 PXA_FUNCTION(0, 3, "CIF_FV"),
346 PXA_FUNCTION(1, 1, "SSPCLK3"),
347 PXA_FUNCTION(1, 3, "CIF_FV")),
348 PXA_GPIO_PIN(PXA_PINCTRL_PIN(85),
349 PXA_FUNCTION(0, 1, "FFRXD"),
350 PXA_FUNCTION(0, 2, "DREQ<2>"),
351 PXA_FUNCTION(0, 3, "CIF_LV"),
352 PXA_FUNCTION(1, 1, "nPCE<1>"),
353 PXA_FUNCTION(1, 2, "BB_IB_WAIT"),
354 PXA_FUNCTION(1, 3, "CIF_LV")),
355 PXA_GPIO_PIN(PXA_PINCTRL_PIN(86),
356 PXA_FUNCTION(0, 1, "SSPRXD2"),
357 PXA_FUNCTION(0, 2, "LDD<16>"),
358 PXA_FUNCTION(0, 3, "USB_P3_5"),
359 PXA_FUNCTION(1, 1, "nPCE<1>"),
360 PXA_FUNCTION(1, 2, "LDD<16>")),
361 PXA_GPIO_PIN(PXA_PINCTRL_PIN(87),
362 PXA_FUNCTION(0, 1, "nPCE<2>"),
363 PXA_FUNCTION(0, 2, "LDD<17>"),
364 PXA_FUNCTION(0, 3, "USB_P3_1"),
365 PXA_FUNCTION(1, 1, "SSPTXD2"),
366 PXA_FUNCTION(1, 2, "LDD<17>"),
367 PXA_FUNCTION(1, 3, "SSPSFRM2")),
368 PXA_GPIO_PIN(PXA_PINCTRL_PIN(88),
369 PXA_FUNCTION(0, 1, "USBHPWR<1>"),
370 PXA_FUNCTION(0, 2, "SSPRXD2"),
371 PXA_FUNCTION(0, 3, "SSPSFRM2"),
372 PXA_FUNCTION(1, 2, "SSPTXD2"),
373 PXA_FUNCTION(1, 3, "SSPSFRM2")),
374 PXA_GPIO_PIN(PXA_PINCTRL_PIN(89),
375 PXA_FUNCTION(0, 1, "SSPRXD3"),
376 PXA_FUNCTION(0, 3, "FFRI"),
377 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
378 PXA_FUNCTION(1, 2, "USBHPEN<1>"),
379 PXA_FUNCTION(1, 3, "SSPTXD2")),
380 PXA_GPIO_PIN(PXA_PINCTRL_PIN(90),
381 PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
382 PXA_FUNCTION(0, 3, "USB_P3_5"),
383 PXA_FUNCTION(1, 1, "CIF_DD<4>"),
384 PXA_FUNCTION(1, 2, "nURST")),
385 PXA_GPIO_PIN(PXA_PINCTRL_PIN(91),
386 PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
387 PXA_FUNCTION(0, 3, "USB_P3_1"),
388 PXA_FUNCTION(1, 1, "CIF_DD<5>"),
389 PXA_FUNCTION(1, 2, "UCLK")),
390 PXA_GPIO_PIN(PXA_PINCTRL_PIN(92),
391 PXA_FUNCTION(0, 1, "MMDAT<0>"),
392 PXA_FUNCTION(1, 1, "MMDAT<0>"),
393 PXA_FUNCTION(1, 2, "MSBS")),
394 PXA_GPIO_PIN(PXA_PINCTRL_PIN(93),
395 PXA_FUNCTION(0, 1, "KP_DKIN<0>"),
396 PXA_FUNCTION(0, 2, "CIF_DD<6>"),
397 PXA_FUNCTION(1, 1, "AC97_SDATA_OUT")),
398 PXA_GPIO_PIN(PXA_PINCTRL_PIN(94),
399 PXA_FUNCTION(0, 1, "KP_DKIN<1>"),
400 PXA_FUNCTION(0, 2, "CIF_DD<5>"),
401 PXA_FUNCTION(1, 1, "AC97_SYNC")),
402 PXA_GPIO_PIN(PXA_PINCTRL_PIN(95),
403 PXA_FUNCTION(0, 1, "KP_DKIN<2>"),
404 PXA_FUNCTION(0, 2, "CIF_DD<4>"),
405 PXA_FUNCTION(0, 3, "KP_MKIN<6>"),
406 PXA_FUNCTION(1, 1, "AC97_RESET_n")),
407 PXA_GPIO_PIN(PXA_PINCTRL_PIN(96),
408 PXA_FUNCTION(0, 1, "KP_DKIN<3>"),
409 PXA_FUNCTION(0, 2, "MBREQ"),
410 PXA_FUNCTION(0, 3, "FFRXD"),
411 PXA_FUNCTION(1, 2, "DVAL<1>"),
412 PXA_FUNCTION(1, 3, "KP_MKOUT<6>")),
413 PXA_GPIO_PIN(PXA_PINCTRL_PIN(97),
414 PXA_FUNCTION(0, 1, "KP_DKIN<4>"),
415 PXA_FUNCTION(0, 2, "DREQ<1>"),
416 PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
417 PXA_FUNCTION(1, 2, "MBGNT")),
418 PXA_GPIO_PIN(PXA_PINCTRL_PIN(98),
419 PXA_FUNCTION(0, 1, "KP_DKIN<5>"),
420 PXA_FUNCTION(0, 2, "CIF_DD<0>"),
421 PXA_FUNCTION(0, 3, "KP_MKIN<4>"),
422 PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
423 PXA_FUNCTION(1, 3, "FFRTS")),
424 PXA_GPIO_PIN(PXA_PINCTRL_PIN(99),
425 PXA_FUNCTION(0, 1, "KP_DKIN<6>"),
426 PXA_FUNCTION(0, 2, "AC97_SDATA_IN_1"),
427 PXA_FUNCTION(0, 3, "KP_MKIN<5>"),
428 PXA_FUNCTION(1, 3, "FFTXD")),
429 PXA_GPIO_PIN(PXA_PINCTRL_PIN(100),
430 PXA_FUNCTION(0, 1, "KP_MKIN<0>"),
431 PXA_FUNCTION(0, 2, "DREQ<2>"),
432 PXA_FUNCTION(0, 3, "FFCTS")),
433 PXA_GPIO_PIN(PXA_PINCTRL_PIN(101),
434 PXA_FUNCTION(0, 1, "KP_MKIN<1>")),
435 PXA_GPIO_PIN(PXA_PINCTRL_PIN(102),
436 PXA_FUNCTION(0, 1, "KP_MKIN<2>"),
437 PXA_FUNCTION(0, 3, "FFRXD"),
438 PXA_FUNCTION(1, 1, "nPCE<1>")),
439 PXA_GPIO_PIN(PXA_PINCTRL_PIN(103),
440 PXA_FUNCTION(0, 1, "CIF_DD<3>"),
441 PXA_FUNCTION(1, 2, "KP_MKOUT<0>")),
442 PXA_GPIO_PIN(PXA_PINCTRL_PIN(104),
443 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
444 PXA_FUNCTION(1, 1, "PSKTSEL"),
445 PXA_FUNCTION(1, 2, "KP_MKOUT<1>")),
446 PXA_GPIO_PIN(PXA_PINCTRL_PIN(105),
447 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
448 PXA_FUNCTION(1, 1, "nPCE<2>"),
449 PXA_FUNCTION(1, 2, "KP_MKOUT<2>")),
450 PXA_GPIO_PIN(PXA_PINCTRL_PIN(106),
451 PXA_FUNCTION(0, 1, "CIF_DD<9>"),
452 PXA_FUNCTION(1, 2, "KP_MKOUT<3>")),
453 PXA_GPIO_PIN(PXA_PINCTRL_PIN(107),
454 PXA_FUNCTION(0, 1, "CIF_DD<8>"),
455 PXA_FUNCTION(1, 2, "KP_MKOUT<4>")),
456 PXA_GPIO_PIN(PXA_PINCTRL_PIN(108),
457 PXA_FUNCTION(0, 1, "CIF_DD<7>"),
458 PXA_FUNCTION(1, 1, "CHOUT<0>"),
459 PXA_FUNCTION(1, 2, "KP_MKOUT<5>")),
460 PXA_GPIO_PIN(PXA_PINCTRL_PIN(109),
461 PXA_FUNCTION(0, 1, "MMDAT<1>"),
462 PXA_FUNCTION(0, 2, "MSSDIO"),
463 PXA_FUNCTION(1, 1, "MMDAT<1>"),
464 PXA_FUNCTION(1, 2, "MSSDIO")),
465 PXA_GPIO_PIN(PXA_PINCTRL_PIN(110),
466 PXA_FUNCTION(0, 1, "MMDAT<2>"),
467 PXA_FUNCTION(1, 1, "MMDAT<2>")),
468 PXA_GPIO_PIN(PXA_PINCTRL_PIN(111),
469 PXA_FUNCTION(0, 1, "MMDAT<3>"),
470 PXA_FUNCTION(1, 1, "MMDAT<3>")),
471 PXA_GPIO_PIN(PXA_PINCTRL_PIN(112),
472 PXA_FUNCTION(0, 1, "MMCMD"),
473 PXA_FUNCTION(0, 2, "nMSINS"),
474 PXA_FUNCTION(1, 1, "MMCMD")),
475 PXA_GPIO_PIN(PXA_PINCTRL_PIN(113),
476 PXA_FUNCTION(0, 3, "USB_P3_3"),
477 PXA_FUNCTION(1, 1, "I2S_SYSCLK"),
478 PXA_FUNCTION(1, 2, "AC97_RESET_n")),
479 PXA_GPIO_PIN(PXA_PINCTRL_PIN(114),
480 PXA_FUNCTION(0, 1, "CIF_DD<1>"),
481 PXA_FUNCTION(1, 1, "UEN"),
482 PXA_FUNCTION(1, 2, "UVS0")),
483 PXA_GPIO_PIN(PXA_PINCTRL_PIN(115),
484 PXA_FUNCTION(0, 1, "DREQ<0>"),
485 PXA_FUNCTION(0, 2, "CIF_DD<3>"),
486 PXA_FUNCTION(0, 3, "MBREQ"),
487 PXA_FUNCTION(1, 1, "UEN"),
488 PXA_FUNCTION(1, 2, "nUVS1"),
489 PXA_FUNCTION(1, 3, "PWM_OUT<1>")),
490 PXA_GPIO_PIN(PXA_PINCTRL_PIN(116),
491 PXA_FUNCTION(0, 1, "CIF_DD<2>"),
492 PXA_FUNCTION(0, 2, "AC97_SDATA_IN_0"),
493 PXA_FUNCTION(0, 3, "UDET"),
494 PXA_FUNCTION(1, 1, "DVAL<0>"),
495 PXA_FUNCTION(1, 2, "nUVS2"),
496 PXA_FUNCTION(1, 3, "MBGNT")),
497 PXA_GPIO_PIN(PXA_PINCTRL_PIN(117),
498 PXA_FUNCTION(0, 1, "SCL"),
499 PXA_FUNCTION(1, 1, "SCL")),
500 PXA_GPIO_PIN(PXA_PINCTRL_PIN(118),
501 PXA_FUNCTION(0, 1, "SDA"),
502 PXA_FUNCTION(1, 1, "SDA")),
503 PXA_GPIO_PIN(PXA_PINCTRL_PIN(119),
504 PXA_FUNCTION(0, 1, "USBHPWR<2>")),
505 PXA_GPIO_PIN(PXA_PINCTRL_PIN(120),
506 PXA_FUNCTION(1, 2, "USBHPEN<2>")),
509 static int pxa27x_pinctrl_probe(struct platform_device *pdev)
511 int ret, i;
512 void __iomem *base_af[8];
513 void __iomem *base_dir[4];
514 void __iomem *base_sleep[4];
515 struct resource *res;
517 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
518 base_af[0] = devm_ioremap_resource(&pdev->dev, res);
519 if (IS_ERR(base_af[0]))
520 return PTR_ERR(base_af[0]);
522 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
523 base_dir[0] = devm_ioremap_resource(&pdev->dev, res);
524 if (IS_ERR(base_dir[0]))
525 return PTR_ERR(base_dir[0]);
527 res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
528 base_dir[3] = devm_ioremap_resource(&pdev->dev, res);
529 if (IS_ERR(base_dir[3]))
530 return PTR_ERR(base_dir[3]);
532 res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
533 base_sleep[0] = devm_ioremap_resource(&pdev->dev, res);
534 if (IS_ERR(base_sleep[0]))
535 return PTR_ERR(base_sleep[0]);
537 for (i = 0; i < ARRAY_SIZE(base_af); i++)
538 base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
539 for (i = 0; i < 3; i++)
540 base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
541 for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
542 base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
544 ret = pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
545 base_af, base_dir, base_sleep);
546 return ret;
549 static const struct of_device_id pxa27x_pinctrl_match[] = {
550 { .compatible = "marvell,pxa27x-pinctrl", },
553 MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
555 static struct platform_driver pxa27x_pinctrl_driver = {
556 .probe = pxa27x_pinctrl_probe,
557 .driver = {
558 .name = "pxa27x-pinctrl",
559 .of_match_table = pxa27x_pinctrl_match,
562 module_platform_driver(pxa27x_pinctrl_driver);
564 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
565 MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
566 MODULE_LICENSE("GPL v2");