Merge tag 'linux_kselftest-fixes-6.12-rc2' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-block.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/pinctrl/pinctrl.h>
11
12 #include "pinctrl-pxa2xx.h"
13
14 static 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
504 static 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
538 static const struct of_device_id pxa27x_pinctrl_match[] = {
539         { .compatible = "marvell,pxa27x-pinctrl", },
540         {}
541 };
542 MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
543
544 static 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 };
551 module_platform_driver(pxa27x_pinctrl_driver);
552
553 MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
554 MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
555 MODULE_LICENSE("GPL v2");