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