hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
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
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Marvell PXA27x family pin control
 *
 * Copyright (C) 2015 Robert Jarzmik
 */
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/pinctrl/pinctrl.h>
 
#include "pinctrl-pxa2xx.h"
 
static const struct pxa_desc_pin pxa27x_pins[] = {
   PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)),
   PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1)),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(9),
            PXA_FUNCTION(0, 3, "FFCTS"),
            PXA_FUNCTION(1, 1, "HZ_CLK"),
            PXA_FUNCTION(1, 3, "CHOUT<0>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(10),
            PXA_FUNCTION(0, 1, "FFDCD"),
            PXA_FUNCTION(0, 3, "USB_P3_5"),
            PXA_FUNCTION(1, 1, "HZ_CLK"),
            PXA_FUNCTION(1, 3, "CHOUT<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(11),
            PXA_FUNCTION(0, 1, "EXT_SYNC<0>"),
            PXA_FUNCTION(0, 2, "SSPRXD2"),
            PXA_FUNCTION(0, 3, "USB_P3_1"),
            PXA_FUNCTION(1, 1, "CHOUT<0>"),
            PXA_FUNCTION(1, 1, "PWM_OUT<2>"),
            PXA_FUNCTION(1, 3, "48_MHz")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(12),
            PXA_FUNCTION(0, 1, "EXT_SYNC<1>"),
            PXA_FUNCTION(0, 2, "CIF_DD<7>"),
            PXA_FUNCTION(1, 1, "CHOUT<1>"),
            PXA_FUNCTION(1, 1, "PWM_OUT<3>"),
            PXA_FUNCTION(1, 3, "48_MHz")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(13),
            PXA_FUNCTION(0, 1, "CLK_EXT"),
            PXA_FUNCTION(0, 2, "KP_DKIN<7>"),
            PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
            PXA_FUNCTION(1, 1, "SSPTXD2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(14),
            PXA_FUNCTION(0, 1, "L_VSYNC"),
            PXA_FUNCTION(0, 2, "SSPSFRM2"),
            PXA_FUNCTION(1, 1, "SSPSFRM2"),
            PXA_FUNCTION(1, 3, "UCLK")),
   PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15)),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(16),
            PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
            PXA_FUNCTION(1, 2, "PWM_OUT<0>"),
            PXA_FUNCTION(1, 3, "FFTXD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(17),
            PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
            PXA_FUNCTION(0, 2, "CIF_DD<6>"),
            PXA_FUNCTION(1, 2, "PWM_OUT<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(18),
            PXA_FUNCTION(0, 1, "RDY")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(19),
            PXA_FUNCTION(0, 1, "SSPSCLK2"),
            PXA_FUNCTION(0, 3, "FFRXD"),
            PXA_FUNCTION(1, 1, "SSPSCLK2"),
            PXA_FUNCTION(1, 2, "L_CS"),
            PXA_FUNCTION(1, 3, "nURST")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(20),
            PXA_FUNCTION(0, 1, "DREQ<0>"),
            PXA_FUNCTION(0, 2, "MBREQ"),
            PXA_FUNCTION(1, 1, "nSDCS<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(21),
            PXA_FUNCTION(1, 1, "nSDCS<3>"),
            PXA_FUNCTION(1, 2, "DVAL<0>"),
            PXA_FUNCTION(1, 3, "MBGNT")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(22),
            PXA_FUNCTION(0, 1, "SSPEXTCLK2"),
            PXA_FUNCTION(0, 2, "SSPSCLKEN2"),
            PXA_FUNCTION(0, 3, "SSPSCLK2"),
            PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
            PXA_FUNCTION(1, 2, "SSPSYSCLK2"),
            PXA_FUNCTION(1, 3, "SSPSCLK2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(23),
            PXA_FUNCTION(0, 2, "SSPSCLK"),
            PXA_FUNCTION(1, 1, "CIF_MCLK"),
            PXA_FUNCTION(1, 1, "SSPSCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(24),
            PXA_FUNCTION(0, 1, "CIF_FV"),
            PXA_FUNCTION(0, 2, "SSPSFRM"),
            PXA_FUNCTION(1, 1, "CIF_FV"),
            PXA_FUNCTION(1, 2, "SSPSFRM")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(25),
            PXA_FUNCTION(0, 1, "CIF_LV"),
            PXA_FUNCTION(1, 1, "CIF_LV"),
            PXA_FUNCTION(1, 2, "SSPTXD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(26),
            PXA_FUNCTION(0, 1, "SSPRXD"),
            PXA_FUNCTION(0, 2, "CIF_PCLK"),
            PXA_FUNCTION(0, 3, "FFCTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(27),
            PXA_FUNCTION(0, 1, "SSPEXTCLK"),
            PXA_FUNCTION(0, 2, "SSPSCLKEN"),
            PXA_FUNCTION(0, 3, "CIF_DD<0>"),
            PXA_FUNCTION(1, 1, "SSPSYSCLK"),
            PXA_FUNCTION(1, 3, "FFRTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(28),
            PXA_FUNCTION(0, 1, "AC97_BITCLK"),
            PXA_FUNCTION(0, 2, "I2S_BITCLK"),
            PXA_FUNCTION(0, 3, "SSPSFRM"),
            PXA_FUNCTION(1, 1, "I2S_BITCLK"),
            PXA_FUNCTION(1, 3, "SSPSFRM")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(29),
            PXA_FUNCTION(0, 1, "AC97_SDATA_IN_0"),
            PXA_FUNCTION(0, 2, "I2S_SDATA_IN"),
            PXA_FUNCTION(0, 3, "SSPSCLK"),
            PXA_FUNCTION(1, 1, "SSPRXD2"),
            PXA_FUNCTION(1, 3, "SSPSCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(30),
            PXA_FUNCTION(1, 1, "I2S_SDATA_OUT"),
            PXA_FUNCTION(1, 2, "AC97_SDATA_OUT"),
            PXA_FUNCTION(1, 3, "USB_P3_2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(31),
            PXA_FUNCTION(1, 1, "I2S_SYNC"),
            PXA_FUNCTION(1, 2, "AC97_SYNC"),
            PXA_FUNCTION(1, 3, "USB_P3_6")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(32),
            PXA_FUNCTION(1, 1, "MSSCLK"),
            PXA_FUNCTION(1, 2, "MMCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(33),
            PXA_FUNCTION(0, 1, "FFRXD"),
            PXA_FUNCTION(0, 2, "FFDSR"),
            PXA_FUNCTION(1, 1, "DVAL<1>"),
            PXA_FUNCTION(1, 2, "nCS<5>"),
            PXA_FUNCTION(1, 3, "MBGNT")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(34),
            PXA_FUNCTION(0, 1, "FFRXD"),
            PXA_FUNCTION(0, 2, "KP_MKIN<3>"),
            PXA_FUNCTION(0, 3, "SSPSCLK3"),
            PXA_FUNCTION(1, 1, "USB_P2_2"),
            PXA_FUNCTION(1, 3, "SSPSCLK3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(35),
            PXA_FUNCTION(0, 1, "FFCTS"),
            PXA_FUNCTION(0, 2, "USB_P2_1"),
            PXA_FUNCTION(0, 3, "SSPSFRM3"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<6>"),
            PXA_FUNCTION(1, 3, "SSPTXD3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(36),
            PXA_FUNCTION(0, 1, "FFDCD"),
            PXA_FUNCTION(0, 2, "SSPSCLK2"),
            PXA_FUNCTION(0, 3, "KP_MKIN<7>"),
            PXA_FUNCTION(1, 1, "USB_P2_4"),
            PXA_FUNCTION(1, 2, "SSPSCLK2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(37),
            PXA_FUNCTION(0, 1, "FFDSR"),
            PXA_FUNCTION(0, 2, "SSPSFRM2"),
            PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
            PXA_FUNCTION(1, 1, "USB_P2_8"),
            PXA_FUNCTION(1, 2, "SSPSFRM2"),
            PXA_FUNCTION(1, 3, "FFTXD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(38),
            PXA_FUNCTION(0, 1, "FFRI"),
            PXA_FUNCTION(0, 2, "KP_MKIN<4>"),
            PXA_FUNCTION(0, 3, "USB_P2_3"),
            PXA_FUNCTION(1, 1, "SSPTXD3"),
            PXA_FUNCTION(1, 2, "SSPTXD2"),
            PXA_FUNCTION(1, 3, "PWM_OUT<0>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(39),
            PXA_FUNCTION(0, 1, "KP_MKIN<4>"),
            PXA_FUNCTION(0, 3, "SSPSFRM3"),
            PXA_FUNCTION(1, 1, "USB_P2_6"),
            PXA_FUNCTION(1, 2, "FFTXD"),
            PXA_FUNCTION(1, 3, "SSPSFRM3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(40),
            PXA_FUNCTION(0, 1, "SSPRXD2"),
            PXA_FUNCTION(0, 3, "USB_P2_5"),
            PXA_FUNCTION(1, 1, "KP_MKOUT<6>"),
            PXA_FUNCTION(1, 2, "FFDTR"),
            PXA_FUNCTION(1, 3, "SSPSCLK3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(41),
            PXA_FUNCTION(0, 1, "FFRXD"),
            PXA_FUNCTION(0, 2, "USB_P2_7"),
            PXA_FUNCTION(0, 3, "SSPRXD3"),
            PXA_FUNCTION(1, 1, "KP_MKOUT<7>"),
            PXA_FUNCTION(1, 2, "FFRTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(42),
            PXA_FUNCTION(0, 1, "BTRXD"),
            PXA_FUNCTION(0, 2, "ICP_RXD"),
            PXA_FUNCTION(1, 3, "CIF_MCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(43),
            PXA_FUNCTION(0, 3, "CIF_FV"),
            PXA_FUNCTION(1, 1, "ICP_TXD"),
            PXA_FUNCTION(1, 2, "BTTXD"),
            PXA_FUNCTION(1, 3, "CIF_FV")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(44),
            PXA_FUNCTION(0, 1, "BTCTS"),
            PXA_FUNCTION(0, 3, "CIF_LV"),
            PXA_FUNCTION(1, 3, "CIF_LV")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(45),
            PXA_FUNCTION(0, 3, "CIF_PCLK"),
            PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
            PXA_FUNCTION(1, 2, "BTRTS"),
            PXA_FUNCTION(1, 3, "SSPSYSCLK3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(46),
            PXA_FUNCTION(0, 1, "ICP_RXD"),
            PXA_FUNCTION(0, 2, "STD_RXD"),
            PXA_FUNCTION(1, 2, "PWM_OUT<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(47),
            PXA_FUNCTION(0, 1, "CIF_DD<0>"),
            PXA_FUNCTION(1, 1, "STD_TXD"),
            PXA_FUNCTION(1, 2, "ICP_TXD"),
            PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(48),
            PXA_FUNCTION(0, 1, "CIF_DD<5>"),
            PXA_FUNCTION(1, 1, "BB_OB_DAT<1>"),
            PXA_FUNCTION(1, 2, "nPOE")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(49),
            PXA_FUNCTION(1, 2, "nPWE")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(50),
            PXA_FUNCTION(0, 1, "CIF_DD<3>"),
            PXA_FUNCTION(0, 3, "SSPSCLK2"),
            PXA_FUNCTION(1, 1, "BB_OB_DAT<2>"),
            PXA_FUNCTION(1, 2, "nPIOR"),
            PXA_FUNCTION(1, 3, "SSPSCLK2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(51),
            PXA_FUNCTION(0, 1, "CIF_DD<2>"),
            PXA_FUNCTION(1, 1, "BB_OB_DAT<3>"),
            PXA_FUNCTION(1, 2, "nPIOW")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(52),
            PXA_FUNCTION(0, 1, "CIF_DD<4>"),
            PXA_FUNCTION(0, 2, "SSPSCLK3"),
            PXA_FUNCTION(1, 1, "BB_OB_CLK"),
            PXA_FUNCTION(1, 2, "SSPSCLK3")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(53),
            PXA_FUNCTION(0, 1, "FFRXD"),
            PXA_FUNCTION(0, 2, "USB_P2_3"),
            PXA_FUNCTION(1, 1, "BB_OB_STB"),
            PXA_FUNCTION(1, 2, "CIF_MCLK"),
            PXA_FUNCTION(1, 3, "SSPSYSCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(54),
            PXA_FUNCTION(0, 2, "BB_OB_WAIT"),
            PXA_FUNCTION(0, 3, "CIF_PCLK"),
            PXA_FUNCTION(1, 2, "nPCE<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(55),
            PXA_FUNCTION(0, 1, "CIF_DD<1>"),
            PXA_FUNCTION(0, 2, "BB_IB_DAT<1>"),
            PXA_FUNCTION(1, 2, "nPREG")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(56),
            PXA_FUNCTION(0, 1, "nPWAIT"),
            PXA_FUNCTION(0, 2, "BB_IB_DAT<2>"),
            PXA_FUNCTION(1, 1, "USB_P3_4")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(57),
            PXA_FUNCTION(0, 1, "nIOS16"),
            PXA_FUNCTION(0, 2, "BB_IB_DAT<3>"),
            PXA_FUNCTION(1, 3, "SSPTXD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(58),
            PXA_FUNCTION(0, 2, "LDD<0>"),
            PXA_FUNCTION(1, 2, "LDD<0>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(59),
            PXA_FUNCTION(0, 2, "LDD<1>"),
            PXA_FUNCTION(1, 2, "LDD<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(60),
            PXA_FUNCTION(0, 2, "LDD<2>"),
            PXA_FUNCTION(1, 2, "LDD<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(61),
            PXA_FUNCTION(0, 2, "LDD<3>"),
            PXA_FUNCTION(1, 2, "LDD<3>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(62),
            PXA_FUNCTION(0, 2, "LDD<4>"),
            PXA_FUNCTION(1, 2, "LDD<4>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(63),
            PXA_FUNCTION(0, 2, "LDD<5>"),
            PXA_FUNCTION(1, 2, "LDD<5>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(64),
            PXA_FUNCTION(0, 2, "LDD<6>"),
            PXA_FUNCTION(1, 2, "LDD<6>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(65),
            PXA_FUNCTION(0, 2, "LDD<7>"),
            PXA_FUNCTION(1, 2, "LDD<7>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(66),
            PXA_FUNCTION(0, 2, "LDD<8>"),
            PXA_FUNCTION(1, 2, "LDD<8>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(67),
            PXA_FUNCTION(0, 2, "LDD<9>"),
            PXA_FUNCTION(1, 2, "LDD<9>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(68),
            PXA_FUNCTION(0, 2, "LDD<10>"),
            PXA_FUNCTION(1, 2, "LDD<10>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(69),
            PXA_FUNCTION(0, 2, "LDD<11>"),
            PXA_FUNCTION(1, 2, "LDD<11>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(70),
            PXA_FUNCTION(0, 2, "LDD<12>"),
            PXA_FUNCTION(1, 2, "LDD<12>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(71),
            PXA_FUNCTION(0, 2, "LDD<13>"),
            PXA_FUNCTION(1, 2, "LDD<13>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(72),
            PXA_FUNCTION(0, 2, "LDD<14>"),
            PXA_FUNCTION(1, 2, "LDD<14>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(73),
            PXA_FUNCTION(0, 2, "LDD<15>"),
            PXA_FUNCTION(1, 2, "LDD<15>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(74),
            PXA_FUNCTION(1, 2, "L_FCLK_RD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(75),
            PXA_FUNCTION(1, 2, "L_LCLK_A0")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(76),
            PXA_FUNCTION(1, 2, "L_PCLK_WR")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(77),
            PXA_FUNCTION(1, 2, "L_BIAS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(78),
            PXA_FUNCTION(1, 1, "nPCE<2>"),
            PXA_FUNCTION(1, 2, "nCS<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(79),
            PXA_FUNCTION(1, 1, "PSKTSEL"),
            PXA_FUNCTION(1, 2, "nCS<3>"),
            PXA_FUNCTION(1, 3, "PWM_OUT<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(80),
            PXA_FUNCTION(0, 1, "DREQ<1>"),
            PXA_FUNCTION(0, 2, "MBREQ"),
            PXA_FUNCTION(1, 2, "nCS<4>"),
            PXA_FUNCTION(1, 3, "PWM_OUT<3>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(81),
            PXA_FUNCTION(0, 2, "CIF_DD<0>"),
            PXA_FUNCTION(1, 1, "SSPTXD3"),
            PXA_FUNCTION(1, 2, "BB_OB_DAT<0>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(82),
            PXA_FUNCTION(0, 1, "SSPRXD3"),
            PXA_FUNCTION(0, 2, "BB_IB_DAT<0>"),
            PXA_FUNCTION(0, 3, "CIF_DD<5>"),
            PXA_FUNCTION(1, 3, "FFDTR")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(83),
            PXA_FUNCTION(0, 1, "SSPSFRM3"),
            PXA_FUNCTION(0, 2, "BB_IB_CLK"),
            PXA_FUNCTION(0, 3, "CIF_DD<5>"),
            PXA_FUNCTION(1, 1, "SSPSFRM3"),
            PXA_FUNCTION(1, 2, "FFTXD"),
            PXA_FUNCTION(1, 3, "FFRTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(84),
            PXA_FUNCTION(0, 1, "SSPCLK3"),
            PXA_FUNCTION(0, 2, "BB_IB_STB"),
            PXA_FUNCTION(0, 3, "CIF_FV"),
            PXA_FUNCTION(1, 1, "SSPCLK3"),
            PXA_FUNCTION(1, 3, "CIF_FV")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(85),
            PXA_FUNCTION(0, 1, "FFRXD"),
            PXA_FUNCTION(0, 2, "DREQ<2>"),
            PXA_FUNCTION(0, 3, "CIF_LV"),
            PXA_FUNCTION(1, 1, "nPCE<1>"),
            PXA_FUNCTION(1, 2, "BB_IB_WAIT"),
            PXA_FUNCTION(1, 3, "CIF_LV")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(86),
            PXA_FUNCTION(0, 1, "SSPRXD2"),
            PXA_FUNCTION(0, 2, "LDD<16>"),
            PXA_FUNCTION(0, 3, "USB_P3_5"),
            PXA_FUNCTION(1, 1, "nPCE<1>"),
            PXA_FUNCTION(1, 2, "LDD<16>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(87),
            PXA_FUNCTION(0, 1, "nPCE<2>"),
            PXA_FUNCTION(0, 2, "LDD<17>"),
            PXA_FUNCTION(0, 3, "USB_P3_1"),
            PXA_FUNCTION(1, 1, "SSPTXD2"),
            PXA_FUNCTION(1, 2, "LDD<17>"),
            PXA_FUNCTION(1, 3, "SSPSFRM2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(88),
            PXA_FUNCTION(0, 1, "USBHPWR<1>"),
            PXA_FUNCTION(0, 2, "SSPRXD2"),
            PXA_FUNCTION(0, 3, "SSPSFRM2"),
            PXA_FUNCTION(1, 2, "SSPTXD2"),
            PXA_FUNCTION(1, 3, "SSPSFRM2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(89),
            PXA_FUNCTION(0, 1, "SSPRXD3"),
            PXA_FUNCTION(0, 3, "FFRI"),
            PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
            PXA_FUNCTION(1, 2, "USBHPEN<1>"),
            PXA_FUNCTION(1, 3, "SSPTXD2")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(90),
            PXA_FUNCTION(0, 1, "KP_MKIN<5>"),
            PXA_FUNCTION(0, 3, "USB_P3_5"),
            PXA_FUNCTION(1, 1, "CIF_DD<4>"),
            PXA_FUNCTION(1, 2, "nURST")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(91),
            PXA_FUNCTION(0, 1, "KP_MKIN<6>"),
            PXA_FUNCTION(0, 3, "USB_P3_1"),
            PXA_FUNCTION(1, 1, "CIF_DD<5>"),
            PXA_FUNCTION(1, 2, "UCLK")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(92),
            PXA_FUNCTION(0, 1, "MMDAT<0>"),
            PXA_FUNCTION(1, 1, "MMDAT<0>"),
            PXA_FUNCTION(1, 2, "MSBS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(93),
            PXA_FUNCTION(0, 1, "KP_DKIN<0>"),
            PXA_FUNCTION(0, 2, "CIF_DD<6>"),
            PXA_FUNCTION(1, 1, "AC97_SDATA_OUT")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(94),
            PXA_FUNCTION(0, 1, "KP_DKIN<1>"),
            PXA_FUNCTION(0, 2, "CIF_DD<5>"),
            PXA_FUNCTION(1, 1, "AC97_SYNC")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(95),
            PXA_FUNCTION(0, 1, "KP_DKIN<2>"),
            PXA_FUNCTION(0, 2, "CIF_DD<4>"),
            PXA_FUNCTION(0, 3, "KP_MKIN<6>"),
            PXA_FUNCTION(1, 1, "AC97_RESET_n")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(96),
            PXA_FUNCTION(0, 1, "KP_DKIN<3>"),
            PXA_FUNCTION(0, 2, "MBREQ"),
            PXA_FUNCTION(0, 3, "FFRXD"),
            PXA_FUNCTION(1, 2, "DVAL<1>"),
            PXA_FUNCTION(1, 3, "KP_MKOUT<6>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(97),
            PXA_FUNCTION(0, 1, "KP_DKIN<4>"),
            PXA_FUNCTION(0, 2, "DREQ<1>"),
            PXA_FUNCTION(0, 3, "KP_MKIN<3>"),
            PXA_FUNCTION(1, 2, "MBGNT")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(98),
            PXA_FUNCTION(0, 1, "KP_DKIN<5>"),
            PXA_FUNCTION(0, 2, "CIF_DD<0>"),
            PXA_FUNCTION(0, 3, "KP_MKIN<4>"),
            PXA_FUNCTION(1, 1, "AC97_SYSCLK"),
            PXA_FUNCTION(1, 3, "FFRTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(99),
            PXA_FUNCTION(0, 1, "KP_DKIN<6>"),
            PXA_FUNCTION(0, 2, "AC97_SDATA_IN_1"),
            PXA_FUNCTION(0, 3, "KP_MKIN<5>"),
            PXA_FUNCTION(1, 3, "FFTXD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(100),
            PXA_FUNCTION(0, 1, "KP_MKIN<0>"),
            PXA_FUNCTION(0, 2, "DREQ<2>"),
            PXA_FUNCTION(0, 3, "FFCTS")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(101),
            PXA_FUNCTION(0, 1, "KP_MKIN<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(102),
            PXA_FUNCTION(0, 1, "KP_MKIN<2>"),
            PXA_FUNCTION(0, 3, "FFRXD"),
            PXA_FUNCTION(1, 1, "nPCE<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(103),
            PXA_FUNCTION(0, 1, "CIF_DD<3>"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<0>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(104),
            PXA_FUNCTION(0, 1, "CIF_DD<2>"),
            PXA_FUNCTION(1, 1, "PSKTSEL"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(105),
            PXA_FUNCTION(0, 1, "CIF_DD<1>"),
            PXA_FUNCTION(1, 1, "nPCE<2>"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(106),
            PXA_FUNCTION(0, 1, "CIF_DD<9>"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<3>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(107),
            PXA_FUNCTION(0, 1, "CIF_DD<8>"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<4>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(108),
            PXA_FUNCTION(0, 1, "CIF_DD<7>"),
            PXA_FUNCTION(1, 1, "CHOUT<0>"),
            PXA_FUNCTION(1, 2, "KP_MKOUT<5>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(109),
            PXA_FUNCTION(0, 1, "MMDAT<1>"),
            PXA_FUNCTION(0, 2, "MSSDIO"),
            PXA_FUNCTION(1, 1, "MMDAT<1>"),
            PXA_FUNCTION(1, 2, "MSSDIO")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(110),
            PXA_FUNCTION(0, 1, "MMDAT<2>"),
            PXA_FUNCTION(1, 1, "MMDAT<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(111),
            PXA_FUNCTION(0, 1, "MMDAT<3>"),
            PXA_FUNCTION(1, 1, "MMDAT<3>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(112),
            PXA_FUNCTION(0, 1, "MMCMD"),
            PXA_FUNCTION(0, 2, "nMSINS"),
            PXA_FUNCTION(1, 1, "MMCMD")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(113),
            PXA_FUNCTION(0, 3, "USB_P3_3"),
            PXA_FUNCTION(1, 1, "I2S_SYSCLK"),
            PXA_FUNCTION(1, 2, "AC97_RESET_n")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(114),
            PXA_FUNCTION(0, 1, "CIF_DD<1>"),
            PXA_FUNCTION(1, 1, "UEN"),
            PXA_FUNCTION(1, 2, "UVS0")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(115),
            PXA_FUNCTION(0, 1, "DREQ<0>"),
            PXA_FUNCTION(0, 2, "CIF_DD<3>"),
            PXA_FUNCTION(0, 3, "MBREQ"),
            PXA_FUNCTION(1, 1, "UEN"),
            PXA_FUNCTION(1, 2, "nUVS1"),
            PXA_FUNCTION(1, 3, "PWM_OUT<1>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(116),
            PXA_FUNCTION(0, 1, "CIF_DD<2>"),
            PXA_FUNCTION(0, 2, "AC97_SDATA_IN_0"),
            PXA_FUNCTION(0, 3, "UDET"),
            PXA_FUNCTION(1, 1, "DVAL<0>"),
            PXA_FUNCTION(1, 2, "nUVS2"),
            PXA_FUNCTION(1, 3, "MBGNT")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(117),
            PXA_FUNCTION(0, 1, "SCL"),
            PXA_FUNCTION(1, 1, "SCL")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(118),
            PXA_FUNCTION(0, 1, "SDA"),
            PXA_FUNCTION(1, 1, "SDA")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(119),
            PXA_FUNCTION(0, 1, "USBHPWR<2>")),
   PXA_GPIO_PIN(PXA_PINCTRL_PIN(120),
            PXA_FUNCTION(1, 2, "USBHPEN<2>")),
};
 
static int pxa27x_pinctrl_probe(struct platform_device *pdev)
{
   int ret, i;
   void __iomem *base_af[8];
   void __iomem *base_dir[4];
   void __iomem *base_sleep[4];
 
   base_af[0] = devm_platform_ioremap_resource(pdev, 0);
   if (IS_ERR(base_af[0]))
       return PTR_ERR(base_af[0]);
 
   base_dir[0] = devm_platform_ioremap_resource(pdev, 1);
   if (IS_ERR(base_dir[0]))
       return PTR_ERR(base_dir[0]);
 
   base_dir[3] = devm_platform_ioremap_resource(pdev, 2);
   if (IS_ERR(base_dir[3]))
       return PTR_ERR(base_dir[3]);
 
   base_sleep[0] = devm_platform_ioremap_resource(pdev, 3);
   if (IS_ERR(base_sleep[0]))
       return PTR_ERR(base_sleep[0]);
 
   for (i = 0; i < ARRAY_SIZE(base_af); i++)
       base_af[i] = base_af[0] + sizeof(base_af[0]) * i;
   for (i = 0; i < 3; i++)
       base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i;
   for (i = 0; i < ARRAY_SIZE(base_sleep); i++)
       base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i;
 
   ret = pxa2xx_pinctrl_init(pdev, pxa27x_pins, ARRAY_SIZE(pxa27x_pins),
                 base_af, base_dir, base_sleep);
   return ret;
}
 
static const struct of_device_id pxa27x_pinctrl_match[] = {
   { .compatible = "marvell,pxa27x-pinctrl", },
   {}
};
MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match);
 
static struct platform_driver pxa27x_pinctrl_driver = {
   .probe    = pxa27x_pinctrl_probe,
   .driver    = {
       .name        = "pxa27x-pinctrl",
       .of_match_table    = pxa27x_pinctrl_match,
   },
};
module_platform_driver(pxa27x_pinctrl_driver);
 
MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver");
MODULE_LICENSE("GPL v2");