]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / pinctrl / uniphier / pinctrl-ph1-sld8.c
1 /*
2  * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  */
14
15 #include <linux/kernel.h>
16 #include <linux/module.h>
17 #include <linux/pinctrl/pinctrl.h>
18 #include <linux/platform_device.h>
19
20 #include "pinctrl-uniphier.h"
21
22 #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         .remove = uniphier_pinctrl_remove,
790         .driver = {
791                 .name = DRIVER_NAME,
792                 .of_match_table = ph1_sld8_pinctrl_match,
793         },
794 };
795 module_platform_driver(ph1_sld8_pinctrl_driver);
796
797 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
798 MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
799 MODULE_LICENSE("GPL");