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, 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
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