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),
520 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
521 static const int emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1};
522 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
523 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
524 static const unsigned i2c0_pins[] = {102, 103};
525 static const int i2c0_muxvals[] = {0, 0};
526 static const unsigned i2c1_pins[] = {104, 105};
527 static const int i2c1_muxvals[] = {0, 0};
528 static const unsigned i2c2_pins[] = {108, 109};
529 static const int i2c2_muxvals[] = {2, 2};
530 static const unsigned i2c3_pins[] = {108, 109};
531 static const int i2c3_muxvals[] = {3, 3};
532 static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159,
533 160, 161, 162, 163, 164};
534 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
535 static const unsigned nand_cs1_pins[] = {22, 23};
536 static const int nand_cs1_muxvals[] = {0, 0};
537 static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
538 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
539 static const unsigned uart0_pins[] = {85, 88};
540 static const int uart0_muxvals[] = {1, 1};
541 static const unsigned uart1_pins[] = {155, 156};
542 static const int uart1_muxvals[] = {13, 13};
543 static const unsigned uart1b_pins[] = {69, 70};
544 static const int uart1b_muxvals[] = {23, 23};
545 static const unsigned uart2_pins[] = {128, 129};
546 static const int uart2_muxvals[] = {13, 13};
547 static const unsigned uart3_pins[] = {110, 111};
548 static const int uart3_muxvals[] = {1, 1};
549 static const unsigned usb0_pins[] = {53, 54};
550 static const int usb0_muxvals[] = {0, 0};
551 static const unsigned usb1_pins[] = {55, 56};
552 static const int usb1_muxvals[] = {0, 0};
553 static const unsigned usb2_pins[] = {155, 156};
554 static const int usb2_muxvals[] = {4, 4};
555 static const unsigned usb2b_pins[] = {67, 68};
556 static const int usb2b_muxvals[] = {23, 23};
557 static const unsigned port_range0_pins[] = {
558 135, 136, 137, 138, 139, 140, 141, 142, /* PORT0x */
559 143, 144, 145, 146, 147, 148, 149, 150, /* PORT1x */
560 151, 152, 153, 154, 155, 156, 157, 0, /* PORT2x */
561 1, 2, 3, 4, 5, 120, 121, 122, /* PORT3x */
562 24, 25, 26, 27, 28, 29, 30, 31, /* PORT4x */
563 40, 41, 42, 43, 44, 45, 46, 47, /* PORT5x */
564 48, 49, 50, 51, 52, 53, 54, 55, /* PORT6x */
565 56, 85, 84, 59, 82, 61, 64, 65, /* PORT7x */
566 8, 9, 10, 11, 12, 13, 14, 15, /* PORT8x */
567 66, 67, 68, 69, 70, 71, 72, 73, /* PORT9x */
568 74, 75, 89, 86, 78, 79, 80, 81, /* PORT10x */
569 60, 83, 58, 57, 88, 87, 77, 76, /* PORT11x */
570 90, 91, 92, 93, 94, 95, 96, 97, /* PORT12x */
571 98, 99, 100, 6, 101, 114, 115, 116, /* PORT13x */
572 103, 108, 21, 22, 23, 117, 118, 119, /* PORT14x */
574 static const int port_range0_muxvals[] = {
575 0, 0, 0, 0, 0, 0, 0, 0, /* PORT0x */
576 0, 0, 0, 0, 0, 0, 0, 0, /* PORT1x */
577 0, 0, 0, 0, 0, 0, 0, 15, /* PORT2x */
578 15, 15, 15, 15, 15, 15, 15, 15, /* PORT3x */
579 15, 15, 15, 15, 15, 15, 15, 15, /* PORT4x */
580 15, 15, 15, 15, 15, 15, 15, 15, /* PORT5x */
581 15, 15, 15, 15, 15, 15, 15, 15, /* PORT6x */
582 15, 15, 15, 15, 15, 15, 15, 15, /* PORT7x */
583 15, 15, 15, 15, 15, 15, 15, 15, /* PORT8x */
584 15, 15, 15, 15, 15, 15, 15, 15, /* PORT9x */
585 15, 15, 15, 15, 15, 15, 15, 15, /* PORT10x */
586 15, 15, 15, 15, 15, 15, 15, 15, /* PORT11x */
587 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */
588 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */
589 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
591 static const unsigned port_range1_pins[] = {
594 static const int port_range1_muxvals[] = {
597 static const unsigned xirq_range0_pins[] = {
598 151, 123, 124, 125, 126, 127, 128, 129, /* XIRQ0-7 */
599 130, 131, 132, 133, 62, /* XIRQ8-12 */
601 static const int xirq_range0_muxvals[] = {
602 14, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */
603 0, 0, 0, 0, 14, /* XIRQ8-12 */
605 static const unsigned xirq_range1_pins[] = {
606 134, 63, /* XIRQ14-15 */
608 static const int xirq_range1_muxvals[] = {
609 0, 14, /* XIRQ14-15 */
612 static const struct uniphier_pinctrl_group uniphier_ld4_groups[] = {
613 UNIPHIER_PINCTRL_GROUP(emmc),
614 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
615 UNIPHIER_PINCTRL_GROUP(i2c0),
616 UNIPHIER_PINCTRL_GROUP(i2c1),
617 UNIPHIER_PINCTRL_GROUP(i2c2),
618 UNIPHIER_PINCTRL_GROUP(i2c3),
619 UNIPHIER_PINCTRL_GROUP(nand),
620 UNIPHIER_PINCTRL_GROUP(nand_cs1),
621 UNIPHIER_PINCTRL_GROUP(sd),
622 UNIPHIER_PINCTRL_GROUP(uart0),
623 UNIPHIER_PINCTRL_GROUP(uart1),
624 UNIPHIER_PINCTRL_GROUP(uart1b),
625 UNIPHIER_PINCTRL_GROUP(uart2),
626 UNIPHIER_PINCTRL_GROUP(uart3),
627 UNIPHIER_PINCTRL_GROUP(usb0),
628 UNIPHIER_PINCTRL_GROUP(usb1),
629 UNIPHIER_PINCTRL_GROUP(usb2),
630 UNIPHIER_PINCTRL_GROUP(usb2b),
631 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0),
632 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1),
633 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0),
634 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1),
635 UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0),
636 UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1),
637 UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2),
638 UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3),
639 UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4),
640 UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5),
641 UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6),
642 UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7),
643 UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8),
644 UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9),
645 UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10),
646 UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11),
647 UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12),
648 UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13),
649 UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14),
650 UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15),
651 UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16),
652 UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17),
653 UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18),
654 UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19),
655 UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20),
656 UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21),
657 UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22),
658 UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23),
659 UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24),
660 UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25),
661 UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26),
662 UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27),
663 UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28),
664 UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29),
665 UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30),
666 UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31),
667 UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32),
668 UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33),
669 UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34),
670 UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35),
671 UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36),
672 UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37),
673 UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38),
674 UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39),
675 UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40),
676 UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41),
677 UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42),
678 UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43),
679 UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44),
680 UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45),
681 UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46),
682 UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47),
683 UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48),
684 UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49),
685 UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50),
686 UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51),
687 UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52),
688 UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53),
689 UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54),
690 UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55),
691 UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56),
692 UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57),
693 UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58),
694 UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59),
695 UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60),
696 UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61),
697 UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62),
698 UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63),
699 UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64),
700 UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65),
701 UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66),
702 UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67),
703 UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68),
704 UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69),
705 UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70),
706 UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71),
707 UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72),
708 UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73),
709 UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74),
710 UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75),
711 UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76),
712 UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77),
713 UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78),
714 UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79),
715 UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80),
716 UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81),
717 UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82),
718 UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83),
719 UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84),
720 UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85),
721 UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86),
722 UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87),
723 UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88),
724 UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89),
725 UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90),
726 UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91),
727 UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92),
728 UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93),
729 UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94),
730 UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95),
731 UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96),
732 UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97),
733 UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98),
734 UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99),
735 UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100),
736 UNIPHIER_PINCTRL_GROUP_SINGLE(port125, port_range0, 101),
737 UNIPHIER_PINCTRL_GROUP_SINGLE(port126, port_range0, 102),
738 UNIPHIER_PINCTRL_GROUP_SINGLE(port127, port_range0, 103),
739 UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range0, 104),
740 UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range0, 105),
741 UNIPHIER_PINCTRL_GROUP_SINGLE(port132, port_range0, 106),
742 UNIPHIER_PINCTRL_GROUP_SINGLE(port133, port_range0, 107),
743 UNIPHIER_PINCTRL_GROUP_SINGLE(port134, port_range0, 108),
744 UNIPHIER_PINCTRL_GROUP_SINGLE(port135, port_range0, 109),
745 UNIPHIER_PINCTRL_GROUP_SINGLE(port136, port_range0, 110),
746 UNIPHIER_PINCTRL_GROUP_SINGLE(port137, port_range0, 111),
747 UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range0, 112),
748 UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range0, 113),
749 UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range0, 114),
750 UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range0, 115),
751 UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range0, 116),
752 UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range0, 117),
753 UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range0, 118),
754 UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range0, 119),
755 UNIPHIER_PINCTRL_GROUP_SINGLE(port165, port_range1, 0),
756 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0),
757 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1),
758 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2),
759 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3),
760 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4),
761 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5),
762 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6),
763 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7),
764 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8),
765 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9),
766 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10),
767 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11),
768 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12),
769 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0),
770 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1),
773 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
774 static const char * const i2c0_groups[] = {"i2c0"};
775 static const char * const i2c1_groups[] = {"i2c1"};
776 static const char * const i2c2_groups[] = {"i2c2"};
777 static const char * const i2c3_groups[] = {"i2c3"};
778 static const char * const nand_groups[] = {"nand", "nand_cs1"};
779 static const char * const sd_groups[] = {"sd"};
780 static const char * const uart0_groups[] = {"uart0"};
781 static const char * const uart1_groups[] = {"uart1", "uart1b"};
782 static const char * const uart2_groups[] = {"uart2"};
783 static const char * const uart3_groups[] = {"uart3"};
784 static const char * const usb0_groups[] = {"usb0"};
785 static const char * const usb1_groups[] = {"usb1"};
786 static const char * const usb2_groups[] = {"usb2", "usb2b"};
787 static const char * const port_groups[] = {
788 "port00", "port01", "port02", "port03",
789 "port04", "port05", "port06", "port07",
790 "port10", "port11", "port12", "port13",
791 "port14", "port15", "port16", "port17",
792 "port20", "port21", "port22", "port23",
793 "port24", "port25", "port26", "port27",
794 "port30", "port31", "port32", "port33",
795 "port34", "port35", "port36", "port37",
796 "port40", "port41", "port42", "port43",
797 "port44", "port45", "port46", "port47",
798 "port50", "port51", "port52", "port53",
799 "port54", "port55", "port56", "port57",
800 "port60", "port61", "port62", "port63",
801 "port64", "port65", "port66", "port67",
802 "port70", "port71", "port72", "port73",
803 "port74", "port75", "port76", "port77",
804 "port80", "port81", "port82", "port83",
805 "port84", "port85", "port86", "port87",
806 "port90", "port91", "port92", "port93",
807 "port94", "port95", "port96", "port97",
808 "port100", "port101", "port102", "port103",
809 "port104", "port105", "port106", "port107",
810 "port110", "port111", "port112", "port113",
811 "port114", "port115", "port116", "port117",
812 "port120", "port121", "port122", "port123",
813 "port124", "port125", "port126", "port127",
814 "port130", "port131", "port132", "port133",
815 "port134", "port135", "port136", "port137",
816 "port140", "port141", "port142", "port143",
817 "port144", "port145", "port146", "port147",
818 /* port150-164 missing */
819 /* none */ "port165",
821 static const char * const xirq_groups[] = {
822 "xirq0", "xirq1", "xirq2", "xirq3",
823 "xirq4", "xirq5", "xirq6", "xirq7",
824 "xirq8", "xirq9", "xirq10", "xirq11",
825 "xirq12", /* none*/ "xirq14", "xirq15",
828 static const struct uniphier_pinmux_function uniphier_ld4_functions[] = {
829 UNIPHIER_PINMUX_FUNCTION(emmc),
830 UNIPHIER_PINMUX_FUNCTION(i2c0),
831 UNIPHIER_PINMUX_FUNCTION(i2c1),
832 UNIPHIER_PINMUX_FUNCTION(i2c2),
833 UNIPHIER_PINMUX_FUNCTION(i2c3),
834 UNIPHIER_PINMUX_FUNCTION(nand),
835 UNIPHIER_PINMUX_FUNCTION(sd),
836 UNIPHIER_PINMUX_FUNCTION(uart0),
837 UNIPHIER_PINMUX_FUNCTION(uart1),
838 UNIPHIER_PINMUX_FUNCTION(uart2),
839 UNIPHIER_PINMUX_FUNCTION(uart3),
840 UNIPHIER_PINMUX_FUNCTION(usb0),
841 UNIPHIER_PINMUX_FUNCTION(usb1),
842 UNIPHIER_PINMUX_FUNCTION(usb2),
843 UNIPHIER_PINMUX_FUNCTION(port),
844 UNIPHIER_PINMUX_FUNCTION(xirq),
847 static struct uniphier_pinctrl_socdata uniphier_ld4_pindata = {
848 .pins = uniphier_ld4_pins,
849 .npins = ARRAY_SIZE(uniphier_ld4_pins),
850 .groups = uniphier_ld4_groups,
851 .groups_count = ARRAY_SIZE(uniphier_ld4_groups),
852 .functions = uniphier_ld4_functions,
853 .functions_count = ARRAY_SIZE(uniphier_ld4_functions),
857 static int uniphier_ld4_pinctrl_probe(struct platform_device *pdev)
859 return uniphier_pinctrl_probe(pdev, &uniphier_ld4_pindata);
862 static const struct of_device_id uniphier_ld4_pinctrl_match[] = {
863 { .compatible = "socionext,ph1-ld4-pinctrl" },
866 MODULE_DEVICE_TABLE(of, uniphier_ld4_pinctrl_match);
868 static struct platform_driver uniphier_ld4_pinctrl_driver = {
869 .probe = uniphier_ld4_pinctrl_probe,
871 .name = "uniphier-ld4-pinctrl",
872 .of_match_table = uniphier_ld4_pinctrl_match,
875 module_platform_driver(uniphier_ld4_pinctrl_driver);
877 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
878 MODULE_DESCRIPTION("UniPhier PH1-LD4 pinctrl driver");
879 MODULE_LICENSE("GPL");