GNU Linux-libre 4.9.318-gnu1
[releases.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         /* dedicated pins */
432         UNIPHIER_PINCTRL_PIN(136, "ED0", -1,
433                              0, UNIPHIER_PIN_DRV_1BIT,
434                              0, UNIPHIER_PIN_PULL_DOWN),
435         UNIPHIER_PINCTRL_PIN(137, "ED1", -1,
436                              1, UNIPHIER_PIN_DRV_1BIT,
437                              1, UNIPHIER_PIN_PULL_DOWN),
438         UNIPHIER_PINCTRL_PIN(138, "ED2", -1,
439                              2, UNIPHIER_PIN_DRV_1BIT,
440                              2, UNIPHIER_PIN_PULL_DOWN),
441         UNIPHIER_PINCTRL_PIN(139, "ED3", -1,
442                              3, UNIPHIER_PIN_DRV_1BIT,
443                              3, UNIPHIER_PIN_PULL_DOWN),
444         UNIPHIER_PINCTRL_PIN(140, "ED4", -1,
445                              4, UNIPHIER_PIN_DRV_1BIT,
446                              4, UNIPHIER_PIN_PULL_DOWN),
447         UNIPHIER_PINCTRL_PIN(141, "ED5", -1,
448                              5, UNIPHIER_PIN_DRV_1BIT,
449                              5, UNIPHIER_PIN_PULL_DOWN),
450         UNIPHIER_PINCTRL_PIN(142, "ED6", -1,
451                              6, UNIPHIER_PIN_DRV_1BIT,
452                              6, UNIPHIER_PIN_PULL_DOWN),
453         UNIPHIER_PINCTRL_PIN(143, "ED7", -1,
454                              7, UNIPHIER_PIN_DRV_1BIT,
455                              7, UNIPHIER_PIN_PULL_DOWN),
456         UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1,
457                              8, UNIPHIER_PIN_DRV_1BIT,
458                              8, UNIPHIER_PIN_PULL_UP),
459         UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1,
460                              9, UNIPHIER_PIN_DRV_1BIT,
461                              9, UNIPHIER_PIN_PULL_UP),
462         UNIPHIER_PINCTRL_PIN(146, "ERXW", -1,
463                              10, UNIPHIER_PIN_DRV_1BIT,
464                              10, UNIPHIER_PIN_PULL_UP),
465         UNIPHIER_PINCTRL_PIN(147, "ES0", -1,
466                              11, UNIPHIER_PIN_DRV_1BIT,
467                              11, UNIPHIER_PIN_PULL_UP),
468         UNIPHIER_PINCTRL_PIN(148, "ES1", -1,
469                              12, UNIPHIER_PIN_DRV_1BIT,
470                              12, UNIPHIER_PIN_PULL_UP),
471         UNIPHIER_PINCTRL_PIN(149, "ES2", -1,
472                              13, UNIPHIER_PIN_DRV_1BIT,
473                              13, UNIPHIER_PIN_PULL_UP),
474         UNIPHIER_PINCTRL_PIN(150, "XECS1", -1,
475                              14, UNIPHIER_PIN_DRV_1BIT,
476                              14, UNIPHIER_PIN_PULL_DOWN),
477 };
478
479 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
480 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
481 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
482 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
483 static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14,
484                                           61, 63, 64, 65, 66, 67, 68};
485 static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
486                                         13, 13, 27, 27, 27, 27, 27, 27, 27};
487 static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13,
488                                            14};
489 static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13,
490                                          13, 13, 13};
491 static const unsigned i2c0_pins[] = {102, 103};
492 static const int i2c0_muxvals[] = {0, 0};
493 static const unsigned i2c1_pins[] = {104, 105};
494 static const int i2c1_muxvals[] = {0, 0};
495 static const unsigned i2c2_pins[] = {108, 109};
496 static const int i2c2_muxvals[] = {2, 2};
497 static const unsigned i2c3_pins[] = {108, 109};
498 static const int i2c3_muxvals[] = {3, 3};
499 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
500                                      27, 28, 29, 30, 31};
501 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
502 static const unsigned nand_cs1_pins[] = {22, 23};
503 static const int nand_cs1_muxvals[] = {0, 0};
504 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
505 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
506 static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142,
507                                            143, 144, 145, 146, 147, 148, 149};
508 static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
509                                          -1, -1, -1, -1, -1};
510 static const unsigned system_bus_cs1_pins[] = {150};
511 static const int system_bus_cs1_muxvals[] = {-1};
512 static const unsigned system_bus_cs2_pins[] = {10};
513 static const int system_bus_cs2_muxvals[] = {1};
514 static const unsigned system_bus_cs3_pins[] = {11};
515 static const int system_bus_cs3_muxvals[] = {1};
516 static const unsigned system_bus_cs4_pins[] = {12};
517 static const int system_bus_cs4_muxvals[] = {1};
518 static const unsigned system_bus_cs5_pins[] = {13};
519 static const int system_bus_cs5_muxvals[] = {1};
520 static const unsigned uart0_pins[] = {70, 71};
521 static const int uart0_muxvals[] = {3, 3};
522 static const unsigned uart1_pins[] = {114, 115};
523 static const int uart1_muxvals[] = {0, 0};
524 static const unsigned uart2_pins[] = {112, 113};
525 static const int uart2_muxvals[] = {1, 1};
526 static const unsigned uart3_pins[] = {110, 111};
527 static const int uart3_muxvals[] = {1, 1};
528 static const unsigned usb0_pins[] = {41, 42};
529 static const int usb0_muxvals[] = {0, 0};
530 static const unsigned usb1_pins[] = {43, 44};
531 static const int usb1_muxvals[] = {0, 0};
532 static const unsigned usb2_pins[] = {114, 115};
533 static const int usb2_muxvals[] = {1, 1};
534 static const unsigned port_range0_pins[] = {
535         0, 1, 2, 3, 4, 5, 6, 7,                         /* PORT0x */
536         8, 9, 10, 11, 12, 13, 14, 15,                   /* PORT1x */
537         32, 33, 34, 35, 36, 37, 38, 39,                 /* PORT2x */
538         59, 60, 61, 62, 63, 64, 65, 66,                 /* PORT3x */
539         95, 96, 97, 98, 99, 100, 101, 57,               /* PORT4x */
540         70, 71, 72, 73, 74, 75, 76, 77,                 /* PORT5x */
541         81, 83, 84, 85, 86, 89, 90, 91,                 /* PORT6x */
542         118, 119, 120, 121, 122, 53, 54, 55,            /* PORT7x */
543         41, 42, 43, 44, 79, 80, 18, 19,                 /* PORT8x */
544         110, 111, 112, 113, 114, 115, 16, 17,           /* PORT9x */
545         40, 67, 68, 69, 78, 92, 93, 94,                 /* PORT10x */
546         48, 49, 46, 45, 123, 124, 125, 126,             /* PORT11x */
547         47, 127, 20, 56, 22,                            /* PORT120-124 */
548 };
549 static const int port_range0_muxvals[] = {
550         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT0x */
551         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT1x */
552         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT2x */
553         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT3x */
554         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT4x */
555         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT5x */
556         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT6x */
557         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT7x */
558         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT8x */
559         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT9x */
560         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT10x */
561         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT11x */
562         15, 15, 15, 15, 15,                             /* PORT120-124 */
563 };
564 static const unsigned port_range1_pins[] = {
565         116, 117,                                       /* PORT130-131 */
566 };
567 static const int port_range1_muxvals[] = {
568         15, 15,                                         /* PORT130-131 */
569 };
570 static const unsigned port_range2_pins[] = {
571         102, 103, 104, 105, 106, 107, 108, 109,         /* PORT14x */
572 };
573 static const int port_range2_muxvals[] = {
574         15, 15, 15, 15, 15, 15, 15, 15,                 /* PORT14x */
575 };
576 static const unsigned port_range3_pins[] = {
577         23,                                             /* PORT166 */
578 };
579 static const int port_range3_muxvals[] = {
580         15,                                             /* PORT166 */
581 };
582 static const unsigned xirq_range0_pins[] = {
583         128, 129, 130, 131, 132, 133, 134, 135,         /* XIRQ0-7 */
584         82, 87, 88, 50, 51,                             /* XIRQ8-12 */
585 };
586 static const int xirq_range0_muxvals[] = {
587         0, 0, 0, 0, 0, 0, 0, 0,                         /* XIRQ0-7 */
588         14, 14, 14, 14, 14,                             /* XIRQ8-12 */
589 };
590 static const unsigned xirq_range1_pins[] = {
591         52, 58,                                         /* XIRQ14-15 */
592 };
593 static const int xirq_range1_muxvals[] = {
594         14, 14,                                         /* XIRQ14-15 */
595 };
596
597 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
598         UNIPHIER_PINCTRL_GROUP(emmc),
599         UNIPHIER_PINCTRL_GROUP(emmc_dat8),
600         UNIPHIER_PINCTRL_GROUP(ether_mii),
601         UNIPHIER_PINCTRL_GROUP(ether_rmii),
602         UNIPHIER_PINCTRL_GROUP(i2c0),
603         UNIPHIER_PINCTRL_GROUP(i2c1),
604         UNIPHIER_PINCTRL_GROUP(i2c2),
605         UNIPHIER_PINCTRL_GROUP(i2c3),
606         UNIPHIER_PINCTRL_GROUP(nand),
607         UNIPHIER_PINCTRL_GROUP(nand_cs1),
608         UNIPHIER_PINCTRL_GROUP(sd),
609         UNIPHIER_PINCTRL_GROUP(system_bus),
610         UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
611         UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
612         UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
613         UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
614         UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
615         UNIPHIER_PINCTRL_GROUP(uart0),
616         UNIPHIER_PINCTRL_GROUP(uart1),
617         UNIPHIER_PINCTRL_GROUP(uart2),
618         UNIPHIER_PINCTRL_GROUP(uart3),
619         UNIPHIER_PINCTRL_GROUP(usb0),
620         UNIPHIER_PINCTRL_GROUP(usb1),
621         UNIPHIER_PINCTRL_GROUP(usb2),
622         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0),
623         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1),
624         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range2),
625         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range3),
626         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0),
627         UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1),
628         UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0),
629         UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1),
630         UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2),
631         UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3),
632         UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4),
633         UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5),
634         UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6),
635         UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7),
636         UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8),
637         UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9),
638         UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10),
639         UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11),
640         UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12),
641         UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13),
642         UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14),
643         UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15),
644         UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16),
645         UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17),
646         UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18),
647         UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19),
648         UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20),
649         UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21),
650         UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22),
651         UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23),
652         UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24),
653         UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25),
654         UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26),
655         UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27),
656         UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28),
657         UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29),
658         UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30),
659         UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31),
660         UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32),
661         UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33),
662         UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34),
663         UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35),
664         UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36),
665         UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37),
666         UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38),
667         UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39),
668         UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40),
669         UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41),
670         UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42),
671         UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43),
672         UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44),
673         UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45),
674         UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46),
675         UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47),
676         UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48),
677         UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49),
678         UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50),
679         UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51),
680         UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52),
681         UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53),
682         UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54),
683         UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55),
684         UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56),
685         UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57),
686         UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58),
687         UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59),
688         UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60),
689         UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61),
690         UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62),
691         UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63),
692         UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64),
693         UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65),
694         UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66),
695         UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67),
696         UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68),
697         UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69),
698         UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70),
699         UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71),
700         UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72),
701         UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73),
702         UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74),
703         UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75),
704         UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76),
705         UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77),
706         UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78),
707         UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79),
708         UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80),
709         UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81),
710         UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82),
711         UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83),
712         UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84),
713         UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85),
714         UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86),
715         UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87),
716         UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88),
717         UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89),
718         UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90),
719         UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91),
720         UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92),
721         UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93),
722         UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94),
723         UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95),
724         UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96),
725         UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97),
726         UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98),
727         UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99),
728         UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100),
729         UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range1, 0),
730         UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range1, 1),
731         UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range2, 0),
732         UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range2, 1),
733         UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range2, 2),
734         UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range2, 3),
735         UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range2, 4),
736         UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range2, 5),
737         UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range2, 6),
738         UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range2, 7),
739         UNIPHIER_PINCTRL_GROUP_SINGLE(port166, port_range3, 0),
740         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0),
741         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1),
742         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2),
743         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3),
744         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4),
745         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5),
746         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6),
747         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7),
748         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8),
749         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9),
750         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10),
751         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11),
752         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12),
753         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0),
754         UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1),
755 };
756
757 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
758 static const char * const ether_mii_groups[] = {"ether_mii"};
759 static const char * const ether_rmii_groups[] = {"ether_rmii"};
760 static const char * const i2c0_groups[] = {"i2c0"};
761 static const char * const i2c1_groups[] = {"i2c1"};
762 static const char * const i2c2_groups[] = {"i2c2"};
763 static const char * const i2c3_groups[] = {"i2c3"};
764 static const char * const nand_groups[] = {"nand", "nand_cs1"};
765 static const char * const sd_groups[] = {"sd"};
766 static const char * const system_bus_groups[] = {"system_bus",
767                                                  "system_bus_cs1",
768                                                  "system_bus_cs2",
769                                                  "system_bus_cs3",
770                                                  "system_bus_cs4",
771                                                  "system_bus_cs5"};
772 static const char * const uart0_groups[] = {"uart0"};
773 static const char * const uart1_groups[] = {"uart1"};
774 static const char * const uart2_groups[] = {"uart2"};
775 static const char * const uart3_groups[] = {"uart3"};
776 static const char * const usb0_groups[] = {"usb0"};
777 static const char * const usb1_groups[] = {"usb1"};
778 static const char * const usb2_groups[] = {"usb2"};
779 static const char * const port_groups[] = {
780         "port00",  "port01",  "port02",  "port03",
781         "port04",  "port05",  "port06",  "port07",
782         "port10",  "port11",  "port12",  "port13",
783         "port14",  "port15",  "port16",  "port17",
784         "port20",  "port21",  "port22",  "port23",
785         "port24",  "port25",  "port26",  "port27",
786         "port30",  "port31",  "port32",  "port33",
787         "port34",  "port35",  "port36",  "port37",
788         "port40",  "port41",  "port42",  "port43",
789         "port44",  "port45",  "port46",  "port47",
790         "port50",  "port51",  "port52",  "port53",
791         "port54",  "port55",  "port56",  "port57",
792         "port60",  "port61",  "port62",  "port63",
793         "port64",  "port65",  "port66",  "port67",
794         "port70",  "port71",  "port72",  "port73",
795         "port74",  "port75",  "port76",  "port77",
796         "port80",  "port81",  "port82",  "port83",
797         "port84",  "port85",  "port86",  "port87",
798         "port90",  "port91",  "port92",  "port93",
799         "port94",  "port95",  "port96",  "port97",
800         "port100", "port101", "port102", "port103",
801         "port104", "port105", "port106", "port107",
802         "port110", "port111", "port112", "port113",
803         "port114", "port115", "port116", "port117",
804         "port120", "port121", "port122", "port123",
805         "port124", "port125", "port126", "port127",
806         "port130", "port131", "port132", "port133",
807         "port134", "port135", "port136", "port137",
808         "port140", "port141", "port142", "port143",
809         "port144", "port145", "port146", "port147",
810         /* port150-164 missing */
811         /* none */ "port165",
812 };
813 static const char * const xirq_groups[] = {
814         "xirq0",  "xirq1",  "xirq2",  "xirq3",
815         "xirq4",  "xirq5",  "xirq6",  "xirq7",
816         "xirq8",  "xirq9",  "xirq10", "xirq11",
817         "xirq12", /* none*/ "xirq14", "xirq15",
818 };
819
820 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
821         UNIPHIER_PINMUX_FUNCTION(emmc),
822         UNIPHIER_PINMUX_FUNCTION(ether_mii),
823         UNIPHIER_PINMUX_FUNCTION(ether_rmii),
824         UNIPHIER_PINMUX_FUNCTION(i2c0),
825         UNIPHIER_PINMUX_FUNCTION(i2c1),
826         UNIPHIER_PINMUX_FUNCTION(i2c2),
827         UNIPHIER_PINMUX_FUNCTION(i2c3),
828         UNIPHIER_PINMUX_FUNCTION(nand),
829         UNIPHIER_PINMUX_FUNCTION(sd),
830         UNIPHIER_PINMUX_FUNCTION(system_bus),
831         UNIPHIER_PINMUX_FUNCTION(uart0),
832         UNIPHIER_PINMUX_FUNCTION(uart1),
833         UNIPHIER_PINMUX_FUNCTION(uart2),
834         UNIPHIER_PINMUX_FUNCTION(uart3),
835         UNIPHIER_PINMUX_FUNCTION(usb0),
836         UNIPHIER_PINMUX_FUNCTION(usb1),
837         UNIPHIER_PINMUX_FUNCTION(usb2),
838         UNIPHIER_PINMUX_FUNCTION(port),
839         UNIPHIER_PINMUX_FUNCTION(xirq),
840 };
841
842 static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
843         .pins = uniphier_sld8_pins,
844         .npins = ARRAY_SIZE(uniphier_sld8_pins),
845         .groups = uniphier_sld8_groups,
846         .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
847         .functions = uniphier_sld8_functions,
848         .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
849         .caps = 0,
850 };
851
852 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
853 {
854         return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
855 }
856
857 static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
858         { .compatible = "socionext,uniphier-sld8-pinctrl" },
859         { .compatible = "socionext,ph1-sld8-pinctrl" },
860         { /* sentinel */ }
861 };
862 MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match);
863
864 static struct platform_driver uniphier_sld8_pinctrl_driver = {
865         .probe = uniphier_sld8_pinctrl_probe,
866         .driver = {
867                 .name = "uniphier-sld8-pinctrl",
868                 .of_match_table = uniphier_sld8_pinctrl_match,
869         },
870 };
871 module_platform_driver(uniphier_sld8_pinctrl_driver);
872
873 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
874 MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
875 MODULE_LICENSE("GPL");