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_sld8_pins[] = {
23 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
24 15, UNIPHIER_PIN_DRV_1BIT,
25 15, UNIPHIER_PIN_PULL_DOWN),
26 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
27 16, UNIPHIER_PIN_DRV_1BIT,
28 16, UNIPHIER_PIN_PULL_DOWN),
29 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
30 17, UNIPHIER_PIN_DRV_1BIT,
31 17, UNIPHIER_PIN_PULL_DOWN),
32 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
33 18, UNIPHIER_PIN_DRV_1BIT,
34 18, UNIPHIER_PIN_PULL_DOWN),
35 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
36 19, UNIPHIER_PIN_DRV_1BIT,
37 19, UNIPHIER_PIN_PULL_DOWN),
38 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
39 20, UNIPHIER_PIN_DRV_1BIT,
40 20, UNIPHIER_PIN_PULL_DOWN),
41 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
42 21, UNIPHIER_PIN_DRV_1BIT,
43 21, UNIPHIER_PIN_PULL_DOWN),
44 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
45 22, UNIPHIER_PIN_DRV_1BIT,
46 22, UNIPHIER_PIN_PULL_DOWN),
47 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
48 23, UNIPHIER_PIN_DRV_1BIT,
49 23, UNIPHIER_PIN_PULL_DOWN),
50 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
51 24, UNIPHIER_PIN_DRV_1BIT,
52 24, UNIPHIER_PIN_PULL_DOWN),
53 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
54 25, UNIPHIER_PIN_DRV_1BIT,
55 25, UNIPHIER_PIN_PULL_DOWN),
56 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
57 26, UNIPHIER_PIN_DRV_1BIT,
58 26, UNIPHIER_PIN_PULL_DOWN),
59 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
60 27, UNIPHIER_PIN_DRV_1BIT,
61 27, UNIPHIER_PIN_PULL_DOWN),
62 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
63 28, UNIPHIER_PIN_DRV_1BIT,
64 28, UNIPHIER_PIN_PULL_DOWN),
65 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
66 29, UNIPHIER_PIN_DRV_1BIT,
67 29, UNIPHIER_PIN_PULL_DOWN),
68 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
69 30, UNIPHIER_PIN_DRV_1BIT,
70 30, UNIPHIER_PIN_PULL_UP),
71 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
72 31, UNIPHIER_PIN_DRV_1BIT,
73 31, UNIPHIER_PIN_PULL_UP),
74 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
75 32, UNIPHIER_PIN_DRV_1BIT,
76 32, UNIPHIER_PIN_PULL_DOWN),
77 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
78 33, UNIPHIER_PIN_DRV_1BIT,
79 33, UNIPHIER_PIN_PULL_DOWN),
80 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
81 34, UNIPHIER_PIN_DRV_1BIT,
82 34, UNIPHIER_PIN_PULL_DOWN),
83 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
84 35, UNIPHIER_PIN_DRV_1BIT,
85 35, UNIPHIER_PIN_PULL_UP),
86 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
87 36, UNIPHIER_PIN_DRV_1BIT,
88 36, UNIPHIER_PIN_PULL_UP),
89 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
90 0, UNIPHIER_PIN_DRV_2BIT,
91 119, UNIPHIER_PIN_PULL_UP),
92 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
93 1, UNIPHIER_PIN_DRV_2BIT,
94 120, UNIPHIER_PIN_PULL_UP),
95 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
96 2, UNIPHIER_PIN_DRV_2BIT,
97 121, UNIPHIER_PIN_PULL_UP),
98 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
99 3, UNIPHIER_PIN_DRV_2BIT,
100 122, UNIPHIER_PIN_PULL_UP),
101 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
102 4, UNIPHIER_PIN_DRV_2BIT,
103 123, UNIPHIER_PIN_PULL_UP),
104 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
105 5, UNIPHIER_PIN_DRV_2BIT,
106 124, UNIPHIER_PIN_PULL_UP),
107 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
108 6, UNIPHIER_PIN_DRV_2BIT,
109 125, UNIPHIER_PIN_PULL_UP),
110 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
111 7, UNIPHIER_PIN_DRV_2BIT,
112 126, UNIPHIER_PIN_PULL_UP),
113 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
114 8, UNIPHIER_PIN_DRV_2BIT,
115 127, UNIPHIER_PIN_PULL_UP),
116 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
117 9, UNIPHIER_PIN_DRV_2BIT,
118 128, UNIPHIER_PIN_PULL_UP),
119 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
120 10, UNIPHIER_PIN_DRV_2BIT,
121 -1, UNIPHIER_PIN_PULL_NONE),
122 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
123 11, UNIPHIER_PIN_DRV_2BIT,
124 -1, UNIPHIER_PIN_PULL_NONE),
125 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
126 12, UNIPHIER_PIN_DRV_2BIT,
127 -1, UNIPHIER_PIN_PULL_NONE),
128 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
129 13, UNIPHIER_PIN_DRV_2BIT,
130 -1, UNIPHIER_PIN_PULL_NONE),
131 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
132 14, UNIPHIER_PIN_DRV_2BIT,
133 -1, UNIPHIER_PIN_PULL_NONE),
134 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
135 15, UNIPHIER_PIN_DRV_2BIT,
136 -1, UNIPHIER_PIN_PULL_NONE),
137 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
138 -1, UNIPHIER_PIN_DRV_FIXED4,
139 129, UNIPHIER_PIN_PULL_DOWN),
140 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
141 -1, UNIPHIER_PIN_DRV_FIXED4,
142 130, UNIPHIER_PIN_PULL_DOWN),
143 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
144 -1, UNIPHIER_PIN_DRV_FIXED4,
145 131, UNIPHIER_PIN_PULL_DOWN),
146 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
147 37, UNIPHIER_PIN_DRV_1BIT,
148 37, UNIPHIER_PIN_PULL_DOWN),
149 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
150 38, UNIPHIER_PIN_DRV_1BIT,
151 38, UNIPHIER_PIN_PULL_DOWN),
152 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
153 39, UNIPHIER_PIN_DRV_1BIT,
154 39, UNIPHIER_PIN_PULL_DOWN),
155 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
156 40, UNIPHIER_PIN_DRV_1BIT,
157 40, UNIPHIER_PIN_PULL_DOWN),
158 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
159 41, UNIPHIER_PIN_DRV_1BIT,
160 41, UNIPHIER_PIN_PULL_DOWN),
161 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
162 42, UNIPHIER_PIN_DRV_1BIT,
163 42, UNIPHIER_PIN_PULL_DOWN),
164 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
165 43, UNIPHIER_PIN_DRV_1BIT,
166 43, UNIPHIER_PIN_PULL_DOWN),
167 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
168 44, UNIPHIER_PIN_DRV_1BIT,
169 44, UNIPHIER_PIN_PULL_DOWN),
170 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
171 45, UNIPHIER_PIN_DRV_1BIT,
172 45, UNIPHIER_PIN_PULL_DOWN),
173 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
174 46, UNIPHIER_PIN_DRV_1BIT,
175 46, UNIPHIER_PIN_PULL_DOWN),
176 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
177 47, UNIPHIER_PIN_DRV_1BIT,
178 47, UNIPHIER_PIN_PULL_DOWN),
179 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
180 48, UNIPHIER_PIN_DRV_1BIT,
181 48, UNIPHIER_PIN_PULL_DOWN),
182 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
183 49, UNIPHIER_PIN_DRV_1BIT,
184 49, UNIPHIER_PIN_PULL_DOWN),
185 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
186 50, UNIPHIER_PIN_DRV_1BIT,
187 50, UNIPHIER_PIN_PULL_DOWN),
188 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
189 51, UNIPHIER_PIN_DRV_1BIT,
190 51, UNIPHIER_PIN_PULL_DOWN),
191 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
192 52, UNIPHIER_PIN_DRV_1BIT,
193 52, UNIPHIER_PIN_PULL_DOWN),
194 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
195 53, UNIPHIER_PIN_DRV_1BIT,
196 53, UNIPHIER_PIN_PULL_DOWN),
197 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
198 54, UNIPHIER_PIN_DRV_1BIT,
199 54, UNIPHIER_PIN_PULL_DOWN),
200 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
201 55, UNIPHIER_PIN_DRV_1BIT,
202 55, UNIPHIER_PIN_PULL_DOWN),
203 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
204 56, UNIPHIER_PIN_DRV_1BIT,
205 56, UNIPHIER_PIN_PULL_DOWN),
206 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
207 57, UNIPHIER_PIN_DRV_1BIT,
208 57, UNIPHIER_PIN_PULL_DOWN),
209 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
210 58, UNIPHIER_PIN_DRV_1BIT,
211 58, UNIPHIER_PIN_PULL_DOWN),
212 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
213 59, UNIPHIER_PIN_DRV_1BIT,
214 59, UNIPHIER_PIN_PULL_DOWN),
215 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
216 60, UNIPHIER_PIN_DRV_1BIT,
217 60, UNIPHIER_PIN_PULL_DOWN),
218 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
219 61, UNIPHIER_PIN_DRV_1BIT,
220 61, UNIPHIER_PIN_PULL_DOWN),
221 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
222 62, UNIPHIER_PIN_DRV_1BIT,
223 62, UNIPHIER_PIN_PULL_DOWN),
224 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
225 63, UNIPHIER_PIN_DRV_1BIT,
226 63, UNIPHIER_PIN_PULL_DOWN),
227 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
228 64, UNIPHIER_PIN_DRV_1BIT,
229 64, UNIPHIER_PIN_PULL_DOWN),
230 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
231 65, UNIPHIER_PIN_DRV_1BIT,
232 65, UNIPHIER_PIN_PULL_DOWN),
233 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
234 66, UNIPHIER_PIN_DRV_1BIT,
235 66, UNIPHIER_PIN_PULL_DOWN),
236 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
237 67, UNIPHIER_PIN_DRV_1BIT,
238 67, UNIPHIER_PIN_PULL_DOWN),
239 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
240 68, UNIPHIER_PIN_DRV_1BIT,
241 68, UNIPHIER_PIN_PULL_DOWN),
242 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
243 69, UNIPHIER_PIN_DRV_1BIT,
244 69, UNIPHIER_PIN_PULL_DOWN),
245 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
246 70, UNIPHIER_PIN_DRV_1BIT,
247 70, UNIPHIER_PIN_PULL_DOWN),
248 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
249 71, UNIPHIER_PIN_DRV_1BIT,
250 71, UNIPHIER_PIN_PULL_DOWN),
251 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
252 72, UNIPHIER_PIN_DRV_1BIT,
253 72, UNIPHIER_PIN_PULL_DOWN),
254 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
255 73, UNIPHIER_PIN_DRV_1BIT,
256 73, UNIPHIER_PIN_PULL_DOWN),
257 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
258 74, UNIPHIER_PIN_DRV_1BIT,
259 74, UNIPHIER_PIN_PULL_DOWN),
260 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
261 75, UNIPHIER_PIN_DRV_1BIT,
262 75, UNIPHIER_PIN_PULL_DOWN),
263 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
264 76, UNIPHIER_PIN_DRV_1BIT,
265 76, UNIPHIER_PIN_PULL_DOWN),
266 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
267 77, UNIPHIER_PIN_DRV_1BIT,
268 77, UNIPHIER_PIN_PULL_DOWN),
269 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
270 78, UNIPHIER_PIN_DRV_1BIT,
271 78, UNIPHIER_PIN_PULL_DOWN),
272 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
273 79, UNIPHIER_PIN_DRV_1BIT,
274 79, UNIPHIER_PIN_PULL_DOWN),
275 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
276 80, UNIPHIER_PIN_DRV_1BIT,
277 80, UNIPHIER_PIN_PULL_DOWN),
278 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
279 81, UNIPHIER_PIN_DRV_1BIT,
280 81, UNIPHIER_PIN_PULL_DOWN),
281 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
282 82, UNIPHIER_PIN_DRV_1BIT,
283 82, UNIPHIER_PIN_PULL_DOWN),
284 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
285 83, UNIPHIER_PIN_DRV_1BIT,
286 83, UNIPHIER_PIN_PULL_DOWN),
287 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
288 84, UNIPHIER_PIN_DRV_1BIT,
289 84, UNIPHIER_PIN_PULL_DOWN),
290 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
291 85, UNIPHIER_PIN_DRV_1BIT,
292 85, UNIPHIER_PIN_PULL_DOWN),
293 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
294 86, UNIPHIER_PIN_DRV_1BIT,
295 86, UNIPHIER_PIN_PULL_DOWN),
296 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
297 87, UNIPHIER_PIN_DRV_1BIT,
298 87, UNIPHIER_PIN_PULL_DOWN),
299 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
300 -1, UNIPHIER_PIN_DRV_FIXED4,
301 132, UNIPHIER_PIN_PULL_DOWN),
302 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
303 -1, UNIPHIER_PIN_DRV_FIXED4,
304 133, UNIPHIER_PIN_PULL_DOWN),
305 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
306 -1, UNIPHIER_PIN_DRV_FIXED4,
307 134, UNIPHIER_PIN_PULL_DOWN),
308 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
309 88, UNIPHIER_PIN_DRV_1BIT,
310 88, UNIPHIER_PIN_PULL_DOWN),
311 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
312 89, UNIPHIER_PIN_DRV_1BIT,
313 89, UNIPHIER_PIN_PULL_DOWN),
314 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
315 90, UNIPHIER_PIN_DRV_1BIT,
316 90, UNIPHIER_PIN_PULL_DOWN),
317 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
318 91, UNIPHIER_PIN_DRV_1BIT,
319 91, UNIPHIER_PIN_PULL_DOWN),
320 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
321 92, UNIPHIER_PIN_DRV_1BIT,
322 92, UNIPHIER_PIN_PULL_DOWN),
323 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
324 93, UNIPHIER_PIN_DRV_1BIT,
325 93, UNIPHIER_PIN_PULL_UP),
326 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
327 94, UNIPHIER_PIN_DRV_1BIT,
328 94, UNIPHIER_PIN_PULL_DOWN),
329 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
330 -1, UNIPHIER_PIN_DRV_FIXED4,
331 -1, UNIPHIER_PIN_PULL_NONE),
332 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
333 -1, UNIPHIER_PIN_DRV_FIXED4,
334 -1, UNIPHIER_PIN_PULL_NONE),
335 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
336 -1, UNIPHIER_PIN_DRV_FIXED4,
337 -1, UNIPHIER_PIN_PULL_NONE),
338 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
339 -1, UNIPHIER_PIN_DRV_FIXED4,
340 -1, UNIPHIER_PIN_PULL_NONE),
341 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
342 -1, UNIPHIER_PIN_DRV_FIXED4,
343 -1, UNIPHIER_PIN_PULL_NONE),
344 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
345 -1, UNIPHIER_PIN_DRV_FIXED4,
346 -1, UNIPHIER_PIN_PULL_NONE),
347 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
348 -1, UNIPHIER_PIN_DRV_FIXED4,
349 -1, UNIPHIER_PIN_PULL_NONE),
350 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
351 -1, UNIPHIER_PIN_DRV_FIXED4,
352 -1, UNIPHIER_PIN_PULL_NONE),
353 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
354 95, UNIPHIER_PIN_DRV_1BIT,
355 95, UNIPHIER_PIN_PULL_UP),
356 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
357 96, UNIPHIER_PIN_DRV_1BIT,
358 96, UNIPHIER_PIN_PULL_UP),
359 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
360 97, UNIPHIER_PIN_DRV_1BIT,
361 97, UNIPHIER_PIN_PULL_UP),
362 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
363 98, UNIPHIER_PIN_DRV_1BIT,
364 98, UNIPHIER_PIN_PULL_UP),
365 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
366 99, UNIPHIER_PIN_DRV_1BIT,
367 99, UNIPHIER_PIN_PULL_UP),
368 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
369 100, UNIPHIER_PIN_DRV_1BIT,
370 100, UNIPHIER_PIN_PULL_UP),
371 UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
372 -1, UNIPHIER_PIN_DRV_FIXED5,
373 -1, UNIPHIER_PIN_PULL_NONE),
374 UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
375 -1, UNIPHIER_PIN_DRV_FIXED5,
376 -1, UNIPHIER_PIN_PULL_NONE),
377 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
378 101, UNIPHIER_PIN_DRV_1BIT,
379 101, UNIPHIER_PIN_PULL_DOWN),
380 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
381 102, UNIPHIER_PIN_DRV_1BIT,
382 102, UNIPHIER_PIN_PULL_DOWN),
383 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
384 103, UNIPHIER_PIN_DRV_1BIT,
385 103, UNIPHIER_PIN_PULL_DOWN),
386 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
387 104, UNIPHIER_PIN_DRV_1BIT,
388 104, UNIPHIER_PIN_PULL_DOWN),
389 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
390 105, UNIPHIER_PIN_DRV_1BIT,
391 105, UNIPHIER_PIN_PULL_DOWN),
392 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
393 106, UNIPHIER_PIN_DRV_1BIT,
394 106, UNIPHIER_PIN_PULL_DOWN),
395 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
396 107, UNIPHIER_PIN_DRV_1BIT,
397 107, UNIPHIER_PIN_PULL_DOWN),
398 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
399 108, UNIPHIER_PIN_DRV_1BIT,
400 108, UNIPHIER_PIN_PULL_DOWN),
401 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
402 109, UNIPHIER_PIN_DRV_1BIT,
403 109, UNIPHIER_PIN_PULL_DOWN),
404 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
405 110, UNIPHIER_PIN_DRV_1BIT,
406 110, UNIPHIER_PIN_PULL_DOWN),
407 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
408 111, UNIPHIER_PIN_DRV_1BIT,
409 111, UNIPHIER_PIN_PULL_DOWN),
410 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
411 112, UNIPHIER_PIN_DRV_1BIT,
412 112, UNIPHIER_PIN_PULL_DOWN),
413 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
414 113, UNIPHIER_PIN_DRV_1BIT,
415 113, UNIPHIER_PIN_PULL_DOWN),
416 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
417 114, UNIPHIER_PIN_DRV_1BIT,
418 114, UNIPHIER_PIN_PULL_DOWN),
419 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
420 115, UNIPHIER_PIN_DRV_1BIT,
421 115, UNIPHIER_PIN_PULL_DOWN),
422 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
423 116, UNIPHIER_PIN_DRV_1BIT,
424 116, UNIPHIER_PIN_PULL_DOWN),
425 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
426 117, UNIPHIER_PIN_DRV_1BIT,
427 117, UNIPHIER_PIN_PULL_DOWN),
428 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
429 118, UNIPHIER_PIN_DRV_1BIT,
430 118, UNIPHIER_PIN_PULL_DOWN),
432 UNIPHIER_PINCTRL_PIN(136, "ED0", -1,
433 0, UNIPHIER_PIN_DRV_1BIT,
434 0, UNIPHIER_PIN_PULL_DOWN),
435 UNIPHIER_PINCTRL_PIN(137, "ED1", -1,
436 1, UNIPHIER_PIN_DRV_1BIT,
437 1, UNIPHIER_PIN_PULL_DOWN),
438 UNIPHIER_PINCTRL_PIN(138, "ED2", -1,
439 2, UNIPHIER_PIN_DRV_1BIT,
440 2, UNIPHIER_PIN_PULL_DOWN),
441 UNIPHIER_PINCTRL_PIN(139, "ED3", -1,
442 3, UNIPHIER_PIN_DRV_1BIT,
443 3, UNIPHIER_PIN_PULL_DOWN),
444 UNIPHIER_PINCTRL_PIN(140, "ED4", -1,
445 4, UNIPHIER_PIN_DRV_1BIT,
446 4, UNIPHIER_PIN_PULL_DOWN),
447 UNIPHIER_PINCTRL_PIN(141, "ED5", -1,
448 5, UNIPHIER_PIN_DRV_1BIT,
449 5, UNIPHIER_PIN_PULL_DOWN),
450 UNIPHIER_PINCTRL_PIN(142, "ED6", -1,
451 6, UNIPHIER_PIN_DRV_1BIT,
452 6, UNIPHIER_PIN_PULL_DOWN),
453 UNIPHIER_PINCTRL_PIN(143, "ED7", -1,
454 7, UNIPHIER_PIN_DRV_1BIT,
455 7, UNIPHIER_PIN_PULL_DOWN),
456 UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1,
457 8, UNIPHIER_PIN_DRV_1BIT,
458 8, UNIPHIER_PIN_PULL_UP),
459 UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1,
460 9, UNIPHIER_PIN_DRV_1BIT,
461 9, UNIPHIER_PIN_PULL_UP),
462 UNIPHIER_PINCTRL_PIN(146, "ERXW", -1,
463 10, UNIPHIER_PIN_DRV_1BIT,
464 10, UNIPHIER_PIN_PULL_UP),
465 UNIPHIER_PINCTRL_PIN(147, "ES0", -1,
466 11, UNIPHIER_PIN_DRV_1BIT,
467 11, UNIPHIER_PIN_PULL_UP),
468 UNIPHIER_PINCTRL_PIN(148, "ES1", -1,
469 12, UNIPHIER_PIN_DRV_1BIT,
470 12, UNIPHIER_PIN_PULL_UP),
471 UNIPHIER_PINCTRL_PIN(149, "ES2", -1,
472 13, UNIPHIER_PIN_DRV_1BIT,
473 13, UNIPHIER_PIN_PULL_UP),
474 UNIPHIER_PINCTRL_PIN(150, "XECS1", -1,
475 14, UNIPHIER_PIN_DRV_1BIT,
476 14, UNIPHIER_PIN_PULL_DOWN),
479 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
480 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
481 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
482 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
483 static const unsigned i2c0_pins[] = {102, 103};
484 static const int i2c0_muxvals[] = {0, 0};
485 static const unsigned i2c1_pins[] = {104, 105};
486 static const int i2c1_muxvals[] = {0, 0};
487 static const unsigned i2c2_pins[] = {108, 109};
488 static const int i2c2_muxvals[] = {2, 2};
489 static const unsigned i2c3_pins[] = {108, 109};
490 static const int i2c3_muxvals[] = {3, 3};
491 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
493 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
494 static const unsigned nand_cs1_pins[] = {22, 23};
495 static const int nand_cs1_muxvals[] = {0, 0};
496 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
497 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
498 static const unsigned uart0_pins[] = {70, 71};
499 static const int uart0_muxvals[] = {3, 3};
500 static const unsigned uart1_pins[] = {114, 115};
501 static const int uart1_muxvals[] = {0, 0};
502 static const unsigned uart2_pins[] = {112, 113};
503 static const int uart2_muxvals[] = {1, 1};
504 static const unsigned uart3_pins[] = {110, 111};
505 static const int uart3_muxvals[] = {1, 1};
506 static const unsigned usb0_pins[] = {41, 42};
507 static const int usb0_muxvals[] = {0, 0};
508 static const unsigned usb1_pins[] = {43, 44};
509 static const int usb1_muxvals[] = {0, 0};
510 static const unsigned usb2_pins[] = {114, 115};
511 static const int usb2_muxvals[] = {1, 1};
512 static const unsigned port_range0_pins[] = {
513 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */
514 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */
515 32, 33, 34, 35, 36, 37, 38, 39, /* PORT2x */
516 59, 60, 61, 62, 63, 64, 65, 66, /* PORT3x */
517 95, 96, 97, 98, 99, 100, 101, 57, /* PORT4x */
518 70, 71, 72, 73, 74, 75, 76, 77, /* PORT5x */
519 81, 83, 84, 85, 86, 89, 90, 91, /* PORT6x */
520 118, 119, 120, 121, 122, 53, 54, 55, /* PORT7x */
521 41, 42, 43, 44, 79, 80, 18, 19, /* PORT8x */
522 110, 111, 112, 113, 114, 115, 16, 17, /* PORT9x */
523 40, 67, 68, 69, 78, 92, 93, 94, /* PORT10x */
524 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */
525 47, 127, 20, 56, 22, /* PORT120-124 */
527 static const int port_range0_muxvals[] = {
528 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
529 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
530 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
531 15, 15, 15, 15, 15, 15, 15, 15, /* PORT3x */
532 15, 15, 15, 15, 15, 15, 15, 15, /* PORT4x */
533 15, 15, 15, 15, 15, 15, 15, 15, /* PORT5x */
534 15, 15, 15, 15, 15, 15, 15, 15, /* PORT6x */
535 15, 15, 15, 15, 15, 15, 15, 15, /* PORT7x */
536 15, 15, 15, 15, 15, 15, 15, 15, /* PORT8x */
537 15, 15, 15, 15, 15, 15, 15, 15, /* PORT9x */
538 15, 15, 15, 15, 15, 15, 15, 15, /* PORT10x */
539 15, 15, 15, 15, 15, 15, 15, 15, /* PORT11x */
540 15, 15, 15, 15, 15, /* PORT120-124 */
542 static const unsigned port_range1_pins[] = {
543 116, 117, /* PORT130-131 */
545 static const int port_range1_muxvals[] = {
546 15, 15, /* PORT130-131 */
548 static const unsigned port_range2_pins[] = {
549 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */
551 static const int port_range2_muxvals[] = {
552 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
554 static const unsigned port_range3_pins[] = {
557 static const int port_range3_muxvals[] = {
560 static const unsigned xirq_range0_pins[] = {
561 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */
562 82, 87, 88, 50, 51, /* XIRQ8-12 */
564 static const int xirq_range0_muxvals[] = {
565 0, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */
566 14, 14, 14, 14, 14, /* XIRQ8-12 */
568 static const unsigned xirq_range1_pins[] = {
569 52, 58, /* XIRQ14-15 */
571 static const int xirq_range1_muxvals[] = {
572 14, 14, /* XIRQ14-15 */
575 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
576 UNIPHIER_PINCTRL_GROUP(emmc),
577 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
578 UNIPHIER_PINCTRL_GROUP(i2c0),
579 UNIPHIER_PINCTRL_GROUP(i2c1),
580 UNIPHIER_PINCTRL_GROUP(i2c2),
581 UNIPHIER_PINCTRL_GROUP(i2c3),
582 UNIPHIER_PINCTRL_GROUP(nand),
583 UNIPHIER_PINCTRL_GROUP(nand_cs1),
584 UNIPHIER_PINCTRL_GROUP(sd),
585 UNIPHIER_PINCTRL_GROUP(uart0),
586 UNIPHIER_PINCTRL_GROUP(uart1),
587 UNIPHIER_PINCTRL_GROUP(uart2),
588 UNIPHIER_PINCTRL_GROUP(uart3),
589 UNIPHIER_PINCTRL_GROUP(usb0),
590 UNIPHIER_PINCTRL_GROUP(usb1),
591 UNIPHIER_PINCTRL_GROUP(usb2),
592 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0),
593 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1),
594 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range2),
595 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range3),
596 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0),
597 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1),
598 UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0),
599 UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1),
600 UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2),
601 UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3),
602 UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4),
603 UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5),
604 UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6),
605 UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7),
606 UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8),
607 UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9),
608 UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10),
609 UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11),
610 UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12),
611 UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13),
612 UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14),
613 UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15),
614 UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16),
615 UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17),
616 UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18),
617 UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19),
618 UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20),
619 UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21),
620 UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22),
621 UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23),
622 UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24),
623 UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25),
624 UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26),
625 UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27),
626 UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28),
627 UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29),
628 UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30),
629 UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31),
630 UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32),
631 UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33),
632 UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34),
633 UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35),
634 UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36),
635 UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37),
636 UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38),
637 UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39),
638 UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40),
639 UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41),
640 UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42),
641 UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43),
642 UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44),
643 UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45),
644 UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46),
645 UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47),
646 UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48),
647 UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49),
648 UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50),
649 UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51),
650 UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52),
651 UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53),
652 UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54),
653 UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55),
654 UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56),
655 UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57),
656 UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58),
657 UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59),
658 UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60),
659 UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61),
660 UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62),
661 UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63),
662 UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64),
663 UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65),
664 UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66),
665 UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67),
666 UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68),
667 UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69),
668 UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70),
669 UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71),
670 UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72),
671 UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73),
672 UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74),
673 UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75),
674 UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76),
675 UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77),
676 UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78),
677 UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79),
678 UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80),
679 UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81),
680 UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82),
681 UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83),
682 UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84),
683 UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85),
684 UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86),
685 UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87),
686 UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88),
687 UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89),
688 UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90),
689 UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91),
690 UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92),
691 UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93),
692 UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94),
693 UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95),
694 UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96),
695 UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97),
696 UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98),
697 UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99),
698 UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100),
699 UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range1, 0),
700 UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range1, 1),
701 UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range2, 0),
702 UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range2, 1),
703 UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range2, 2),
704 UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range2, 3),
705 UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range2, 4),
706 UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range2, 5),
707 UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range2, 6),
708 UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range2, 7),
709 UNIPHIER_PINCTRL_GROUP_SINGLE(port166, port_range3, 0),
710 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0),
711 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1),
712 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2),
713 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3),
714 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4),
715 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5),
716 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6),
717 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7),
718 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8),
719 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9),
720 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10),
721 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11),
722 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12),
723 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0),
724 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1),
727 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
728 static const char * const i2c0_groups[] = {"i2c0"};
729 static const char * const i2c1_groups[] = {"i2c1"};
730 static const char * const i2c2_groups[] = {"i2c2"};
731 static const char * const i2c3_groups[] = {"i2c3"};
732 static const char * const nand_groups[] = {"nand", "nand_cs1"};
733 static const char * const sd_groups[] = {"sd"};
734 static const char * const uart0_groups[] = {"uart0"};
735 static const char * const uart1_groups[] = {"uart1"};
736 static const char * const uart2_groups[] = {"uart2"};
737 static const char * const uart3_groups[] = {"uart3"};
738 static const char * const usb0_groups[] = {"usb0"};
739 static const char * const usb1_groups[] = {"usb1"};
740 static const char * const usb2_groups[] = {"usb2"};
741 static const char * const port_groups[] = {
742 "port00", "port01", "port02", "port03",
743 "port04", "port05", "port06", "port07",
744 "port10", "port11", "port12", "port13",
745 "port14", "port15", "port16", "port17",
746 "port20", "port21", "port22", "port23",
747 "port24", "port25", "port26", "port27",
748 "port30", "port31", "port32", "port33",
749 "port34", "port35", "port36", "port37",
750 "port40", "port41", "port42", "port43",
751 "port44", "port45", "port46", "port47",
752 "port50", "port51", "port52", "port53",
753 "port54", "port55", "port56", "port57",
754 "port60", "port61", "port62", "port63",
755 "port64", "port65", "port66", "port67",
756 "port70", "port71", "port72", "port73",
757 "port74", "port75", "port76", "port77",
758 "port80", "port81", "port82", "port83",
759 "port84", "port85", "port86", "port87",
760 "port90", "port91", "port92", "port93",
761 "port94", "port95", "port96", "port97",
762 "port100", "port101", "port102", "port103",
763 "port104", "port105", "port106", "port107",
764 "port110", "port111", "port112", "port113",
765 "port114", "port115", "port116", "port117",
766 "port120", "port121", "port122", "port123",
767 "port124", "port125", "port126", "port127",
768 "port130", "port131", "port132", "port133",
769 "port134", "port135", "port136", "port137",
770 "port140", "port141", "port142", "port143",
771 "port144", "port145", "port146", "port147",
772 /* port150-164 missing */
773 /* none */ "port165",
775 static const char * const xirq_groups[] = {
776 "xirq0", "xirq1", "xirq2", "xirq3",
777 "xirq4", "xirq5", "xirq6", "xirq7",
778 "xirq8", "xirq9", "xirq10", "xirq11",
779 "xirq12", /* none*/ "xirq14", "xirq15",
782 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
783 UNIPHIER_PINMUX_FUNCTION(emmc),
784 UNIPHIER_PINMUX_FUNCTION(i2c0),
785 UNIPHIER_PINMUX_FUNCTION(i2c1),
786 UNIPHIER_PINMUX_FUNCTION(i2c2),
787 UNIPHIER_PINMUX_FUNCTION(i2c3),
788 UNIPHIER_PINMUX_FUNCTION(nand),
789 UNIPHIER_PINMUX_FUNCTION(sd),
790 UNIPHIER_PINMUX_FUNCTION(uart0),
791 UNIPHIER_PINMUX_FUNCTION(uart1),
792 UNIPHIER_PINMUX_FUNCTION(uart2),
793 UNIPHIER_PINMUX_FUNCTION(uart3),
794 UNIPHIER_PINMUX_FUNCTION(usb0),
795 UNIPHIER_PINMUX_FUNCTION(usb1),
796 UNIPHIER_PINMUX_FUNCTION(usb2),
797 UNIPHIER_PINMUX_FUNCTION(port),
798 UNIPHIER_PINMUX_FUNCTION(xirq),
801 static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
802 .pins = uniphier_sld8_pins,
803 .npins = ARRAY_SIZE(uniphier_sld8_pins),
804 .groups = uniphier_sld8_groups,
805 .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
806 .functions = uniphier_sld8_functions,
807 .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
811 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
813 return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
816 static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
817 { .compatible = "socionext,ph1-sld8-pinctrl" },
820 MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match);
822 static struct platform_driver uniphier_sld8_pinctrl_driver = {
823 .probe = uniphier_sld8_pinctrl_probe,
825 .name = "uniphier-sld8-pinctrl",
826 .of_match_table = uniphier_sld8_pinctrl_match,
829 module_platform_driver(uniphier_sld8_pinctrl_driver);
831 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
832 MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
833 MODULE_LICENSE("GPL");