1 /*
2 * Copyright (C) 2015-2017 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16 #include <linux/kernel.h>
17 #include <linux/init.h>
18 #include <linux/mod_devicetable.h>
19 #include <linux/pinctrl/pinctrl.h>
20 #include <linux/platform_device.h>
21
22 #include "pinctrl-uniphier.h"
23
24 static const struct pinctrl_pin_desc uniphier_sld8_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
26 15, UNIPHIER_PIN_DRV_1BIT,
27 15, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
29 16, UNIPHIER_PIN_DRV_1BIT,
30 16, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
32 17, UNIPHIER_PIN_DRV_1BIT,
33 17, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
35 18, UNIPHIER_PIN_DRV_1BIT,
36 18, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
38 19, UNIPHIER_PIN_DRV_1BIT,
39 19, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
41 20, UNIPHIER_PIN_DRV_1BIT,
42 20, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
44 21, UNIPHIER_PIN_DRV_1BIT,
45 21, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
47 22, UNIPHIER_PIN_DRV_1BIT,
48 22, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
50 23, UNIPHIER_PIN_DRV_1BIT,
51 23, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
53 24, UNIPHIER_PIN_DRV_1BIT,
54 24, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
56 25, UNIPHIER_PIN_DRV_1BIT,
57 25, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
59 26, UNIPHIER_PIN_DRV_1BIT,
60 26, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
62 27, UNIPHIER_PIN_DRV_1BIT,
63 27, UNIPHIER_PIN_PULL_DOWN),
64 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
65 28, UNIPHIER_PIN_DRV_1BIT,
66 28, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
68 29, UNIPHIER_PIN_DRV_1BIT,
69 29, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
71 30, UNIPHIER_PIN_DRV_1BIT,
72 30, UNIPHIER_PIN_PULL_UP),
73 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
74 31, UNIPHIER_PIN_DRV_1BIT,
75 31, UNIPHIER_PIN_PULL_UP),
76 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
77 32, UNIPHIER_PIN_DRV_1BIT,
78 32, UNIPHIER_PIN_PULL_DOWN),
79 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
80 33, UNIPHIER_PIN_DRV_1BIT,
81 33, UNIPHIER_PIN_PULL_DOWN),
82 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
83 34, UNIPHIER_PIN_DRV_1BIT,
84 34, UNIPHIER_PIN_PULL_DOWN),
85 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
86 35, UNIPHIER_PIN_DRV_1BIT,
87 35, UNIPHIER_PIN_PULL_UP),
88 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
89 36, UNIPHIER_PIN_DRV_1BIT,
90 36, UNIPHIER_PIN_PULL_UP),
91 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
92 0, UNIPHIER_PIN_DRV_2BIT,
93 119, UNIPHIER_PIN_PULL_UP),
94 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
95 1, UNIPHIER_PIN_DRV_2BIT,
96 120, UNIPHIER_PIN_PULL_UP),
97 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
98 2, UNIPHIER_PIN_DRV_2BIT,
99 121, UNIPHIER_PIN_PULL_UP),
100 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
101 3, UNIPHIER_PIN_DRV_2BIT,
102 122, UNIPHIER_PIN_PULL_UP),
103 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
104 4, UNIPHIER_PIN_DRV_2BIT,
105 123, UNIPHIER_PIN_PULL_UP),
106 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
107 5, UNIPHIER_PIN_DRV_2BIT,
108 124, UNIPHIER_PIN_PULL_UP),
109 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
110 6, UNIPHIER_PIN_DRV_2BIT,
111 125, UNIPHIER_PIN_PULL_UP),
112 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
113 7, UNIPHIER_PIN_DRV_2BIT,
114 126, UNIPHIER_PIN_PULL_UP),
115 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
116 8, UNIPHIER_PIN_DRV_2BIT,
117 127, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
119 9, UNIPHIER_PIN_DRV_2BIT,
120 128, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
122 10, UNIPHIER_PIN_DRV_2BIT,
123 -1, UNIPHIER_PIN_PULL_NONE),
124 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
125 11, UNIPHIER_PIN_DRV_2BIT,
126 -1, UNIPHIER_PIN_PULL_NONE),
127 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
128 12, UNIPHIER_PIN_DRV_2BIT,
129 -1, UNIPHIER_PIN_PULL_NONE),
130 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
131 13, UNIPHIER_PIN_DRV_2BIT,
132 -1, UNIPHIER_PIN_PULL_NONE),
133 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
134 14, UNIPHIER_PIN_DRV_2BIT,
135 -1, UNIPHIER_PIN_PULL_NONE),
136 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
137 15, UNIPHIER_PIN_DRV_2BIT,
138 -1, UNIPHIER_PIN_PULL_NONE),
139 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
140 -1, UNIPHIER_PIN_DRV_FIXED4,
141 129, UNIPHIER_PIN_PULL_DOWN),
142 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
143 -1, UNIPHIER_PIN_DRV_FIXED4,
144 130, UNIPHIER_PIN_PULL_DOWN),
145 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
146 -1, UNIPHIER_PIN_DRV_FIXED4,
147 131, UNIPHIER_PIN_PULL_DOWN),
148 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
149 37, UNIPHIER_PIN_DRV_1BIT,
150 37, UNIPHIER_PIN_PULL_DOWN),
151 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
152 38, UNIPHIER_PIN_DRV_1BIT,
153 38, UNIPHIER_PIN_PULL_DOWN),
154 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
155 39, UNIPHIER_PIN_DRV_1BIT,
156 39, UNIPHIER_PIN_PULL_DOWN),
157 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
158 40, UNIPHIER_PIN_DRV_1BIT,
159 40, UNIPHIER_PIN_PULL_DOWN),
160 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
161 41, UNIPHIER_PIN_DRV_1BIT,
162 41, UNIPHIER_PIN_PULL_DOWN),
163 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
164 42, UNIPHIER_PIN_DRV_1BIT,
165 42, UNIPHIER_PIN_PULL_DOWN),
166 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
167 43, UNIPHIER_PIN_DRV_1BIT,
168 43, UNIPHIER_PIN_PULL_DOWN),
169 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
170 44, UNIPHIER_PIN_DRV_1BIT,
171 44, UNIPHIER_PIN_PULL_DOWN),
172 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
173 45, UNIPHIER_PIN_DRV_1BIT,
174 45, UNIPHIER_PIN_PULL_DOWN),
175 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
176 46, UNIPHIER_PIN_DRV_1BIT,
177 46, UNIPHIER_PIN_PULL_DOWN),
178 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
179 47, UNIPHIER_PIN_DRV_1BIT,
180 47, UNIPHIER_PIN_PULL_DOWN),
181 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
182 48, UNIPHIER_PIN_DRV_1BIT,
183 48, UNIPHIER_PIN_PULL_DOWN),
184 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
185 49, UNIPHIER_PIN_DRV_1BIT,
186 49, UNIPHIER_PIN_PULL_DOWN),
187 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
188 50, UNIPHIER_PIN_DRV_1BIT,
189 50, UNIPHIER_PIN_PULL_DOWN),
190 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
191 51, UNIPHIER_PIN_DRV_1BIT,
192 51, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
194 52, UNIPHIER_PIN_DRV_1BIT,
195 52, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
197 53, UNIPHIER_PIN_DRV_1BIT,
198 53, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
200 54, UNIPHIER_PIN_DRV_1BIT,
201 54, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
203 55, UNIPHIER_PIN_DRV_1BIT,
204 55, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
206 56, UNIPHIER_PIN_DRV_1BIT,
207 56, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
209 57, UNIPHIER_PIN_DRV_1BIT,
210 57, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
212 58, UNIPHIER_PIN_DRV_1BIT,
213 58, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
215 59, UNIPHIER_PIN_DRV_1BIT,
216 59, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
218 60, UNIPHIER_PIN_DRV_1BIT,
219 60, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
221 61, UNIPHIER_PIN_DRV_1BIT,
222 61, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
224 62, UNIPHIER_PIN_DRV_1BIT,
225 62, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
227 63, UNIPHIER_PIN_DRV_1BIT,
228 63, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
230 64, UNIPHIER_PIN_DRV_1BIT,
231 64, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
233 65, UNIPHIER_PIN_DRV_1BIT,
234 65, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
236 66, UNIPHIER_PIN_DRV_1BIT,
237 66, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
239 67, UNIPHIER_PIN_DRV_1BIT,
240 67, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
242 68, UNIPHIER_PIN_DRV_1BIT,
243 68, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
245 69, UNIPHIER_PIN_DRV_1BIT,
246 69, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
248 70, UNIPHIER_PIN_DRV_1BIT,
249 70, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
251 71, UNIPHIER_PIN_DRV_1BIT,
252 71, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
254 72, UNIPHIER_PIN_DRV_1BIT,
255 72, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
257 73, UNIPHIER_PIN_DRV_1BIT,
258 73, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
260 74, UNIPHIER_PIN_DRV_1BIT,
261 74, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
263 75, UNIPHIER_PIN_DRV_1BIT,
264 75, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
266 76, UNIPHIER_PIN_DRV_1BIT,
267 76, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
269 77, UNIPHIER_PIN_DRV_1BIT,
270 77, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
272 78, UNIPHIER_PIN_DRV_1BIT,
273 78, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
275 79, UNIPHIER_PIN_DRV_1BIT,
276 79, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
278 80, UNIPHIER_PIN_DRV_1BIT,
279 80, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
281 81, UNIPHIER_PIN_DRV_1BIT,
282 81, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
284 82, UNIPHIER_PIN_DRV_1BIT,
285 82, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
287 83, UNIPHIER_PIN_DRV_1BIT,
288 83, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
290 84, UNIPHIER_PIN_DRV_1BIT,
291 84, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
293 85, UNIPHIER_PIN_DRV_1BIT,
294 85, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
296 86, UNIPHIER_PIN_DRV_1BIT,
297 86, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
299 87, UNIPHIER_PIN_DRV_1BIT,
300 87, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
302 -1, UNIPHIER_PIN_DRV_FIXED4,
303 132, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
305 -1, UNIPHIER_PIN_DRV_FIXED4,
306 133, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
308 -1, UNIPHIER_PIN_DRV_FIXED4,
309 134, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
311 88, UNIPHIER_PIN_DRV_1BIT,
312 88, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
314 89, UNIPHIER_PIN_DRV_1BIT,
315 89, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
317 90, UNIPHIER_PIN_DRV_1BIT,
318 90, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
320 91, UNIPHIER_PIN_DRV_1BIT,
321 91, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
323 92, UNIPHIER_PIN_DRV_1BIT,
324 92, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
326 93, UNIPHIER_PIN_DRV_1BIT,
327 93, UNIPHIER_PIN_PULL_UP),
328 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
329 94, UNIPHIER_PIN_DRV_1BIT,
330 94, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
332 -1, UNIPHIER_PIN_DRV_FIXED4,
333 -1, UNIPHIER_PIN_PULL_NONE),
334 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
335 -1, UNIPHIER_PIN_DRV_FIXED4,
336 -1, UNIPHIER_PIN_PULL_NONE),
337 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
338 -1, UNIPHIER_PIN_DRV_FIXED4,
339 -1, UNIPHIER_PIN_PULL_NONE),
340 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
341 -1, UNIPHIER_PIN_DRV_FIXED4,
342 -1, UNIPHIER_PIN_PULL_NONE),
343 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
344 -1, UNIPHIER_PIN_DRV_FIXED4,
345 -1, UNIPHIER_PIN_PULL_NONE),
346 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
347 -1, UNIPHIER_PIN_DRV_FIXED4,
348 -1, UNIPHIER_PIN_PULL_NONE),
349 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
350 -1, UNIPHIER_PIN_DRV_FIXED4,
351 -1, UNIPHIER_PIN_PULL_NONE),
352 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
353 -1, UNIPHIER_PIN_DRV_FIXED4,
354 -1, UNIPHIER_PIN_PULL_NONE),
355 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
356 95, UNIPHIER_PIN_DRV_1BIT,
357 95, UNIPHIER_PIN_PULL_UP),
358 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
359 96, UNIPHIER_PIN_DRV_1BIT,
360 96, UNIPHIER_PIN_PULL_UP),
361 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
362 97, UNIPHIER_PIN_DRV_1BIT,
363 97, UNIPHIER_PIN_PULL_UP),
364 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
365 98, UNIPHIER_PIN_DRV_1BIT,
366 98, UNIPHIER_PIN_PULL_UP),
367 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
368 99, UNIPHIER_PIN_DRV_1BIT,
369 99, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
371 100, UNIPHIER_PIN_DRV_1BIT,
372 100, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
374 -1, UNIPHIER_PIN_DRV_FIXED5,
375 -1, UNIPHIER_PIN_PULL_NONE),
376 UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
377 -1, UNIPHIER_PIN_DRV_FIXED5,
378 -1, UNIPHIER_PIN_PULL_NONE),
379 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
380 101, UNIPHIER_PIN_DRV_1BIT,
381 101, UNIPHIER_PIN_PULL_DOWN),
382 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
383 102, UNIPHIER_PIN_DRV_1BIT,
384 102, UNIPHIER_PIN_PULL_DOWN),
385 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
386 103, UNIPHIER_PIN_DRV_1BIT,
387 103, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
389 104, UNIPHIER_PIN_DRV_1BIT,
390 104, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
392 105, UNIPHIER_PIN_DRV_1BIT,
393 105, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
395 106, UNIPHIER_PIN_DRV_1BIT,
396 106, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
398 107, UNIPHIER_PIN_DRV_1BIT,
399 107, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
401 108, UNIPHIER_PIN_DRV_1BIT,
402 108, UNIPHIER_PIN_PULL_DOWN),
403 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
404 109, UNIPHIER_PIN_DRV_1BIT,
405 109, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
407 110, UNIPHIER_PIN_DRV_1BIT,
408 110, UNIPHIER_PIN_PULL_DOWN),
409 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
410 111, UNIPHIER_PIN_DRV_1BIT,
411 111, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
413 112, UNIPHIER_PIN_DRV_1BIT,
414 112, UNIPHIER_PIN_PULL_DOWN),
415 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
416 113, UNIPHIER_PIN_DRV_1BIT,
417 113, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
419 114, UNIPHIER_PIN_DRV_1BIT,
420 114, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
422 115, UNIPHIER_PIN_DRV_1BIT,
423 115, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
425 116, UNIPHIER_PIN_DRV_1BIT,
426 116, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
428 117, UNIPHIER_PIN_DRV_1BIT,
429 117, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
431 118, UNIPHIER_PIN_DRV_1BIT,
432 118, UNIPHIER_PIN_PULL_DOWN),
433 /* dedicated pins */
434 UNIPHIER_PINCTRL_PIN(136, "ED0", -1,
435 0, UNIPHIER_PIN_DRV_1BIT,
436 0, UNIPHIER_PIN_PULL_DOWN),
437 UNIPHIER_PINCTRL_PIN(137, "ED1", -1,
438 1, UNIPHIER_PIN_DRV_1BIT,
439 1, UNIPHIER_PIN_PULL_DOWN),
440 UNIPHIER_PINCTRL_PIN(138, "ED2", -1,
441 2, UNIPHIER_PIN_DRV_1BIT,
442 2, UNIPHIER_PIN_PULL_DOWN),
443 UNIPHIER_PINCTRL_PIN(139, "ED3", -1,
444 3, UNIPHIER_PIN_DRV_1BIT,
445 3, UNIPHIER_PIN_PULL_DOWN),
446 UNIPHIER_PINCTRL_PIN(140, "ED4", -1,
447 4, UNIPHIER_PIN_DRV_1BIT,
448 4, UNIPHIER_PIN_PULL_DOWN),
449 UNIPHIER_PINCTRL_PIN(141, "ED5", -1,
450 5, UNIPHIER_PIN_DRV_1BIT,
451 5, UNIPHIER_PIN_PULL_DOWN),
452 UNIPHIER_PINCTRL_PIN(142, "ED6", -1,
453 6, UNIPHIER_PIN_DRV_1BIT,
454 6, UNIPHIER_PIN_PULL_DOWN),
455 UNIPHIER_PINCTRL_PIN(143, "ED7", -1,
456 7, UNIPHIER_PIN_DRV_1BIT,
457 7, UNIPHIER_PIN_PULL_DOWN),
458 UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1,
459 8, UNIPHIER_PIN_DRV_1BIT,
460 8, UNIPHIER_PIN_PULL_UP),
461 UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1,
462 9, UNIPHIER_PIN_DRV_1BIT,
463 9, UNIPHIER_PIN_PULL_UP),
464 UNIPHIER_PINCTRL_PIN(146, "ERXW", -1,
465 10, UNIPHIER_PIN_DRV_1BIT,
466 10, UNIPHIER_PIN_PULL_UP),
467 UNIPHIER_PINCTRL_PIN(147, "ES0", -1,
468 11, UNIPHIER_PIN_DRV_1BIT,
469 11, UNIPHIER_PIN_PULL_UP),
470 UNIPHIER_PINCTRL_PIN(148, "ES1", -1,
471 12, UNIPHIER_PIN_DRV_1BIT,
472 12, UNIPHIER_PIN_PULL_UP),
473 UNIPHIER_PINCTRL_PIN(149, "ES2", -1,
474 13, UNIPHIER_PIN_DRV_1BIT,
475 13, UNIPHIER_PIN_PULL_UP),
476 UNIPHIER_PINCTRL_PIN(150, "XECS1", -1,
477 14, UNIPHIER_PIN_DRV_1BIT,
478 14, UNIPHIER_PIN_PULL_DOWN),
479 };
480
481 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
482 static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
483 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
484 static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
485 static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14,
486 61, 63, 64, 65, 66, 67, 68};
487 static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
488 13, 13, 27, 27, 27, 27, 27, 27, 27};
489 static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13,
490 14};
491 static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13,
492 13, 13, 13};
493 static const unsigned i2c0_pins[] = {102, 103};
494 static const int i2c0_muxvals[] = {0, 0};
495 static const unsigned i2c1_pins[] = {104, 105};
496 static const int i2c1_muxvals[] = {0, 0};
497 static const unsigned i2c2_pins[] = {108, 109};
498 static const int i2c2_muxvals[] = {2, 2};
499 static const unsigned i2c3_pins[] = {108, 109};
500 static const int i2c3_muxvals[] = {3, 3};
501 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
502 27, 28, 29, 30, 31};
503 static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
504 static const unsigned nand_cs1_pins[] = {22, 23};
505 static const int nand_cs1_muxvals[] = {0, 0};
506 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
507 static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
508 static const unsigned spi0_pins[] = {118, 119, 120, 121};
509 static const int spi0_muxvals[] = {3, 3, 3, 3};
510 static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142,
511 143, 144, 145, 146, 147, 148, 149};
512 static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
513 -1, -1, -1, -1, -1};
514 static const unsigned system_bus_cs1_pins[] = {150};
515 static const int system_bus_cs1_muxvals[] = {-1};
516 static const unsigned system_bus_cs2_pins[] = {10};
517 static const int system_bus_cs2_muxvals[] = {1};
518 static const unsigned system_bus_cs3_pins[] = {11};
519 static const int system_bus_cs3_muxvals[] = {1};
520 static const unsigned system_bus_cs4_pins[] = {12};
521 static const int system_bus_cs4_muxvals[] = {1};
522 static const unsigned system_bus_cs5_pins[] = {13};
523 static const int system_bus_cs5_muxvals[] = {1};
524 static const unsigned uart0_pins[] = {70, 71};
525 static const int uart0_muxvals[] = {3, 3};
526 static const unsigned uart0_ctsrts_pins[] = {72, 73, 74};
527 static const int uart0_ctsrts_muxvals[] = {3, 3, 3};
528 static const unsigned uart1_pins[] = {114, 115};
529 static const int uart1_muxvals[] = {0, 0};
530 static const unsigned uart2_pins[] = {112, 113};
531 static const int uart2_muxvals[] = {1, 1};
532 static const unsigned uart3_pins[] = {110, 111};
533 static const int uart3_muxvals[] = {1, 1};
534 static const unsigned usb0_pins[] = {41, 42};
535 static const int usb0_muxvals[] = {0, 0};
536 static const unsigned usb1_pins[] = {43, 44};
537 static const int usb1_muxvals[] = {0, 0};
538 static const unsigned usb2_pins[] = {114, 115};
539 static const int usb2_muxvals[] = {1, 1};
540 static const unsigned int gpio_range0_pins[] = {
541 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */
542 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */
543 32, 33, 34, 35, 36, 37, 38, 39, /* PORT2x */
544 59, 60, 61, 62, 63, 64, 65, 66, /* PORT3x */
545 95, 96, 97, 98, 99, 100, 101, 57, /* PORT4x */
546 70, 71, 72, 73, 74, 75, 76, 77, /* PORT5x */
547 81, 83, 84, 85, 86, 89, 90, 91, /* PORT6x */
548 118, 119, 120, 121, 122, 53, 54, 55, /* PORT7x */
549 41, 42, 43, 44, 79, 80, 18, 19, /* PORT8x */
550 110, 111, 112, 113, 114, 115, 16, 17, /* PORT9x */
551 40, 67, 68, 69, 78, 92, 93, 94, /* PORT10x */
552 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */
553 47, 127, 20, 56, 22, /* PORT120-124 */
554 };
555 static const unsigned int gpio_range1_pins[] = {
556 116, 117, /* PORT130-131 */
557 };
558 static const unsigned int gpio_range2_pins[] = {
559 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */
560 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */
561 82, 87, 88, 50, 51, 23, 52, 58, /* XIRQ8-12, PORT165, XIRQ14-15 */
562 };
563
564 static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
565 UNIPHIER_PINCTRL_GROUP(emmc),
566 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
567 UNIPHIER_PINCTRL_GROUP(ether_mii),
568 UNIPHIER_PINCTRL_GROUP(ether_rmii),
569 UNIPHIER_PINCTRL_GROUP(i2c0),
570 UNIPHIER_PINCTRL_GROUP(i2c1),
571 UNIPHIER_PINCTRL_GROUP(i2c2),
572 UNIPHIER_PINCTRL_GROUP(i2c3),
573 UNIPHIER_PINCTRL_GROUP(nand),
574 UNIPHIER_PINCTRL_GROUP(nand_cs1),
575 UNIPHIER_PINCTRL_GROUP(sd),
576 UNIPHIER_PINCTRL_GROUP(spi0),
577 UNIPHIER_PINCTRL_GROUP(system_bus),
578 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
579 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
580 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
581 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
582 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
583 UNIPHIER_PINCTRL_GROUP(uart0),
584 UNIPHIER_PINCTRL_GROUP(uart0_ctsrts),
585 UNIPHIER_PINCTRL_GROUP(uart1),
586 UNIPHIER_PINCTRL_GROUP(uart2),
587 UNIPHIER_PINCTRL_GROUP(uart3),
588 UNIPHIER_PINCTRL_GROUP(usb0),
589 UNIPHIER_PINCTRL_GROUP(usb1),
590 UNIPHIER_PINCTRL_GROUP(usb2),
591 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range0),
592 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range1),
593 UNIPHIER_PINCTRL_GROUP_GPIO(gpio_range2),
594 };
595
596 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
597 static const char * const ether_mii_groups[] = {"ether_mii"};
598 static const char * const ether_rmii_groups[] = {"ether_rmii"};
599 static const char * const i2c0_groups[] = {"i2c0"};
600 static const char * const i2c1_groups[] = {"i2c1"};
601 static const char * const i2c2_groups[] = {"i2c2"};
602 static const char * const i2c3_groups[] = {"i2c3"};
603 static const char * const nand_groups[] = {"nand", "nand_cs1"};
604 static const char * const sd_groups[] = {"sd"};
605 static const char * const spi0_groups[] = {"spi0"};
606 static const char * const system_bus_groups[] = {"system_bus",
607 "system_bus_cs1",
608 "system_bus_cs2",
609 "system_bus_cs3",
610 "system_bus_cs4",
611 "system_bus_cs5"};
612 static const char * const uart0_groups[] = {"uart0", "uart0_ctsrts"};
613 static const char * const uart1_groups[] = {"uart1"};
614 static const char * const uart2_groups[] = {"uart2"};
615 static const char * const uart3_groups[] = {"uart3"};
616 static const char * const usb0_groups[] = {"usb0"};
617 static const char * const usb1_groups[] = {"usb1"};
618 static const char * const usb2_groups[] = {"usb2"};
619
620 static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
621 UNIPHIER_PINMUX_FUNCTION(emmc),
622 UNIPHIER_PINMUX_FUNCTION(ether_mii),
623 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
624 UNIPHIER_PINMUX_FUNCTION(i2c0),
625 UNIPHIER_PINMUX_FUNCTION(i2c1),
626 UNIPHIER_PINMUX_FUNCTION(i2c2),
627 UNIPHIER_PINMUX_FUNCTION(i2c3),
628 UNIPHIER_PINMUX_FUNCTION(nand),
629 UNIPHIER_PINMUX_FUNCTION(sd),
630 UNIPHIER_PINMUX_FUNCTION(spi0),
631 UNIPHIER_PINMUX_FUNCTION(system_bus),
632 UNIPHIER_PINMUX_FUNCTION(uart0),
633 UNIPHIER_PINMUX_FUNCTION(uart1),
634 UNIPHIER_PINMUX_FUNCTION(uart2),
635 UNIPHIER_PINMUX_FUNCTION(uart3),
636 UNIPHIER_PINMUX_FUNCTION(usb0),
637 UNIPHIER_PINMUX_FUNCTION(usb1),
638 UNIPHIER_PINMUX_FUNCTION(usb2),
639 };
640
uniphier_sld8_get_gpio_muxval(unsigned int pin,unsigned int gpio_offset)641 static int uniphier_sld8_get_gpio_muxval(unsigned int pin,
642 unsigned int gpio_offset)
643 {
644 switch (gpio_offset) {
645 case 120 ... 127: /* XIRQ0-XIRQ7 */
646 return 0;
647 case 128 ... 132: /* XIRQ8-12 */
648 case 134 ... 135: /* XIRQ14-15 */
649 return 14;
650 default:
651 return 15;
652 }
653 }
654
655 static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
656 .pins = uniphier_sld8_pins,
657 .npins = ARRAY_SIZE(uniphier_sld8_pins),
658 .groups = uniphier_sld8_groups,
659 .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
660 .functions = uniphier_sld8_functions,
661 .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
662 .get_gpio_muxval = uniphier_sld8_get_gpio_muxval,
663 .caps = 0,
664 };
665
uniphier_sld8_pinctrl_probe(struct platform_device * pdev)666 static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
667 {
668 return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
669 }
670
671 static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
672 { .compatible = "socionext,uniphier-sld8-pinctrl" },
673 { /* sentinel */ }
674 };
675
676 static struct platform_driver uniphier_sld8_pinctrl_driver = {
677 .probe = uniphier_sld8_pinctrl_probe,
678 .driver = {
679 .name = "uniphier-sld8-pinctrl",
680 .of_match_table = uniphier_sld8_pinctrl_match,
681 .pm = &uniphier_pinctrl_pm_ops,
682 },
683 };
684 builtin_platform_driver(uniphier_sld8_pinctrl_driver);
685