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