pinctrl: uniphier: support pin configuration for dedicated pins
[cascardo/linux.git] / drivers / pinctrl / uniphier / pinctrl-uniphier-sld8.c
1 /*
2  * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  */
14
15 #include <linux/kernel.h>
16 #include <linux/module.h>
17 #include <linux/pinctrl/pinctrl.h>
18 #include <linux/platform_device.h>
19
20 #include "pinctrl-uniphier.h"
21
22 static const struct pinctrl_pin_desc uniphier_sld8_pins[] = {
23         UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
24                              15, UNIPHIER_PIN_DRV_1BIT,
25                              15, UNIPHIER_PIN_PULL_DOWN),
26         UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
27                              16, UNIPHIER_PIN_DRV_1BIT,
28                              16, UNIPHIER_PIN_PULL_DOWN),
29         UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
30                              17, UNIPHIER_PIN_DRV_1BIT,
31                              17, UNIPHIER_PIN_PULL_DOWN),
32         UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
33                              18, UNIPHIER_PIN_DRV_1BIT,
34                              18, UNIPHIER_PIN_PULL_DOWN),
35         UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
36                              19, UNIPHIER_PIN_DRV_1BIT,
37                              19, UNIPHIER_PIN_PULL_DOWN),
38         UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
39                              20, UNIPHIER_PIN_DRV_1BIT,
40                              20, UNIPHIER_PIN_PULL_DOWN),
41         UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
42                              21, UNIPHIER_PIN_DRV_1BIT,
43                              21, UNIPHIER_PIN_PULL_DOWN),
44         UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
45                              22, UNIPHIER_PIN_DRV_1BIT,
46                              22, UNIPHIER_PIN_PULL_DOWN),
47         UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
48                              23, UNIPHIER_PIN_DRV_1BIT,
49                              23, UNIPHIER_PIN_PULL_DOWN),
50         UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
51                              24, UNIPHIER_PIN_DRV_1BIT,
52                              24, UNIPHIER_PIN_PULL_DOWN),
53         UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
54                              25, UNIPHIER_PIN_DRV_1BIT,
55                              25, UNIPHIER_PIN_PULL_DOWN),
56         UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
57                              26, UNIPHIER_PIN_DRV_1BIT,
58                              26, UNIPHIER_PIN_PULL_DOWN),
59         UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
60                              27, UNIPHIER_PIN_DRV_1BIT,
61                              27, UNIPHIER_PIN_PULL_DOWN),
62         UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
63                              28, UNIPHIER_PIN_DRV_1BIT,
64                              28, UNIPHIER_PIN_PULL_DOWN),
65         UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
66                              29, UNIPHIER_PIN_DRV_1BIT,
67                              29, UNIPHIER_PIN_PULL_DOWN),
68         UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
69                              30, UNIPHIER_PIN_DRV_1BIT,
70                              30, UNIPHIER_PIN_PULL_UP),
71         UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
72                              31, UNIPHIER_PIN_DRV_1BIT,
73                              31, UNIPHIER_PIN_PULL_UP),
74         UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
75                              32, UNIPHIER_PIN_DRV_1BIT,
76                              32, UNIPHIER_PIN_PULL_DOWN),
77         UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
78                              33, UNIPHIER_PIN_DRV_1BIT,
79                              33, UNIPHIER_PIN_PULL_DOWN),
80         UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
81                              34, UNIPHIER_PIN_DRV_1BIT,
82                              34, UNIPHIER_PIN_PULL_DOWN),
83         UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
84                              35, UNIPHIER_PIN_DRV_1BIT,
85                              35, UNIPHIER_PIN_PULL_UP),
86         UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
87                              36, UNIPHIER_PIN_DRV_1BIT,
88                              36, UNIPHIER_PIN_PULL_UP),
89         UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
90                              0, UNIPHIER_PIN_DRV_2BIT,
91                              119, UNIPHIER_PIN_PULL_UP),
92         UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
93                              1, UNIPHIER_PIN_DRV_2BIT,
94                              120, UNIPHIER_PIN_PULL_UP),
95         UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
96                              2, UNIPHIER_PIN_DRV_2BIT,
97                              121, UNIPHIER_PIN_PULL_UP),
98         UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
99                              3, UNIPHIER_PIN_DRV_2BIT,
100                              122, UNIPHIER_PIN_PULL_UP),
101         UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
102                              4, UNIPHIER_PIN_DRV_2BIT,
103                              123, UNIPHIER_PIN_PULL_UP),
104         UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
105                              5, UNIPHIER_PIN_DRV_2BIT,
106                              124, UNIPHIER_PIN_PULL_UP),
107         UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
108                              6, UNIPHIER_PIN_DRV_2BIT,
109                              125, UNIPHIER_PIN_PULL_UP),
110         UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
111                              7, UNIPHIER_PIN_DRV_2BIT,
112                              126, UNIPHIER_PIN_PULL_UP),
113         UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
114                              8, UNIPHIER_PIN_DRV_2BIT,
115                              127, UNIPHIER_PIN_PULL_UP),
116         UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
117                              9, UNIPHIER_PIN_DRV_2BIT,
118                              128, UNIPHIER_PIN_PULL_UP),
119         UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
120                              10, UNIPHIER_PIN_DRV_2BIT,
121                              -1, UNIPHIER_PIN_PULL_NONE),
122         UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
123                              11, UNIPHIER_PIN_DRV_2BIT,
124                              -1, UNIPHIER_PIN_PULL_NONE),
125         UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
126                              12, UNIPHIER_PIN_DRV_2BIT,
127                              -1, UNIPHIER_PIN_PULL_NONE),
128         UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
129                              13, UNIPHIER_PIN_DRV_2BIT,
130                              -1, UNIPHIER_PIN_PULL_NONE),
131         UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
132                              14, UNIPHIER_PIN_DRV_2BIT,
133                              -1, UNIPHIER_PIN_PULL_NONE),
134         UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
135                              15, UNIPHIER_PIN_DRV_2BIT,
136                              -1, UNIPHIER_PIN_PULL_NONE),
137         UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
138                              -1, UNIPHIER_PIN_DRV_FIXED4,
139                              129, UNIPHIER_PIN_PULL_DOWN),
140         UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
141                              -1, UNIPHIER_PIN_DRV_FIXED4,
142                              130, UNIPHIER_PIN_PULL_DOWN),
143         UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
144                              -1, UNIPHIER_PIN_DRV_FIXED4,
145                              131, UNIPHIER_PIN_PULL_DOWN),
146         UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
147                              37, UNIPHIER_PIN_DRV_1BIT,
148                              37, UNIPHIER_PIN_PULL_DOWN),
149         UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
150                              38, UNIPHIER_PIN_DRV_1BIT,
151                              38, UNIPHIER_PIN_PULL_DOWN),
152         UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
153                              39, UNIPHIER_PIN_DRV_1BIT,
154                              39, UNIPHIER_PIN_PULL_DOWN),
155         UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
156                              40, UNIPHIER_PIN_DRV_1BIT,
157                              40, UNIPHIER_PIN_PULL_DOWN),
158         UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
159                              41, UNIPHIER_PIN_DRV_1BIT,
160                              41, UNIPHIER_PIN_PULL_DOWN),
161         UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
162                              42, UNIPHIER_PIN_DRV_1BIT,
163                              42, UNIPHIER_PIN_PULL_DOWN),
164         UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
165                              43, UNIPHIER_PIN_DRV_1BIT,
166                              43, UNIPHIER_PIN_PULL_DOWN),
167         UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
168                              44, UNIPHIER_PIN_DRV_1BIT,
169                              44, UNIPHIER_PIN_PULL_DOWN),
170         UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
171                              45, UNIPHIER_PIN_DRV_1BIT,
172                              45, UNIPHIER_PIN_PULL_DOWN),
173         UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
174                              46, UNIPHIER_PIN_DRV_1BIT,
175                              46, UNIPHIER_PIN_PULL_DOWN),
176         UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
177                              47, UNIPHIER_PIN_DRV_1BIT,
178                              47, UNIPHIER_PIN_PULL_DOWN),
179         UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
180                              48, UNIPHIER_PIN_DRV_1BIT,
181                              48, UNIPHIER_PIN_PULL_DOWN),
182         UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
183                              49, UNIPHIER_PIN_DRV_1BIT,
184                              49, UNIPHIER_PIN_PULL_DOWN),
185         UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
186                              50, UNIPHIER_PIN_DRV_1BIT,
187                              50, UNIPHIER_PIN_PULL_DOWN),
188         UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
189                              51, UNIPHIER_PIN_DRV_1BIT,
190                              51, UNIPHIER_PIN_PULL_DOWN),
191         UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
192                              52, UNIPHIER_PIN_DRV_1BIT,
193                              52, UNIPHIER_PIN_PULL_DOWN),
194         UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
195                              53, UNIPHIER_PIN_DRV_1BIT,
196                              53, UNIPHIER_PIN_PULL_DOWN),
197         UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
198                              54, UNIPHIER_PIN_DRV_1BIT,
199                              54, UNIPHIER_PIN_PULL_DOWN),
200         UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
201                              55, UNIPHIER_PIN_DRV_1BIT,
202                              55, UNIPHIER_PIN_PULL_DOWN),
203         UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
204                              56, UNIPHIER_PIN_DRV_1BIT,
205                              56, UNIPHIER_PIN_PULL_DOWN),
206         UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
207                              57, UNIPHIER_PIN_DRV_1BIT,
208                              57, UNIPHIER_PIN_PULL_DOWN),
209         UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
210                              58, UNIPHIER_PIN_DRV_1BIT,
211                              58, UNIPHIER_PIN_PULL_DOWN),
212         UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
213                              59, UNIPHIER_PIN_DRV_1BIT,
214                              59, UNIPHIER_PIN_PULL_DOWN),
215         UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
216                              60, UNIPHIER_PIN_DRV_1BIT,
217                              60, UNIPHIER_PIN_PULL_DOWN),
218         UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
219                              61, UNIPHIER_PIN_DRV_1BIT,
220                              61, UNIPHIER_PIN_PULL_DOWN),
221         UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
222                              62, UNIPHIER_PIN_DRV_1BIT,
223                              62, UNIPHIER_PIN_PULL_DOWN),
224         UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
225                              63, UNIPHIER_PIN_DRV_1BIT,
226                              63, UNIPHIER_PIN_PULL_DOWN),
227         UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
228                              64, UNIPHIER_PIN_DRV_1BIT,
229                              64, UNIPHIER_PIN_PULL_DOWN),
230         UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
231                              65, UNIPHIER_PIN_DRV_1BIT,
232                              65, UNIPHIER_PIN_PULL_DOWN),
233         UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
234                              66, UNIPHIER_PIN_DRV_1BIT,
235                              66, UNIPHIER_PIN_PULL_DOWN),
236         UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
237                              67, UNIPHIER_PIN_DRV_1BIT,
238                              67, UNIPHIER_PIN_PULL_DOWN),
239         UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
240                              68, UNIPHIER_PIN_DRV_1BIT,
241                              68, UNIPHIER_PIN_PULL_DOWN),
242         UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
243                              69, UNIPHIER_PIN_DRV_1BIT,
244                              69, UNIPHIER_PIN_PULL_DOWN),
245         UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
246                              70, UNIPHIER_PIN_DRV_1BIT,
247                              70, UNIPHIER_PIN_PULL_DOWN),
248         UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
249                              71, UNIPHIER_PIN_DRV_1BIT,
250                              71, UNIPHIER_PIN_PULL_DOWN),
251         UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
252                              72, UNIPHIER_PIN_DRV_1BIT,
253                              72, UNIPHIER_PIN_PULL_DOWN),
254         UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
255                              73, UNIPHIER_PIN_DRV_1BIT,
256                              73, UNIPHIER_PIN_PULL_DOWN),
257         UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
258                              74, UNIPHIER_PIN_DRV_1BIT,
259                              74, UNIPHIER_PIN_PULL_DOWN),
260         UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
261                              75, UNIPHIER_PIN_DRV_1BIT,
262                              75, UNIPHIER_PIN_PULL_DOWN),
263         UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
264                              76, UNIPHIER_PIN_DRV_1BIT,
265                              76, UNIPHIER_PIN_PULL_DOWN),
266         UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
267                              77, UNIPHIER_PIN_DRV_1BIT,
268                              77, UNIPHIER_PIN_PULL_DOWN),
269         UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
270                              78, UNIPHIER_PIN_DRV_1BIT,
271                              78, UNIPHIER_PIN_PULL_DOWN),
272         UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
273                              79, UNIPHIER_PIN_DRV_1BIT,
274                              79, UNIPHIER_PIN_PULL_DOWN),
275         UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
276                              80, UNIPHIER_PIN_DRV_1BIT,
277                              80, UNIPHIER_PIN_PULL_DOWN),
278         UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
279                              81, UNIPHIER_PIN_DRV_1BIT,
280                              81, UNIPHIER_PIN_PULL_DOWN),
281         UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
282                              82, UNIPHIER_PIN_DRV_1BIT,
283                              82, UNIPHIER_PIN_PULL_DOWN),
284         UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
285                              83, UNIPHIER_PIN_DRV_1BIT,
286                              83, UNIPHIER_PIN_PULL_DOWN),
287         UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
288                              84, UNIPHIER_PIN_DRV_1BIT,
289                              84, UNIPHIER_PIN_PULL_DOWN),
290         UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
291                              85, UNIPHIER_PIN_DRV_1BIT,
292                              85, UNIPHIER_PIN_PULL_DOWN),
293         UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
294                              86, UNIPHIER_PIN_DRV_1BIT,
295                              86, UNIPHIER_PIN_PULL_DOWN),
296         UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
297                              87, UNIPHIER_PIN_DRV_1BIT,
298                              87, UNIPHIER_PIN_PULL_DOWN),
299         UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
300                              -1, UNIPHIER_PIN_DRV_FIXED4,
301                              132, UNIPHIER_PIN_PULL_DOWN),
302         UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
303                              -1, UNIPHIER_PIN_DRV_FIXED4,
304                              133, UNIPHIER_PIN_PULL_DOWN),
305         UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
306                              -1, UNIPHIER_PIN_DRV_FIXED4,
307                              134, UNIPHIER_PIN_PULL_DOWN),
308         UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
309                              88, UNIPHIER_PIN_DRV_1BIT,
310                              88, UNIPHIER_PIN_PULL_DOWN),
311         UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
312                              89, UNIPHIER_PIN_DRV_1BIT,
313                              89, UNIPHIER_PIN_PULL_DOWN),
314         UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
315                              90, UNIPHIER_PIN_DRV_1BIT,
316                              90, UNIPHIER_PIN_PULL_DOWN),
317         UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
318                              91, UNIPHIER_PIN_DRV_1BIT,
319                              91, UNIPHIER_PIN_PULL_DOWN),
320         UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
321                              92, UNIPHIER_PIN_DRV_1BIT,
322                              92, UNIPHIER_PIN_PULL_DOWN),
323         UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
324                              93, UNIPHIER_PIN_DRV_1BIT,
325                              93, UNIPHIER_PIN_PULL_UP),
326         UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
327                              94, UNIPHIER_PIN_DRV_1BIT,
328                              94, UNIPHIER_PIN_PULL_DOWN),
329         UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
330                              -1, UNIPHIER_PIN_DRV_FIXED4,
331                              -1, UNIPHIER_PIN_PULL_NONE),
332         UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
333                              -1, UNIPHIER_PIN_DRV_FIXED4,
334                              -1, UNIPHIER_PIN_PULL_NONE),
335         UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
336                              -1, UNIPHIER_PIN_DRV_FIXED4,
337                              -1, UNIPHIER_PIN_PULL_NONE),
338         UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
339                              -1, UNIPHIER_PIN_DRV_FIXED4,
340                              -1, UNIPHIER_PIN_PULL_NONE),
341         UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
342                              -1, UNIPHIER_PIN_DRV_FIXED4,
343                              -1, UNIPHIER_PIN_PULL_NONE),
344         UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
345                              -1, UNIPHIER_PIN_DRV_FIXED4,
346                              -1, UNIPHIER_PIN_PULL_NONE),
347         UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
348                              -1, UNIPHIER_PIN_DRV_FIXED4,
349                              -1, UNIPHIER_PIN_PULL_NONE),
350         UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
351                              -1, UNIPHIER_PIN_DRV_FIXED4,
352                              -1, UNIPHIER_PIN_PULL_NONE),
353         UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
354                              95, UNIPHIER_PIN_DRV_1BIT,
355                              95, UNIPHIER_PIN_PULL_UP),
356         UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
357                              96, UNIPHIER_PIN_DRV_1BIT,
358                              96, UNIPHIER_PIN_PULL_UP),
359         UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
360                              97, UNIPHIER_PIN_DRV_1BIT,
361                              97, UNIPHIER_PIN_PULL_UP),
362         UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
363                              98, UNIPHIER_PIN_DRV_1BIT,
364                              98, UNIPHIER_PIN_PULL_UP),
365         UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
366                              99, UNIPHIER_PIN_DRV_1BIT,
367                              99, UNIPHIER_PIN_PULL_UP),
368         UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
369                              100, UNIPHIER_PIN_DRV_1BIT,
370                              100, UNIPHIER_PIN_PULL_UP),
371         UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
372                              -1, UNIPHIER_PIN_DRV_FIXED5,
373                              -1, UNIPHIER_PIN_PULL_NONE),
374         UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
375                              -1, UNIPHIER_PIN_DRV_FIXED5,
376                              -1, UNIPHIER_PIN_PULL_NONE),
377         UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
378                              101, UNIPHIER_PIN_DRV_1BIT,
379                              101, UNIPHIER_PIN_PULL_DOWN),
380         UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
381                              102, UNIPHIER_PIN_DRV_1BIT,
382                              102, UNIPHIER_PIN_PULL_DOWN),
383         UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
384                              103, UNIPHIER_PIN_DRV_1BIT,
385                              103, UNIPHIER_PIN_PULL_DOWN),
386         UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
387                              104, UNIPHIER_PIN_DRV_1BIT,
388                              104, UNIPHIER_PIN_PULL_DOWN),
389         UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
390                              105, UNIPHIER_PIN_DRV_1BIT,
391                              105, UNIPHIER_PIN_PULL_DOWN),
392         UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
393                              106, UNIPHIER_PIN_DRV_1BIT,
394                              106, UNIPHIER_PIN_PULL_DOWN),
395         UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
396                              107, UNIPHIER_PIN_DRV_1BIT,
397                              107, UNIPHIER_PIN_PULL_DOWN),
398         UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
399                              108, UNIPHIER_PIN_DRV_1BIT,
400                              108, UNIPHIER_PIN_PULL_DOWN),
401         UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
402                              109, UNIPHIER_PIN_DRV_1BIT,
403                              109, UNIPHIER_PIN_PULL_DOWN),
404         UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
405                              110, UNIPHIER_PIN_DRV_1BIT,
406                              110, UNIPHIER_PIN_PULL_DOWN),
407         UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
408                              111, UNIPHIER_PIN_DRV_1BIT,
409                              111, UNIPHIER_PIN_PULL_DOWN),
410         UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
411                              112, UNIPHIER_PIN_DRV_1BIT,
412                              112, UNIPHIER_PIN_PULL_DOWN),
413         UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
414                              113, UNIPHIER_PIN_DRV_1BIT,
415                              113, UNIPHIER_PIN_PULL_DOWN),
416         UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
417                              114, UNIPHIER_PIN_DRV_1BIT,
418                              114, UNIPHIER_PIN_PULL_DOWN),
419         UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
420                              115, UNIPHIER_PIN_DRV_1BIT,
421                              115, UNIPHIER_PIN_PULL_DOWN),
422         UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
423                              116, UNIPHIER_PIN_DRV_1BIT,
424                              116, UNIPHIER_PIN_PULL_DOWN),
425         UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
426                              117, UNIPHIER_PIN_DRV_1BIT,
427                              117, UNIPHIER_PIN_PULL_DOWN),
428         UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
429                              118, UNIPHIER_PIN_DRV_1BIT,
430                              118, UNIPHIER_PIN_PULL_DOWN),
431 };
432
433 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
434 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
435 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
436 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
437 static const unsigned i2c0_pins[] = {102, 103};
438 static const int i2c0_muxvals[] = {0, 0};
439 static const unsigned i2c1_pins[] = {104, 105};
440 static const int i2c1_muxvals[] = {0, 0};
441 static const unsigned i2c2_pins[] = {108, 109};
442 static const int i2c2_muxvals[] = {2, 2};
443 static const unsigned i2c3_pins[] = {108, 109};
444 static const int i2c3_muxvals[] = {3, 3};
445 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
446                                      27, 28, 29, 30, 31};
447 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
448 static const unsigned nand_cs1_pins[] = {22, 23};
449 static const int nand_cs1_muxvals[] = {0, 0};
450 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
451 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
452 static const unsigned uart0_pins[] = {70, 71};
453 static const int uart0_muxvals[] = {3, 3};
454 static const unsigned uart1_pins[] = {114, 115};
455 static const int uart1_muxvals[] = {0, 0};
456 static const unsigned uart2_pins[] = {112, 113};
457 static const int uart2_muxvals[] = {1, 1};
458 static const unsigned uart3_pins[] = {110, 111};
459 static const int uart3_muxvals[] = {1, 1};
460 static const unsigned usb0_pins[] = {41, 42};
461 static const int usb0_muxvals[] = {0, 0};
462 static const unsigned usb1_pins[] = {43, 44};
463 static const int usb1_muxvals[] = {0, 0};
464 static const unsigned usb2_pins[] = {114, 115};
465 static const int usb2_muxvals[] = {1, 1};
466 static const unsigned port_range0_pins[] = {
467         0, 1, 2, 3, 4, 5, 6, 7,                         /* PORT0x */
468         8, 9, 10, 11, 12, 13, 14, 15,                   /* PORT1x */
469         32, 33, 34, 35, 36, 37, 38, 39,                 /* PORT2x */
470         59, 60, 61, 62, 63, 64, 65, 66,                 /* PORT3x */
471         95, 96, 97, 98, 99, 100, 101, 57,               /* PORT4x */
472         70, 71, 72, 73, 74, 75, 76, 77,                 /* PORT5x */
473         81, 83, 84, 85, 86, 89, 90, 91,                 /* PORT6x */
474         118, 119, 120, 121, 122, 53, 54, 55,            /* PORT7x */
475         41, 42, 43, 44, 79, 80, 18, 19,                 /* PORT8x */
476         110, 111, 112, 113, 114, 115, 16, 17,           /* PORT9x */
477         40, 67, 68, 69, 78, 92, 93, 94,                 /* PORT10x */
478         48, 49, 46, 45, 123, 124, 125, 126,             /* PORT11x */
479         47, 127, 20, 56, 22,                            /* PORT120-124 */
480 };
481 static const int port_range0_muxvals[] = {
482         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT0x */
483         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT1x */
484         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT2x */
485         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT3x */
486         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT4x */
487         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT5x */
488         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT6x */
489         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT7x */
490         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT8x */
491         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT9x */
492         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT10x */
493         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT11x */
494         15, 15, 15, 15, 15,                             /* PORT120-124 */
495 };
496 static const unsigned port_range1_pins[] = {
497         116, 117,                                       /* PORT130-131 */
498 };
499 static const int port_range1_muxvals[] = {
500         15, 15,                                         /* PORT130-131 */
501 };
502 static const unsigned port_range2_pins[] = {
503         102, 103, 104, 105, 106, 107, 108, 109,         /* PORT14x */
504 };
505 static const int port_range2_muxvals[] = {
506         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT14x */
507 };
508 static const unsigned port_range3_pins[] = {
509         23,                                             /* PORT166 */
510 };
511 static const int port_range3_muxvals[] = {
512         15,                                             /* PORT166 */
513 };
514 static const unsigned xirq_range0_pins[] = {
515         128, 129, 130, 131, 132, 133, 134, 135,         /* XIRQ0-7 */
516         82, 87, 88, 50, 51,                             /* XIRQ8-12 */
517 };
518 static const int xirq_range0_muxvals[] = {
519         0, 0, 0, 0, 0, 0, 0, 0,                         /* XIRQ0-7 */
520         14, 14, 14, 14, 14,                             /* XIRQ8-12 */
521 };
522 static const unsigned xirq_range1_pins[] = {
523         52, 58,                                         /* XIRQ14-15 */
524 };
525 static const int xirq_range1_muxvals[] = {
526         14, 14,                                         /* XIRQ14-15 */
527 };
528
529 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
530         UNIPHIER_PINCTRL_GROUP(emmc),
531         UNIPHIER_PINCTRL_GROUP(emmc_dat8),
532         UNIPHIER_PINCTRL_GROUP(i2c0),
533         UNIPHIER_PINCTRL_GROUP(i2c1),
534         UNIPHIER_PINCTRL_GROUP(i2c2),
535         UNIPHIER_PINCTRL_GROUP(i2c3),
536         UNIPHIER_PINCTRL_GROUP(nand),
537         UNIPHIER_PINCTRL_GROUP(nand_cs1),
538         UNIPHIER_PINCTRL_GROUP(sd),
539         UNIPHIER_PINCTRL_GROUP(uart0),
540         UNIPHIER_PINCTRL_GROUP(uart1),
541         UNIPHIER_PINCTRL_GROUP(uart2),
542         UNIPHIER_PINCTRL_GROUP(uart3),
543         UNIPHIER_PINCTRL_GROUP(usb0),
544         UNIPHIER_PINCTRL_GROUP(usb1),
545         UNIPHIER_PINCTRL_GROUP(usb2),
546         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0),
547         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1),
548         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range2),
549         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range3),
550         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0),
551         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1),
552         UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0),
553         UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1),
554         UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2),
555         UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3),
556         UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4),
557         UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5),
558         UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6),
559         UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7),
560         UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8),
561         UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9),
562         UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10),
563         UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11),
564         UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12),
565         UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13),
566         UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14),
567         UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15),
568         UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16),
569         UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17),
570         UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18),
571         UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19),
572         UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20),
573         UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21),
574         UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22),
575         UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23),
576         UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24),
577         UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25),
578         UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26),
579         UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27),
580         UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28),
581         UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29),
582         UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30),
583         UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31),
584         UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32),
585         UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33),
586         UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34),
587         UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35),
588         UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36),
589         UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37),
590         UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38),
591         UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39),
592         UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40),
593         UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41),
594         UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42),
595         UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43),
596         UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44),
597         UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45),
598         UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46),
599         UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47),
600         UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48),
601         UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49),
602         UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50),
603         UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51),
604         UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52),
605         UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53),
606         UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54),
607         UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55),
608         UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56),
609         UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57),
610         UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58),
611         UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59),
612         UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60),
613         UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61),
614         UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62),
615         UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63),
616         UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64),
617         UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65),
618         UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66),
619         UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67),
620         UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68),
621         UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69),
622         UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70),
623         UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71),
624         UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72),
625         UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73),
626         UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74),
627         UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75),
628         UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76),
629         UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77),
630         UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78),
631         UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79),
632         UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80),
633         UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81),
634         UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82),
635         UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83),
636         UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84),
637         UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85),
638         UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86),
639         UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87),
640         UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88),
641         UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89),
642         UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90),
643         UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91),
644         UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92),
645         UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93),
646         UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94),
647         UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95),
648         UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96),
649         UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97),
650         UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98),
651         UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99),
652         UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100),
653         UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range1, 0),
654         UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range1, 1),
655         UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range2, 0),
656         UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range2, 1),
657         UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range2, 2),
658         UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range2, 3),
659         UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range2, 4),
660         UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range2, 5),
661         UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range2, 6),
662         UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range2, 7),
663         UNIPHIER_PINCTRL_GROUP_SINGLE(port166, port_range3, 0),
664         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0),
665         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1),
666         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2),
667         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3),
668         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4),
669         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5),
670         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6),
671         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7),
672         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8),
673         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9),
674         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10),
675         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11),
676         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12),
677         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0),
678         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1),
679 };
680
681 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
682 static const char * const i2c0_groups[] = {"i2c0"};
683 static const char * const i2c1_groups[] = {"i2c1"};
684 static const char * const i2c2_groups[] = {"i2c2"};
685 static const char * const i2c3_groups[] = {"i2c3"};
686 static const char * const nand_groups[] = {"nand", "nand_cs1"};
687 static const char * const sd_groups[] = {"sd"};
688 static const char * const uart0_groups[] = {"uart0"};
689 static const char * const uart1_groups[] = {"uart1"};
690 static const char * const uart2_groups[] = {"uart2"};
691 static const char * const uart3_groups[] = {"uart3"};
692 static const char * const usb0_groups[] = {"usb0"};
693 static const char * const usb1_groups[] = {"usb1"};
694 static const char * const usb2_groups[] = {"usb2"};
695 static const char * const port_groups[] = {
696         "port00",  "port01",  "port02",  "port03",
697         "port04",  "port05",  "port06",  "port07",
698         "port10",  "port11",  "port12",  "port13",
699         "port14",  "port15",  "port16",  "port17",
700         "port20",  "port21",  "port22",  "port23",
701         "port24",  "port25",  "port26",  "port27",
702         "port30",  "port31",  "port32",  "port33",
703         "port34",  "port35",  "port36",  "port37",
704         "port40",  "port41",  "port42",  "port43",
705         "port44",  "port45",  "port46",  "port47",
706         "port50",  "port51",  "port52",  "port53",
707         "port54",  "port55",  "port56",  "port57",
708         "port60",  "port61",  "port62",  "port63",
709         "port64",  "port65",  "port66",  "port67",
710         "port70",  "port71",  "port72",  "port73",
711         "port74",  "port75",  "port76",  "port77",
712         "port80",  "port81",  "port82",  "port83",
713         "port84",  "port85",  "port86",  "port87",
714         "port90",  "port91",  "port92",  "port93",
715         "port94",  "port95",  "port96",  "port97",
716         "port100", "port101", "port102", "port103",
717         "port104", "port105", "port106", "port107",
718         "port110", "port111", "port112", "port113",
719         "port114", "port115", "port116", "port117",
720         "port120", "port121", "port122", "port123",
721         "port124", "port125", "port126", "port127",
722         "port130", "port131", "port132", "port133",
723         "port134", "port135", "port136", "port137",
724         "port140", "port141", "port142", "port143",
725         "port144", "port145", "port146", "port147",
726         /* port150-164 missing */
727         /* none */ "port165",
728 };
729 static const char * const xirq_groups[] = {
730         "xirq0",  "xirq1",  "xirq2",  "xirq3",
731         "xirq4",  "xirq5",  "xirq6",  "xirq7",
732         "xirq8",  "xirq9",  "xirq10", "xirq11",
733         "xirq12", /* none*/ "xirq14", "xirq15",
734 };
735
736 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
737         UNIPHIER_PINMUX_FUNCTION(emmc),
738         UNIPHIER_PINMUX_FUNCTION(i2c0),
739         UNIPHIER_PINMUX_FUNCTION(i2c1),
740         UNIPHIER_PINMUX_FUNCTION(i2c2),
741         UNIPHIER_PINMUX_FUNCTION(i2c3),
742         UNIPHIER_PINMUX_FUNCTION(nand),
743         UNIPHIER_PINMUX_FUNCTION(sd),
744         UNIPHIER_PINMUX_FUNCTION(uart0),
745         UNIPHIER_PINMUX_FUNCTION(uart1),
746         UNIPHIER_PINMUX_FUNCTION(uart2),
747         UNIPHIER_PINMUX_FUNCTION(uart3),
748         UNIPHIER_PINMUX_FUNCTION(usb0),
749         UNIPHIER_PINMUX_FUNCTION(usb1),
750         UNIPHIER_PINMUX_FUNCTION(usb2),
751         UNIPHIER_PINMUX_FUNCTION(port),
752         UNIPHIER_PINMUX_FUNCTION(xirq),
753 };
754
755 static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
756         .pins = uniphier_sld8_pins,
757         .npins = ARRAY_SIZE(uniphier_sld8_pins),
758         .groups = uniphier_sld8_groups,
759         .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
760         .functions = uniphier_sld8_functions,
761         .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
762         .caps = 0,
763 };
764
765 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
766 {
767         return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
768 }
769
770 static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
771         { .compatible = "socionext,ph1-sld8-pinctrl" },
772         { /* sentinel */ }
773 };
774 MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match);
775
776 static struct platform_driver uniphier_sld8_pinctrl_driver = {
777         .probe = uniphier_sld8_pinctrl_probe,
778         .driver = {
779                 .name = "uniphier-sld8-pinctrl",
780                 .of_match_table = uniphier_sld8_pinctrl_match,
781         },
782 };
783 module_platform_driver(uniphier_sld8_pinctrl_driver);
784
785 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
786 MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
787 MODULE_LICENSE("GPL");