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