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
24static 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
435static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
436static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
437static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
438static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
439static const unsigned i2c0_pins[] = {102, 103};
440static const unsigned i2c0_muxvals[] = {0, 0};
441static const unsigned i2c1_pins[] = {104, 105};
442static const unsigned i2c1_muxvals[] = {0, 0};
443static const unsigned i2c2_pins[] = {108, 109};
444static const unsigned i2c2_muxvals[] = {2, 2};
445static const unsigned i2c3_pins[] = {108, 109};
446static const unsigned i2c3_muxvals[] = {3, 3};
447static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
448				     27, 28, 29, 30, 31};
449static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
450					0, 0};
451static const unsigned nand_cs1_pins[] = {22, 23};
452static const unsigned nand_cs1_muxvals[] = {0, 0};
453static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
454static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
455static const unsigned uart0_pins[] = {70, 71};
456static const unsigned uart0_muxvals[] = {3, 3};
457static const unsigned uart1_pins[] = {114, 115};
458static const unsigned uart1_muxvals[] = {0, 0};
459static const unsigned uart2_pins[] = {112, 113};
460static const unsigned uart2_muxvals[] = {1, 1};
461static const unsigned uart3_pins[] = {110, 111};
462static const unsigned uart3_muxvals[] = {1, 1};
463static const unsigned usb0_pins[] = {41, 42};
464static const unsigned usb0_muxvals[] = {0, 0};
465static const unsigned usb1_pins[] = {43, 44};
466static const unsigned usb1_muxvals[] = {0, 0};
467static const unsigned usb2_pins[] = {114, 115};
468static const unsigned usb2_muxvals[] = {1, 1};
469static 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};
484static 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};
499static const unsigned port_range1_pins[] = {
500	116, 117,					/* PORT130-131 */
501};
502static const unsigned port_range1_muxvals[] = {
503	15, 15,						/* PORT130-131 */
504};
505static const unsigned port_range2_pins[] = {
506	102, 103, 104, 105, 106, 107, 108, 109,		/* PORT14x */
507};
508static const unsigned port_range2_muxvals[] = {
509	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT14x */
510};
511static const unsigned port_range3_pins[] = {
512	23,						/* PORT166 */
513};
514static const unsigned port_range3_muxvals[] = {
515	15,						/* PORT166 */
516};
517static 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};
521static 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};
525static const unsigned xirq_range1_pins[] = {
526	52, 58,						/* XIRQ14-15 */
527};
528static const unsigned xirq_range1_muxvals[] = {
529	14, 14,						/* XIRQ14-15 */
530};
531
532static 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
684static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
685static const char * const i2c0_groups[] = {"i2c0"};
686static const char * const i2c1_groups[] = {"i2c1"};
687static const char * const i2c2_groups[] = {"i2c2"};
688static const char * const i2c3_groups[] = {"i2c3"};
689static const char * const nand_groups[] = {"nand", "nand_cs1"};
690static const char * const sd_groups[] = {"sd"};
691static const char * const uart0_groups[] = {"uart0"};
692static const char * const uart1_groups[] = {"uart1"};
693static const char * const uart2_groups[] = {"uart2"};
694static const char * const uart3_groups[] = {"uart3"};
695static const char * const usb0_groups[] = {"usb0"};
696static const char * const usb1_groups[] = {"usb1"};
697static const char * const usb2_groups[] = {"usb2"};
698static 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};
732static 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
739static 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
758static 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
768static 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
775static 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
781static const struct of_device_id ph1_sld8_pinctrl_match[] = {
782	{ .compatible = "socionext,ph1-sld8-pinctrl" },
783	{ /* sentinel */ }
784};
785MODULE_DEVICE_TABLE(of, ph1_sld8_pinctrl_match);
786
787static struct platform_driver ph1_sld8_pinctrl_driver = {
788	.probe = ph1_sld8_pinctrl_probe,
789	.remove = uniphier_pinctrl_remove,
790	.driver = {
791		.name = DRIVER_NAME,
792		.of_match_table = ph1_sld8_pinctrl_match,
793	},
794};
795module_platform_driver(ph1_sld8_pinctrl_driver);
796
797MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
798MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
799MODULE_LICENSE("GPL");
800