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
15static 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
505static 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
540static const struct of_device_id pxa27x_pinctrl_match[] = {
541	{ .compatible = "marvell,pxa27x-pinctrl", },
542	{}
543};
544MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
545
546static 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};
553module_platform_driver(pxa27x_pinctrl_driver);
554
555MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
556MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
557MODULE_LICENSE("GPL v2");
558