Merge series "spi: spi-sun6i: One fix and some improvements" from Marc Kleine-Budde...
[linux-2.6-microblaze.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
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
540 static const struct of_device_id pxa27x_pinctrl_match[] = {
541         { .compatible = "marvell,pxa27x-pinctrl", },
542         {}
543 };
544 MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
545
546 static 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 };
553 module_platform_driver(pxa27x_pinctrl_driver);
554
555 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
556 MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
557 MODULE_LICENSE("GPL v2");