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