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