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