pinctrl-uniphier-sld8.c 32.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/*
 * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/platform_device.h>

#include "pinctrl-uniphier.h"

22
#define DRIVER_NAME "uniphier-sld8-pinctrl"
23

24
static const struct pinctrl_pin_desc uniphier_sld8_pins[] = {
25
	UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
26 27
			     15, UNIPHIER_PIN_DRV_4_8,
			     15, UNIPHIER_PIN_PULL_DOWN),
28
	UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
29 30
			     16, UNIPHIER_PIN_DRV_4_8,
			     16, UNIPHIER_PIN_PULL_DOWN),
31
	UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
32 33
			     17, UNIPHIER_PIN_DRV_4_8,
			     17, UNIPHIER_PIN_PULL_DOWN),
34
	UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
35 36
			     18, UNIPHIER_PIN_DRV_4_8,
			     18, UNIPHIER_PIN_PULL_DOWN),
37
	UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
38 39
			     19, UNIPHIER_PIN_DRV_4_8,
			     19, UNIPHIER_PIN_PULL_DOWN),
40
	UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
41 42
			     20, UNIPHIER_PIN_DRV_4_8,
			     20, UNIPHIER_PIN_PULL_DOWN),
43
	UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
44 45
			     21, UNIPHIER_PIN_DRV_4_8,
			     21, UNIPHIER_PIN_PULL_DOWN),
46
	UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
47 48
			     22, UNIPHIER_PIN_DRV_4_8,
			     22, UNIPHIER_PIN_PULL_DOWN),
49
	UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
50 51
			     23, UNIPHIER_PIN_DRV_4_8,
			     23, UNIPHIER_PIN_PULL_DOWN),
52
	UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
53 54
			     24, UNIPHIER_PIN_DRV_4_8,
			     24, UNIPHIER_PIN_PULL_DOWN),
55
	UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
56 57
			     25, UNIPHIER_PIN_DRV_4_8,
			     25, UNIPHIER_PIN_PULL_DOWN),
58
	UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
59 60
			     26, UNIPHIER_PIN_DRV_4_8,
			     26, UNIPHIER_PIN_PULL_DOWN),
61
	UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
62 63
			     27, UNIPHIER_PIN_DRV_4_8,
			     27, UNIPHIER_PIN_PULL_DOWN),
64
	UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
65 66
			     28, UNIPHIER_PIN_DRV_4_8,
			     28, UNIPHIER_PIN_PULL_DOWN),
67
	UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
			     29, UNIPHIER_PIN_DRV_4_8,
			     29, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
			     30, UNIPHIER_PIN_DRV_4_8,
			     30, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
			     31, UNIPHIER_PIN_DRV_4_8,
			     31, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
			     32, UNIPHIER_PIN_DRV_4_8,
			     32, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
			     33, UNIPHIER_PIN_DRV_4_8,
			     33, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
			     34, UNIPHIER_PIN_DRV_4_8,
			     34, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
			     35, UNIPHIER_PIN_DRV_4_8,
			     35, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
			     36, UNIPHIER_PIN_DRV_4_8,
			     36, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
			     0, UNIPHIER_PIN_DRV_8_12_16_20,
			     119, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
95
			     1, UNIPHIER_PIN_DRV_8_12_16_20,
96 97
			     120, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
98
			     2, UNIPHIER_PIN_DRV_8_12_16_20,
99 100
			     121, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
101
			     3, UNIPHIER_PIN_DRV_8_12_16_20,
102 103
			     122, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
104
			     4, UNIPHIER_PIN_DRV_8_12_16_20,
105 106
			     123, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
107
			     5, UNIPHIER_PIN_DRV_8_12_16_20,
108 109
			     124, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
110
			     6, UNIPHIER_PIN_DRV_8_12_16_20,
111 112
			     125, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
113
			     7, UNIPHIER_PIN_DRV_8_12_16_20,
114 115
			     126, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
116
			     8, UNIPHIER_PIN_DRV_8_12_16_20,
117 118
			     127, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
119
			     9, UNIPHIER_PIN_DRV_8_12_16_20,
120
			     128, UNIPHIER_PIN_PULL_UP),
121
	UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
122
			     10, UNIPHIER_PIN_DRV_8_12_16_20,
123
			     -1, UNIPHIER_PIN_PULL_NONE),
124
	UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
125
			     11, UNIPHIER_PIN_DRV_8_12_16_20,
126
			     -1, UNIPHIER_PIN_PULL_NONE),
127
	UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
128
			     12, UNIPHIER_PIN_DRV_8_12_16_20,
129
			     -1, UNIPHIER_PIN_PULL_NONE),
130
	UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
131
			     13, UNIPHIER_PIN_DRV_8_12_16_20,
132
			     -1, UNIPHIER_PIN_PULL_NONE),
133
	UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
134
			     14, UNIPHIER_PIN_DRV_8_12_16_20,
135
			     -1, UNIPHIER_PIN_PULL_NONE),
136
	UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
137
			     15, UNIPHIER_PIN_DRV_8_12_16_20,
138
			     -1, UNIPHIER_PIN_PULL_NONE),
139
	UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
140 141
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     129, UNIPHIER_PIN_PULL_DOWN),
142
	UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
143 144
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     130, UNIPHIER_PIN_PULL_DOWN),
145
	UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
146 147
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     131, UNIPHIER_PIN_PULL_DOWN),
148
	UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
149 150
			     37, UNIPHIER_PIN_DRV_4_8,
			     37, UNIPHIER_PIN_PULL_DOWN),
151
	UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
152 153
			     38, UNIPHIER_PIN_DRV_4_8,
			     38, UNIPHIER_PIN_PULL_DOWN),
154
	UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
155 156
			     39, UNIPHIER_PIN_DRV_4_8,
			     39, UNIPHIER_PIN_PULL_DOWN),
157
	UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
158 159
			     40, UNIPHIER_PIN_DRV_4_8,
			     40, UNIPHIER_PIN_PULL_DOWN),
160
	UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
161 162
			     41, UNIPHIER_PIN_DRV_4_8,
			     41, UNIPHIER_PIN_PULL_DOWN),
163
	UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
164 165
			     42, UNIPHIER_PIN_DRV_4_8,
			     42, UNIPHIER_PIN_PULL_DOWN),
166
	UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
167 168
			     43, UNIPHIER_PIN_DRV_4_8,
			     43, UNIPHIER_PIN_PULL_DOWN),
169
	UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
170 171
			     44, UNIPHIER_PIN_DRV_4_8,
			     44, UNIPHIER_PIN_PULL_DOWN),
172
	UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
173 174
			     45, UNIPHIER_PIN_DRV_4_8,
			     45, UNIPHIER_PIN_PULL_DOWN),
175
	UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
176 177
			     46, UNIPHIER_PIN_DRV_4_8,
			     46, UNIPHIER_PIN_PULL_DOWN),
178
	UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
179 180
			     47, UNIPHIER_PIN_DRV_4_8,
			     47, UNIPHIER_PIN_PULL_DOWN),
181
	UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
182 183
			     48, UNIPHIER_PIN_DRV_4_8,
			     48, UNIPHIER_PIN_PULL_DOWN),
184
	UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
185 186
			     49, UNIPHIER_PIN_DRV_4_8,
			     49, UNIPHIER_PIN_PULL_DOWN),
187
	UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
188 189
			     50, UNIPHIER_PIN_DRV_4_8,
			     50, UNIPHIER_PIN_PULL_DOWN),
190
	UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
191 192
			     51, UNIPHIER_PIN_DRV_4_8,
			     51, UNIPHIER_PIN_PULL_DOWN),
193
	UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
194 195
			     52, UNIPHIER_PIN_DRV_4_8,
			     52, UNIPHIER_PIN_PULL_DOWN),
196
	UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
197 198
			     53, UNIPHIER_PIN_DRV_4_8,
			     53, UNIPHIER_PIN_PULL_DOWN),
199
	UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
200 201
			     54, UNIPHIER_PIN_DRV_4_8,
			     54, UNIPHIER_PIN_PULL_DOWN),
202
	UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
203 204
			     55, UNIPHIER_PIN_DRV_4_8,
			     55, UNIPHIER_PIN_PULL_DOWN),
205
	UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
206 207
			     56, UNIPHIER_PIN_DRV_4_8,
			     56, UNIPHIER_PIN_PULL_DOWN),
208
	UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
209 210
			     57, UNIPHIER_PIN_DRV_4_8,
			     57, UNIPHIER_PIN_PULL_DOWN),
211
	UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
212 213
			     58, UNIPHIER_PIN_DRV_4_8,
			     58, UNIPHIER_PIN_PULL_DOWN),
214
	UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
215 216
			     59, UNIPHIER_PIN_DRV_4_8,
			     59, UNIPHIER_PIN_PULL_DOWN),
217
	UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
218 219
			     60, UNIPHIER_PIN_DRV_4_8,
			     60, UNIPHIER_PIN_PULL_DOWN),
220
	UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
221 222
			     61, UNIPHIER_PIN_DRV_4_8,
			     61, UNIPHIER_PIN_PULL_DOWN),
223
	UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
224 225
			     62, UNIPHIER_PIN_DRV_4_8,
			     62, UNIPHIER_PIN_PULL_DOWN),
226
	UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
227 228
			     63, UNIPHIER_PIN_DRV_4_8,
			     63, UNIPHIER_PIN_PULL_DOWN),
229
	UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
230 231
			     64, UNIPHIER_PIN_DRV_4_8,
			     64, UNIPHIER_PIN_PULL_DOWN),
232
	UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
233 234
			     65, UNIPHIER_PIN_DRV_4_8,
			     65, UNIPHIER_PIN_PULL_DOWN),
235
	UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
236 237
			     66, UNIPHIER_PIN_DRV_4_8,
			     66, UNIPHIER_PIN_PULL_DOWN),
238
	UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
239 240
			     67, UNIPHIER_PIN_DRV_4_8,
			     67, UNIPHIER_PIN_PULL_DOWN),
241
	UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
242 243
			     68, UNIPHIER_PIN_DRV_4_8,
			     68, UNIPHIER_PIN_PULL_DOWN),
244
	UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
245 246
			     69, UNIPHIER_PIN_DRV_4_8,
			     69, UNIPHIER_PIN_PULL_DOWN),
247
	UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
248 249
			     70, UNIPHIER_PIN_DRV_4_8,
			     70, UNIPHIER_PIN_PULL_DOWN),
250
	UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
251 252
			     71, UNIPHIER_PIN_DRV_4_8,
			     71, UNIPHIER_PIN_PULL_DOWN),
253
	UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
254 255
			     72, UNIPHIER_PIN_DRV_4_8,
			     72, UNIPHIER_PIN_PULL_DOWN),
256
	UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
257 258
			     73, UNIPHIER_PIN_DRV_4_8,
			     73, UNIPHIER_PIN_PULL_DOWN),
259
	UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
260 261
			     74, UNIPHIER_PIN_DRV_4_8,
			     74, UNIPHIER_PIN_PULL_DOWN),
262
	UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
263 264
			     75, UNIPHIER_PIN_DRV_4_8,
			     75, UNIPHIER_PIN_PULL_DOWN),
265
	UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
266 267
			     76, UNIPHIER_PIN_DRV_4_8,
			     76, UNIPHIER_PIN_PULL_DOWN),
268
	UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
269 270
			     77, UNIPHIER_PIN_DRV_4_8,
			     77, UNIPHIER_PIN_PULL_DOWN),
271
	UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
272 273
			     78, UNIPHIER_PIN_DRV_4_8,
			     78, UNIPHIER_PIN_PULL_DOWN),
274
	UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
275 276
			     79, UNIPHIER_PIN_DRV_4_8,
			     79, UNIPHIER_PIN_PULL_DOWN),
277
	UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
278 279
			     80, UNIPHIER_PIN_DRV_4_8,
			     80, UNIPHIER_PIN_PULL_DOWN),
280
	UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
281 282
			     81, UNIPHIER_PIN_DRV_4_8,
			     81, UNIPHIER_PIN_PULL_DOWN),
283
	UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
284 285
			     82, UNIPHIER_PIN_DRV_4_8,
			     82, UNIPHIER_PIN_PULL_DOWN),
286
	UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
287 288
			     83, UNIPHIER_PIN_DRV_4_8,
			     83, UNIPHIER_PIN_PULL_DOWN),
289
	UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
290 291
			     84, UNIPHIER_PIN_DRV_4_8,
			     84, UNIPHIER_PIN_PULL_DOWN),
292
	UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
293 294
			     85, UNIPHIER_PIN_DRV_4_8,
			     85, UNIPHIER_PIN_PULL_DOWN),
295
	UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
296 297
			     86, UNIPHIER_PIN_DRV_4_8,
			     86, UNIPHIER_PIN_PULL_DOWN),
298
	UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
299 300
			     87, UNIPHIER_PIN_DRV_4_8,
			     87, UNIPHIER_PIN_PULL_DOWN),
301
	UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
302 303
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     132, UNIPHIER_PIN_PULL_DOWN),
304
	UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
305 306
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     133, UNIPHIER_PIN_PULL_DOWN),
307
	UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
308 309
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     134, UNIPHIER_PIN_PULL_DOWN),
310
	UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
311 312
			     88, UNIPHIER_PIN_DRV_4_8,
			     88, UNIPHIER_PIN_PULL_DOWN),
313
	UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
314 315 316 317 318 319 320 321 322 323 324 325 326 327
			     89, UNIPHIER_PIN_DRV_4_8,
			     89, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
			     90, UNIPHIER_PIN_DRV_4_8,
			     90, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
			     91, UNIPHIER_PIN_DRV_4_8,
			     91, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
			     92, UNIPHIER_PIN_DRV_4_8,
			     92, UNIPHIER_PIN_PULL_DOWN),
	UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
			     93, UNIPHIER_PIN_DRV_4_8,
			     93, UNIPHIER_PIN_PULL_UP),
328
	UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
329 330
			     94, UNIPHIER_PIN_DRV_4_8,
			     94, UNIPHIER_PIN_PULL_DOWN),
331
	UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
332 333
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
334
	UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
335 336
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
337
	UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
338 339
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
340
	UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
341 342
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
343
	UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
344 345
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
346
	UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
347 348
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
349
	UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
350 351
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
352
	UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
353 354 355 356 357 358 359 360
			     -1, UNIPHIER_PIN_DRV_FIXED_4,
			     -1, UNIPHIER_PIN_PULL_NONE),
	UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
			     95, UNIPHIER_PIN_DRV_4_8,
			     95, UNIPHIER_PIN_PULL_UP),
	UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
			     96, UNIPHIER_PIN_DRV_4_8,
			     96, UNIPHIER_PIN_PULL_UP),
361
	UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
362 363
			     97, UNIPHIER_PIN_DRV_4_8,
			     97, UNIPHIER_PIN_PULL_UP),
364
	UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
365 366
			     98, UNIPHIER_PIN_DRV_4_8,
			     98, UNIPHIER_PIN_PULL_UP),
367
	UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
368 369
			     99, UNIPHIER_PIN_DRV_4_8,
			     99, UNIPHIER_PIN_PULL_UP),
370
	UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
371 372
			     100, UNIPHIER_PIN_DRV_4_8,
			     100, UNIPHIER_PIN_PULL_UP),
373
	UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
374 375
			     -1, UNIPHIER_PIN_DRV_FIXED_5,
			     -1, UNIPHIER_PIN_PULL_NONE),
376
	UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
377 378
			     -1, UNIPHIER_PIN_DRV_FIXED_5,
			     -1, UNIPHIER_PIN_PULL_NONE),
379
	UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
380 381
			     101, UNIPHIER_PIN_DRV_4_8,
			     101, UNIPHIER_PIN_PULL_DOWN),
382
	UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
383 384
			     102, UNIPHIER_PIN_DRV_4_8,
			     102, UNIPHIER_PIN_PULL_DOWN),
385
	UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
386 387
			     103, UNIPHIER_PIN_DRV_4_8,
			     103, UNIPHIER_PIN_PULL_DOWN),
388
	UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
389 390
			     104, UNIPHIER_PIN_DRV_4_8,
			     104, UNIPHIER_PIN_PULL_DOWN),
391
	UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
392 393
			     105, UNIPHIER_PIN_DRV_4_8,
			     105, UNIPHIER_PIN_PULL_DOWN),
394
	UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
395 396
			     106, UNIPHIER_PIN_DRV_4_8,
			     106, UNIPHIER_PIN_PULL_DOWN),
397
	UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
398 399
			     107, UNIPHIER_PIN_DRV_4_8,
			     107, UNIPHIER_PIN_PULL_DOWN),
400
	UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
401 402
			     108, UNIPHIER_PIN_DRV_4_8,
			     108, UNIPHIER_PIN_PULL_DOWN),
403
	UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
404 405
			     109, UNIPHIER_PIN_DRV_4_8,
			     109, UNIPHIER_PIN_PULL_DOWN),
406
	UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
407 408
			     110, UNIPHIER_PIN_DRV_4_8,
			     110, UNIPHIER_PIN_PULL_DOWN),
409
	UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
410 411
			     111, UNIPHIER_PIN_DRV_4_8,
			     111, UNIPHIER_PIN_PULL_DOWN),
412
	UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
413 414
			     112, UNIPHIER_PIN_DRV_4_8,
			     112, UNIPHIER_PIN_PULL_DOWN),
415
	UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
416 417
			     113, UNIPHIER_PIN_DRV_4_8,
			     113, UNIPHIER_PIN_PULL_DOWN),
418
	UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
419 420
			     114, UNIPHIER_PIN_DRV_4_8,
			     114, UNIPHIER_PIN_PULL_DOWN),
421
	UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
422 423
			     115, UNIPHIER_PIN_DRV_4_8,
			     115, UNIPHIER_PIN_PULL_DOWN),
424
	UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
425 426
			     116, UNIPHIER_PIN_DRV_4_8,
			     116, UNIPHIER_PIN_PULL_DOWN),
427
	UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
428 429
			     117, UNIPHIER_PIN_DRV_4_8,
			     117, UNIPHIER_PIN_PULL_DOWN),
430
	UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
			     118, UNIPHIER_PIN_DRV_4_8,
			     118, UNIPHIER_PIN_PULL_DOWN),
};

static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
static const unsigned i2c0_pins[] = {102, 103};
static const unsigned i2c0_muxvals[] = {0, 0};
static const unsigned i2c1_pins[] = {104, 105};
static const unsigned i2c1_muxvals[] = {0, 0};
static const unsigned i2c2_pins[] = {108, 109};
static const unsigned i2c2_muxvals[] = {2, 2};
static const unsigned i2c3_pins[] = {108, 109};
static const unsigned i2c3_muxvals[] = {3, 3};
static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
				     27, 28, 29, 30, 31};
static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
					0, 0};
static const unsigned nand_cs1_pins[] = {22, 23};
static const unsigned nand_cs1_muxvals[] = {0, 0};
453 454
static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531
static const unsigned uart0_pins[] = {70, 71};
static const unsigned uart0_muxvals[] = {3, 3};
static const unsigned uart1_pins[] = {114, 115};
static const unsigned uart1_muxvals[] = {0, 0};
static const unsigned uart2_pins[] = {112, 113};
static const unsigned uart2_muxvals[] = {1, 1};
static const unsigned uart3_pins[] = {110, 111};
static const unsigned uart3_muxvals[] = {1, 1};
static const unsigned usb0_pins[] = {41, 42};
static const unsigned usb0_muxvals[] = {0, 0};
static const unsigned usb1_pins[] = {43, 44};
static const unsigned usb1_muxvals[] = {0, 0};
static const unsigned usb2_pins[] = {114, 115};
static const unsigned usb2_muxvals[] = {1, 1};
static const unsigned port_range0_pins[] = {
	0, 1, 2, 3, 4, 5, 6, 7,				/* PORT0x */
	8, 9, 10, 11, 12, 13, 14, 15,			/* PORT1x */
	32, 33, 34, 35, 36, 37, 38, 39,			/* PORT2x */
	59, 60, 61, 62, 63, 64, 65, 66,			/* PORT3x */
	95, 96, 97, 98, 99, 100, 101, 57,		/* PORT4x */
	70, 71, 72, 73, 74, 75, 76, 77,			/* PORT5x */
	81, 83, 84, 85, 86, 89, 90, 91,			/* PORT6x */
	118, 119, 120, 121, 122, 53, 54, 55,		/* PORT7x */
	41, 42, 43, 44, 79, 80, 18, 19,			/* PORT8x */
	110, 111, 112, 113, 114, 115, 16, 17,		/* PORT9x */
	40, 67, 68, 69, 78, 92, 93, 94,			/* PORT10x */
	48, 49, 46, 45, 123, 124, 125, 126,		/* PORT11x */
	47, 127, 20, 56, 22,				/* PORT120-124 */
};
static const unsigned port_range0_muxvals[] = {
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT0x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT1x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT2x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT3x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT4x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT5x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT6x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT7x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT8x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT9x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT10x */
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT11x */
	15, 15, 15, 15, 15,				/* PORT120-124 */
};
static const unsigned port_range1_pins[] = {
	116, 117,					/* PORT130-131 */
};
static const unsigned port_range1_muxvals[] = {
	15, 15,						/* PORT130-131 */
};
static const unsigned port_range2_pins[] = {
	102, 103, 104, 105, 106, 107, 108, 109,		/* PORT14x */
};
static const unsigned port_range2_muxvals[] = {
	15, 15, 15, 15, 15, 15, 15, 15,			/* PORT14x */
};
static const unsigned port_range3_pins[] = {
	23,						/* PORT166 */
};
static const unsigned port_range3_muxvals[] = {
	15,						/* PORT166 */
};
static const unsigned xirq_range0_pins[] = {
	128, 129, 130, 131, 132, 133, 134, 135,		/* XIRQ0-7 */
	82, 87, 88, 50, 51,				/* XIRQ8-12 */
};
static const unsigned xirq_range0_muxvals[] = {
	0, 0, 0, 0, 0, 0, 0, 0,				/* XIRQ0-7 */
	14, 14, 14, 14, 14,				/* XIRQ8-12 */
};
static const unsigned xirq_range1_pins[] = {
	52, 58,						/* XIRQ14-15 */
};
static const unsigned xirq_range1_muxvals[] = {
	14, 14,						/* XIRQ14-15 */
};

532
static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
533 534 535 536 537 538 539 540
	UNIPHIER_PINCTRL_GROUP(emmc),
	UNIPHIER_PINCTRL_GROUP(emmc_dat8),
	UNIPHIER_PINCTRL_GROUP(i2c0),
	UNIPHIER_PINCTRL_GROUP(i2c1),
	UNIPHIER_PINCTRL_GROUP(i2c2),
	UNIPHIER_PINCTRL_GROUP(i2c3),
	UNIPHIER_PINCTRL_GROUP(nand),
	UNIPHIER_PINCTRL_GROUP(nand_cs1),
541
	UNIPHIER_PINCTRL_GROUP(sd),
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689
	UNIPHIER_PINCTRL_GROUP(uart0),
	UNIPHIER_PINCTRL_GROUP(uart1),
	UNIPHIER_PINCTRL_GROUP(uart2),
	UNIPHIER_PINCTRL_GROUP(uart3),
	UNIPHIER_PINCTRL_GROUP(usb0),
	UNIPHIER_PINCTRL_GROUP(usb1),
	UNIPHIER_PINCTRL_GROUP(usb2),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range0),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range1),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range2),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range3),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range0),
	UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_range1),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range0, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range0, 1),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range0, 2),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range0, 3),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range0, 4),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range0, 5),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range0, 6),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range0, 7),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range0, 8),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range0, 9),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range0, 10),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range0, 11),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range0, 12),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range0, 13),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range0, 14),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range0, 15),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range0, 16),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range0, 17),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range0, 18),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range0, 19),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range0, 20),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range0, 21),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range0, 22),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range0, 23),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range0, 24),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range0, 25),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range0, 26),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range0, 27),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range0, 28),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range0, 29),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range0, 30),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range0, 31),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range0, 32),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range0, 33),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range0, 34),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range0, 35),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range0, 36),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range0, 37),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range0, 38),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range0, 39),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range0, 40),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range0, 41),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range0, 42),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range0, 43),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range0, 44),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range0, 45),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range0, 46),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range0, 47),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range0, 48),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range0, 49),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range0, 50),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range0, 51),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range0, 52),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range0, 53),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range0, 54),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range0, 55),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range0, 56),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range0, 57),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range0, 58),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range0, 59),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range0, 60),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range0, 61),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range0, 62),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range0, 63),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range0, 64),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range0, 65),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range0, 66),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range0, 67),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range0, 68),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range0, 69),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range0, 70),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range0, 71),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range0, 72),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range0, 73),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range0, 74),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range0, 75),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range0, 76),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range0, 77),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range0, 78),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range0, 79),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range0, 80),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range0, 81),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range0, 82),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range0, 83),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range0, 84),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range0, 85),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range0, 86),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range0, 87),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port110, port_range0, 88),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port111, port_range0, 89),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port112, port_range0, 90),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port113, port_range0, 91),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port114, port_range0, 92),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port115, port_range0, 93),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port116, port_range0, 94),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port117, port_range0, 95),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range0, 96),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range0, 97),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range0, 98),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range0, 99),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range0, 100),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range1, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range1, 1),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range2, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range2, 1),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range2, 2),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range2, 3),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range2, 4),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range2, 5),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range2, 6),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range2, 7),
	UNIPHIER_PINCTRL_GROUP_SINGLE(port166, port_range3, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq_range0, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq_range0, 1),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq_range0, 2),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq_range0, 3),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq_range0, 4),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq_range0, 5),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq_range0, 6),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq_range0, 7),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq_range0, 8),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq_range0, 9),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq_range0, 10),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq_range0, 11),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq_range0, 12),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq_range1, 0),
	UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq_range1, 1),
};

static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
static const char * const i2c0_groups[] = {"i2c0"};
static const char * const i2c1_groups[] = {"i2c1"};
static const char * const i2c2_groups[] = {"i2c2"};
static const char * const i2c3_groups[] = {"i2c3"};
static const char * const nand_groups[] = {"nand", "nand_cs1"};
690
static const char * const sd_groups[] = {"sd"};
691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738
static const char * const uart0_groups[] = {"uart0"};
static const char * const uart1_groups[] = {"uart1"};
static const char * const uart2_groups[] = {"uart2"};
static const char * const uart3_groups[] = {"uart3"};
static const char * const usb0_groups[] = {"usb0"};
static const char * const usb1_groups[] = {"usb1"};
static const char * const usb2_groups[] = {"usb2"};
static const char * const port_groups[] = {
	"port00",  "port01",  "port02",  "port03",
	"port04",  "port05",  "port06",  "port07",
	"port10",  "port11",  "port12",  "port13",
	"port14",  "port15",  "port16",  "port17",
	"port20",  "port21",  "port22",  "port23",
	"port24",  "port25",  "port26",  "port27",
	"port30",  "port31",  "port32",  "port33",
	"port34",  "port35",  "port36",  "port37",
	"port40",  "port41",  "port42",  "port43",
	"port44",  "port45",  "port46",  "port47",
	"port50",  "port51",  "port52",  "port53",
	"port54",  "port55",  "port56",  "port57",
	"port60",  "port61",  "port62",  "port63",
	"port64",  "port65",  "port66",  "port67",
	"port70",  "port71",  "port72",  "port73",
	"port74",  "port75",  "port76",  "port77",
	"port80",  "port81",  "port82",  "port83",
	"port84",  "port85",  "port86",  "port87",
	"port90",  "port91",  "port92",  "port93",
	"port94",  "port95",  "port96",  "port97",
	"port100", "port101", "port102", "port103",
	"port104", "port105", "port106", "port107",
	"port110", "port111", "port112", "port113",
	"port114", "port115", "port116", "port117",
	"port120", "port121", "port122", "port123",
	"port124", "port125", "port126", "port127",
	"port130", "port131", "port132", "port133",
	"port134", "port135", "port136", "port137",
	"port140", "port141", "port142", "port143",
	"port144", "port145", "port146", "port147",
	/* port150-164 missing */
	/* none */ "port165",
};
static const char * const xirq_groups[] = {
	"xirq0",  "xirq1",  "xirq2",  "xirq3",
	"xirq4",  "xirq5",  "xirq6",  "xirq7",
	"xirq8",  "xirq9",  "xirq10", "xirq11",
	"xirq12", /* none*/ "xirq14", "xirq15",
};

739
static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
740 741 742 743 744 745
	UNIPHIER_PINMUX_FUNCTION(emmc),
	UNIPHIER_PINMUX_FUNCTION(i2c0),
	UNIPHIER_PINMUX_FUNCTION(i2c1),
	UNIPHIER_PINMUX_FUNCTION(i2c2),
	UNIPHIER_PINMUX_FUNCTION(i2c3),
	UNIPHIER_PINMUX_FUNCTION(nand),
746
	UNIPHIER_PINMUX_FUNCTION(sd),
747 748 749 750 751 752 753 754 755 756 757
	UNIPHIER_PINMUX_FUNCTION(uart0),
	UNIPHIER_PINMUX_FUNCTION(uart1),
	UNIPHIER_PINMUX_FUNCTION(uart2),
	UNIPHIER_PINMUX_FUNCTION(uart3),
	UNIPHIER_PINMUX_FUNCTION(usb0),
	UNIPHIER_PINMUX_FUNCTION(usb1),
	UNIPHIER_PINMUX_FUNCTION(usb2),
	UNIPHIER_PINMUX_FUNCTION(port),
	UNIPHIER_PINMUX_FUNCTION(xirq),
};

758 759 760 761 762
static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
	.groups = uniphier_sld8_groups,
	.groups_count = ARRAY_SIZE(uniphier_sld8_groups),
	.functions = uniphier_sld8_functions,
	.functions_count = ARRAY_SIZE(uniphier_sld8_functions),
763 764 765 766 767
	.mux_bits = 8,
	.reg_stride = 4,
	.load_pinctrl = false,
};

768
static struct pinctrl_desc uniphier_sld8_pinctrl_desc = {
769
	.name = DRIVER_NAME,
770 771
	.pins = uniphier_sld8_pins,
	.npins = ARRAY_SIZE(uniphier_sld8_pins),
772 773
};

774
static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
775
{
776 777
	return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pinctrl_desc,
				      &uniphier_sld8_pindata);
778 779
}

780
static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
781 782 783
	{ .compatible = "socionext,ph1-sld8-pinctrl" },
	{ /* sentinel */ }
};
784
MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match);
785

786 787
static struct platform_driver uniphier_sld8_pinctrl_driver = {
	.probe = uniphier_sld8_pinctrl_probe,
788 789
	.driver = {
		.name = DRIVER_NAME,
790
		.of_match_table = uniphier_sld8_pinctrl_match,
791 792
	},
};
793
module_platform_driver(uniphier_sld8_pinctrl_driver);
794 795 796 797

MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
MODULE_LICENSE("GPL");