]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blob - drivers/pinctrl/pxa/pinctrl-pxa27x.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441
[mirror_ubuntu-focal-kernel.git] / drivers / pinctrl / pxa / pinctrl-pxa27x.c
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 struct resource *res;
512
513 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
514 base_af[0] = devm_ioremap_resource(&pdev->dev, res);
515 if (IS_ERR(base_af[0]))
516 return PTR_ERR(base_af[0]);
517
518 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
519 base_dir[0] = devm_ioremap_resource(&pdev->dev, res);
520 if (IS_ERR(base_dir[0]))
521 return PTR_ERR(base_dir[0]);
522
523 res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
524 base_dir[3] = devm_ioremap_resource(&pdev->dev, res);
525 if (IS_ERR(base_dir[3]))
526 return PTR_ERR(base_dir[3]);
527
528 res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
529 base_sleep[0] = devm_ioremap_resource(&pdev->dev, res);
530 if (IS_ERR(base_sleep[0]))
531 return PTR_ERR(base_sleep[0]);
532
533 for (i = 0; i < ARRAY_SIZE(base_af); i++)
534 base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
535 for (i = 0; i < 3; i++)
536 base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
537 for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
538 base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
539
540 ret = pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
541 base_af, base_dir, base_sleep);
542 return ret;
543 }
544
545 static const struct of_device_id pxa27x_pinctrl_match[] = {
546 { .compatible = "marvell,pxa27x-pinctrl", },
547 {}
548 };
549 MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
550
551 static struct platform_driver pxa27x_pinctrl_driver = {
552 .probe = pxa27x_pinctrl_probe,
553 .driver = {
554 .name = "pxa27x-pinctrl",
555 .of_match_table = pxa27x_pinctrl_match,
556 },
557 };
558 module_platform_driver(pxa27x_pinctrl_driver);
559
560 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
561 MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
562 MODULE_LICENSE("GPL v2");