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
14static 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
504static 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, index: 0);
512 if (IS_ERR(ptr: base_af[0]))
513 return PTR_ERR(ptr: base_af[0]);
514
515 base_dir[0] = devm_platform_ioremap_resource(pdev, index: 1);
516 if (IS_ERR(ptr: base_dir[0]))
517 return PTR_ERR(ptr: base_dir[0]);
518
519 base_dir[3] = devm_platform_ioremap_resource(pdev, index: 2);
520 if (IS_ERR(ptr: base_dir[3]))
521 return PTR_ERR(ptr: base_dir[3]);
522
523 base_sleep[0] = devm_platform_ioremap_resource(pdev, index: 3);
524 if (IS_ERR(ptr: base_sleep[0]))
525 return PTR_ERR(ptr: 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, ppins: pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
535 base_gafr: base_af, base_gpdr: base_dir, base_gpsr: base_sleep);
536}
537
538static const struct of_device_id pxa27x_pinctrl_match[] = {
539 { .compatible = "marvell,pxa27x-pinctrl", },
540 {}
541};
542MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
543
544static 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};
551module_platform_driver(pxa27x_pinctrl_driver);
552
553MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
554MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
555MODULE_LICENSE("GPL v2");
556

source code of linux/drivers/pinctrl/pxa/pinctrl-pxa27x.c