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