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