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