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