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