Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / pinctrl / sirf / pinctrl-prima2.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * pinctrl pads, groups, functions for CSR SiRFprimaII
4  *
5  * Copyright (c) 2011 - 2014 Cambridge Silicon Radio Limited, a CSR plc group
6  * company.
7  */
8
9 #include <linux/pinctrl/pinctrl.h>
10 #include <linux/bitops.h>
11
12 #include "pinctrl-sirf.h"
13
14 /*
15  * pad list for the pinmux subsystem
16  * refer to CS-131858-DC-6A.xls
17  */
18 static const struct pinctrl_pin_desc sirfsoc_pads[] = {
19         PINCTRL_PIN(0, "gpio0-0"),
20         PINCTRL_PIN(1, "gpio0-1"),
21         PINCTRL_PIN(2, "gpio0-2"),
22         PINCTRL_PIN(3, "gpio0-3"),
23         PINCTRL_PIN(4, "pwm0"),
24         PINCTRL_PIN(5, "pwm1"),
25         PINCTRL_PIN(6, "pwm2"),
26         PINCTRL_PIN(7, "pwm3"),
27         PINCTRL_PIN(8, "warm_rst_b"),
28         PINCTRL_PIN(9, "odo_0"),
29         PINCTRL_PIN(10, "odo_1"),
30         PINCTRL_PIN(11, "dr_dir"),
31         PINCTRL_PIN(12, "viprom_fa"),
32         PINCTRL_PIN(13, "scl_1"),
33         PINCTRL_PIN(14, "ntrst"),
34         PINCTRL_PIN(15, "sda_1"),
35         PINCTRL_PIN(16, "x_ldd[16]"),
36         PINCTRL_PIN(17, "x_ldd[17]"),
37         PINCTRL_PIN(18, "x_ldd[18]"),
38         PINCTRL_PIN(19, "x_ldd[19]"),
39         PINCTRL_PIN(20, "x_ldd[20]"),
40         PINCTRL_PIN(21, "x_ldd[21]"),
41         PINCTRL_PIN(22, "x_ldd[22]"),
42         PINCTRL_PIN(23, "x_ldd[23], lcdrom_frdy"),
43         PINCTRL_PIN(24, "gps_sgn"),
44         PINCTRL_PIN(25, "gps_mag"),
45         PINCTRL_PIN(26, "gps_clk"),
46         PINCTRL_PIN(27, "sd_cd_b_1"),
47         PINCTRL_PIN(28, "sd_vcc_on_1"),
48         PINCTRL_PIN(29, "sd_wp_b_1"),
49         PINCTRL_PIN(30, "sd_clk_3"),
50         PINCTRL_PIN(31, "sd_cmd_3"),
51
52         PINCTRL_PIN(32, "x_sd_dat_3[0]"),
53         PINCTRL_PIN(33, "x_sd_dat_3[1]"),
54         PINCTRL_PIN(34, "x_sd_dat_3[2]"),
55         PINCTRL_PIN(35, "x_sd_dat_3[3]"),
56         PINCTRL_PIN(36, "x_sd_clk_4"),
57         PINCTRL_PIN(37, "x_sd_cmd_4"),
58         PINCTRL_PIN(38, "x_sd_dat_4[0]"),
59         PINCTRL_PIN(39, "x_sd_dat_4[1]"),
60         PINCTRL_PIN(40, "x_sd_dat_4[2]"),
61         PINCTRL_PIN(41, "x_sd_dat_4[3]"),
62         PINCTRL_PIN(42, "x_cko_1"),
63         PINCTRL_PIN(43, "x_ac97_bit_clk"),
64         PINCTRL_PIN(44, "x_ac97_dout"),
65         PINCTRL_PIN(45, "x_ac97_din"),
66         PINCTRL_PIN(46, "x_ac97_sync"),
67         PINCTRL_PIN(47, "x_txd_1"),
68         PINCTRL_PIN(48, "x_txd_2"),
69         PINCTRL_PIN(49, "x_rxd_1"),
70         PINCTRL_PIN(50, "x_rxd_2"),
71         PINCTRL_PIN(51, "x_usclk_0"),
72         PINCTRL_PIN(52, "x_utxd_0"),
73         PINCTRL_PIN(53, "x_urxd_0"),
74         PINCTRL_PIN(54, "x_utfs_0"),
75         PINCTRL_PIN(55, "x_urfs_0"),
76         PINCTRL_PIN(56, "x_usclk_1"),
77         PINCTRL_PIN(57, "x_utxd_1"),
78         PINCTRL_PIN(58, "x_urxd_1"),
79         PINCTRL_PIN(59, "x_utfs_1"),
80         PINCTRL_PIN(60, "x_urfs_1"),
81         PINCTRL_PIN(61, "x_usclk_2"),
82         PINCTRL_PIN(62, "x_utxd_2"),
83         PINCTRL_PIN(63, "x_urxd_2"),
84
85         PINCTRL_PIN(64, "x_utfs_2"),
86         PINCTRL_PIN(65, "x_urfs_2"),
87         PINCTRL_PIN(66, "x_df_we_b"),
88         PINCTRL_PIN(67, "x_df_re_b"),
89         PINCTRL_PIN(68, "x_txd_0"),
90         PINCTRL_PIN(69, "x_rxd_0"),
91         PINCTRL_PIN(78, "x_cko_0"),
92         PINCTRL_PIN(79, "x_vip_pxd[7]"),
93         PINCTRL_PIN(80, "x_vip_pxd[6]"),
94         PINCTRL_PIN(81, "x_vip_pxd[5]"),
95         PINCTRL_PIN(82, "x_vip_pxd[4]"),
96         PINCTRL_PIN(83, "x_vip_pxd[3]"),
97         PINCTRL_PIN(84, "x_vip_pxd[2]"),
98         PINCTRL_PIN(85, "x_vip_pxd[1]"),
99         PINCTRL_PIN(86, "x_vip_pxd[0]"),
100         PINCTRL_PIN(87, "x_vip_vsync"),
101         PINCTRL_PIN(88, "x_vip_hsync"),
102         PINCTRL_PIN(89, "x_vip_pxclk"),
103         PINCTRL_PIN(90, "x_sda_0"),
104         PINCTRL_PIN(91, "x_scl_0"),
105         PINCTRL_PIN(92, "x_df_ry_by"),
106         PINCTRL_PIN(93, "x_df_cs_b[1]"),
107         PINCTRL_PIN(94, "x_df_cs_b[0]"),
108         PINCTRL_PIN(95, "x_l_pclk"),
109
110         PINCTRL_PIN(96, "x_l_lck"),
111         PINCTRL_PIN(97, "x_l_fck"),
112         PINCTRL_PIN(98, "x_l_de"),
113         PINCTRL_PIN(99, "x_ldd[0]"),
114         PINCTRL_PIN(100, "x_ldd[1]"),
115         PINCTRL_PIN(101, "x_ldd[2]"),
116         PINCTRL_PIN(102, "x_ldd[3]"),
117         PINCTRL_PIN(103, "x_ldd[4]"),
118         PINCTRL_PIN(104, "x_ldd[5]"),
119         PINCTRL_PIN(105, "x_ldd[6]"),
120         PINCTRL_PIN(106, "x_ldd[7]"),
121         PINCTRL_PIN(107, "x_ldd[8]"),
122         PINCTRL_PIN(108, "x_ldd[9]"),
123         PINCTRL_PIN(109, "x_ldd[10]"),
124         PINCTRL_PIN(110, "x_ldd[11]"),
125         PINCTRL_PIN(111, "x_ldd[12]"),
126         PINCTRL_PIN(112, "x_ldd[13]"),
127         PINCTRL_PIN(113, "x_ldd[14]"),
128         PINCTRL_PIN(114, "x_ldd[15]"),
129
130         PINCTRL_PIN(115, "x_usb1_dp"),
131         PINCTRL_PIN(116, "x_usb1_dn"),
132 };
133
134 static const struct sirfsoc_muxmask lcd_16bits_sirfsoc_muxmask[] = {
135         {
136                 .group = 3,
137                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) |
138                         BIT(6) | BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) |
139                         BIT(12) | BIT(13) | BIT(14) | BIT(15) | BIT(16) |
140                         BIT(17) | BIT(18),
141         }, {
142                 .group = 2,
143                 .mask = BIT(31),
144         },
145 };
146
147 static const struct sirfsoc_padmux lcd_16bits_padmux = {
148         .muxmask_counts = ARRAY_SIZE(lcd_16bits_sirfsoc_muxmask),
149         .muxmask = lcd_16bits_sirfsoc_muxmask,
150         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
151         .funcmask = BIT(4),
152         .funcval = 0,
153 };
154
155 static const unsigned lcd_16bits_pins[] = { 95, 96, 97, 98, 99, 100, 101, 102,
156         103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114 };
157
158 static const struct sirfsoc_muxmask lcd_18bits_muxmask[] = {
159         {
160                 .group = 3,
161                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) |
162                         BIT(6) | BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) |
163                         BIT(12) | BIT(13) | BIT(14) | BIT(15) | BIT(16) |
164                         BIT(17) | BIT(18),
165         }, {
166                 .group = 2,
167                 .mask = BIT(31),
168         }, {
169                 .group = 0,
170                 .mask = BIT(16) | BIT(17),
171         },
172 };
173
174 static const struct sirfsoc_padmux lcd_18bits_padmux = {
175         .muxmask_counts = ARRAY_SIZE(lcd_18bits_muxmask),
176         .muxmask = lcd_18bits_muxmask,
177         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
178         .funcmask = BIT(4),
179         .funcval = 0,
180 };
181
182 static const unsigned lcd_18bits_pins[] = { 16, 17, 95, 96, 97, 98, 99, 100,
183         101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114};
184
185 static const struct sirfsoc_muxmask lcd_24bits_muxmask[] = {
186         {
187                 .group = 3,
188                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) |
189                         BIT(6) | BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) |
190                         BIT(12) | BIT(13) | BIT(14) | BIT(15) | BIT(16) |
191                         BIT(17) | BIT(18),
192         }, {
193                 .group = 2,
194                 .mask = BIT(31),
195         }, {
196                 .group = 0,
197                 .mask = BIT(16) | BIT(17) | BIT(18) | BIT(19) | BIT(20) |
198                         BIT(21) | BIT(22) | BIT(23),
199         },
200 };
201
202 static const struct sirfsoc_padmux lcd_24bits_padmux = {
203         .muxmask_counts = ARRAY_SIZE(lcd_24bits_muxmask),
204         .muxmask = lcd_24bits_muxmask,
205         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
206         .funcmask = BIT(4),
207         .funcval = 0,
208 };
209
210 static const unsigned lcd_24bits_pins[] = { 16, 17, 18, 19, 20, 21, 22, 23,
211         95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
212         110, 111, 112, 113, 114 };
213
214 static const struct sirfsoc_muxmask lcdrom_muxmask[] = {
215         {
216                 .group = 3,
217                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) |
218                         BIT(6) | BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) |
219                         BIT(12) | BIT(13) | BIT(14) | BIT(15) | BIT(16) |
220                         BIT(17) | BIT(18),
221         }, {
222                 .group = 2,
223                 .mask = BIT(31),
224         }, {
225                 .group = 0,
226                 .mask = BIT(23),
227         },
228 };
229
230 static const struct sirfsoc_padmux lcdrom_padmux = {
231         .muxmask_counts = ARRAY_SIZE(lcdrom_muxmask),
232         .muxmask = lcdrom_muxmask,
233         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
234         .funcmask = BIT(4),
235         .funcval = BIT(4),
236 };
237
238 static const unsigned lcdrom_pins[] = { 23, 95, 96, 97, 98, 99, 100, 101, 102,
239         103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114 };
240
241 static const struct sirfsoc_muxmask uart0_muxmask[] = {
242         {
243                 .group = 2,
244                 .mask = BIT(4) | BIT(5),
245         }, {
246                 .group = 1,
247                 .mask = BIT(23) | BIT(28),
248         },
249 };
250
251 static const struct sirfsoc_padmux uart0_padmux = {
252         .muxmask_counts = ARRAY_SIZE(uart0_muxmask),
253         .muxmask = uart0_muxmask,
254         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
255         .funcmask = BIT(9),
256         .funcval = BIT(9),
257 };
258
259 static const unsigned uart0_pins[] = { 55, 60, 68, 69 };
260
261 static const struct sirfsoc_muxmask uart0_nostreamctrl_muxmask[] = {
262         {
263                 .group = 2,
264                 .mask = BIT(4) | BIT(5),
265         },
266 };
267
268 static const struct sirfsoc_padmux uart0_nostreamctrl_padmux = {
269         .muxmask_counts = ARRAY_SIZE(uart0_nostreamctrl_muxmask),
270         .muxmask = uart0_nostreamctrl_muxmask,
271 };
272
273 static const unsigned uart0_nostreamctrl_pins[] = { 68, 69 };
274
275 static const struct sirfsoc_muxmask uart1_muxmask[] = {
276         {
277                 .group = 1,
278                 .mask = BIT(15) | BIT(17),
279         },
280 };
281
282 static const struct sirfsoc_padmux uart1_padmux = {
283         .muxmask_counts = ARRAY_SIZE(uart1_muxmask),
284         .muxmask = uart1_muxmask,
285 };
286
287 static const unsigned uart1_pins[] = { 47, 49 };
288
289 static const struct sirfsoc_muxmask uart2_muxmask[] = {
290         {
291                 .group = 1,
292                 .mask = BIT(16) | BIT(18) | BIT(24) | BIT(27),
293         },
294 };
295
296 static const struct sirfsoc_padmux uart2_padmux = {
297         .muxmask_counts = ARRAY_SIZE(uart2_muxmask),
298         .muxmask = uart2_muxmask,
299         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
300         .funcmask = BIT(10),
301         .funcval = BIT(10),
302 };
303
304 static const unsigned uart2_pins[] = { 48, 50, 56, 59 };
305
306 static const struct sirfsoc_muxmask uart2_nostreamctrl_muxmask[] = {
307         {
308                 .group = 1,
309                 .mask = BIT(16) | BIT(18),
310         },
311 };
312
313 static const struct sirfsoc_padmux uart2_nostreamctrl_padmux = {
314         .muxmask_counts = ARRAY_SIZE(uart2_nostreamctrl_muxmask),
315         .muxmask = uart2_nostreamctrl_muxmask,
316 };
317
318 static const unsigned uart2_nostreamctrl_pins[] = { 48, 50 };
319
320 static const struct sirfsoc_muxmask sdmmc3_muxmask[] = {
321         {
322                 .group = 0,
323                 .mask = BIT(30) | BIT(31),
324         }, {
325                 .group = 1,
326                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3),
327         },
328 };
329
330 static const struct sirfsoc_padmux sdmmc3_padmux = {
331         .muxmask_counts = ARRAY_SIZE(sdmmc3_muxmask),
332         .muxmask = sdmmc3_muxmask,
333         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
334         .funcmask = BIT(7),
335         .funcval = 0,
336 };
337
338 static const unsigned sdmmc3_pins[] = { 30, 31, 32, 33, 34, 35 };
339
340 static const struct sirfsoc_muxmask spi0_muxmask[] = {
341         {
342                 .group = 1,
343                 .mask = BIT(0) | BIT(1) | BIT(2) | BIT(3),
344         },
345 };
346
347 static const struct sirfsoc_padmux spi0_padmux = {
348         .muxmask_counts = ARRAY_SIZE(spi0_muxmask),
349         .muxmask = spi0_muxmask,
350         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
351         .funcmask = BIT(7),
352         .funcval = BIT(7),
353 };
354
355 static const unsigned spi0_pins[] = { 32, 33, 34, 35 };
356
357 static const struct sirfsoc_muxmask sdmmc4_muxmask[] = {
358         {
359                 .group = 1,
360                 .mask = BIT(4) | BIT(5) | BIT(6) | BIT(7) | BIT(8) | BIT(9),
361         },
362 };
363
364 static const struct sirfsoc_padmux sdmmc4_padmux = {
365         .muxmask_counts = ARRAY_SIZE(sdmmc4_muxmask),
366         .muxmask = sdmmc4_muxmask,
367 };
368
369 static const unsigned sdmmc4_pins[] = { 36, 37, 38, 39, 40, 41 };
370
371 static const struct sirfsoc_muxmask cko1_muxmask[] = {
372         {
373                 .group = 1,
374                 .mask = BIT(10),
375         },
376 };
377
378 static const struct sirfsoc_padmux cko1_padmux = {
379         .muxmask_counts = ARRAY_SIZE(cko1_muxmask),
380         .muxmask = cko1_muxmask,
381         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
382         .funcmask = BIT(3),
383         .funcval = 0,
384 };
385
386 static const unsigned cko1_pins[] = { 42 };
387
388 static const struct sirfsoc_muxmask i2s_mclk_muxmask[] = {
389         {
390                 .group = 1,
391                 .mask = BIT(10),
392         },
393 };
394
395 static const struct sirfsoc_padmux i2s_mclk_padmux = {
396         .muxmask_counts = ARRAY_SIZE(i2s_mclk_muxmask),
397         .muxmask = i2s_mclk_muxmask,
398         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
399         .funcmask = BIT(3),
400         .funcval = BIT(3),
401 };
402
403 static const unsigned i2s_mclk_pins[] = { 42 };
404
405 static const struct sirfsoc_muxmask i2s_ext_clk_input_muxmask[] = {
406         {
407                 .group = 1,
408                 .mask = BIT(19),
409         },
410 };
411
412 static const struct sirfsoc_padmux i2s_ext_clk_input_padmux = {
413         .muxmask_counts = ARRAY_SIZE(i2s_ext_clk_input_muxmask),
414         .muxmask = i2s_ext_clk_input_muxmask,
415         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
416         .funcmask = BIT(2),
417         .funcval = BIT(2),
418 };
419
420 static const unsigned i2s_ext_clk_input_pins[] = { 51 };
421
422 static const struct sirfsoc_muxmask i2s_muxmask[] = {
423         {
424                 .group = 1,
425                 .mask = BIT(11) | BIT(12) | BIT(13) | BIT(14),
426         },
427 };
428
429 static const struct sirfsoc_padmux i2s_padmux = {
430         .muxmask_counts = ARRAY_SIZE(i2s_muxmask),
431         .muxmask = i2s_muxmask,
432         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
433 };
434
435 static const unsigned i2s_pins[] = { 43, 44, 45, 46 };
436
437 static const struct sirfsoc_muxmask i2s_no_din_muxmask[] = {
438         {
439                 .group = 1,
440                 .mask = BIT(11) | BIT(12) | BIT(14),
441         },
442 };
443
444 static const struct sirfsoc_padmux i2s_no_din_padmux = {
445         .muxmask_counts = ARRAY_SIZE(i2s_no_din_muxmask),
446         .muxmask = i2s_no_din_muxmask,
447         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
448 };
449
450 static const unsigned i2s_no_din_pins[] = { 43, 44, 46 };
451
452 static const struct sirfsoc_muxmask i2s_6chn_muxmask[] = {
453         {
454                 .group = 1,
455                 .mask = BIT(11) | BIT(12) | BIT(13) | BIT(14)
456                         | BIT(23) | BIT(28),
457         },
458 };
459
460 static const struct sirfsoc_padmux i2s_6chn_padmux = {
461         .muxmask_counts = ARRAY_SIZE(i2s_6chn_muxmask),
462         .muxmask = i2s_6chn_muxmask,
463         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
464         .funcmask = BIT(1) | BIT(9),
465         .funcval = BIT(1) | BIT(9),
466 };
467
468 static const unsigned i2s_6chn_pins[] = { 43, 44, 45, 46, 55, 60  };
469
470 static const struct sirfsoc_muxmask ac97_muxmask[] = {
471         {
472                 .group = 1,
473                 .mask = BIT(11) | BIT(12) | BIT(13) | BIT(14),
474         },
475 };
476
477 static const struct sirfsoc_padmux ac97_padmux = {
478         .muxmask_counts = ARRAY_SIZE(ac97_muxmask),
479         .muxmask = ac97_muxmask,
480         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
481         .funcmask = BIT(8),
482         .funcval = 0,
483 };
484
485 static const unsigned ac97_pins[] = { 43, 44, 45, 46 };
486
487 static const struct sirfsoc_muxmask spi1_muxmask[] = {
488         {
489                 .group = 1,
490                 .mask = BIT(11) | BIT(12) | BIT(13) | BIT(14),
491         },
492 };
493
494 static const struct sirfsoc_padmux spi1_padmux = {
495         .muxmask_counts = ARRAY_SIZE(spi1_muxmask),
496         .muxmask = spi1_muxmask,
497         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
498         .funcmask = BIT(8),
499         .funcval = BIT(8),
500 };
501
502 static const unsigned spi1_pins[] = { 43, 44, 45, 46 };
503
504 static const struct sirfsoc_muxmask sdmmc1_muxmask[] = {
505         {
506                 .group = 0,
507                 .mask = BIT(27) | BIT(28) | BIT(29),
508         },
509 };
510
511 static const struct sirfsoc_padmux sdmmc1_padmux = {
512         .muxmask_counts = ARRAY_SIZE(sdmmc1_muxmask),
513         .muxmask = sdmmc1_muxmask,
514 };
515
516 static const unsigned sdmmc1_pins[] = { 27, 28, 29 };
517
518 static const struct sirfsoc_muxmask gps_muxmask[] = {
519         {
520                 .group = 0,
521                 .mask = BIT(24) | BIT(25) | BIT(26),
522         },
523 };
524
525 static const struct sirfsoc_padmux gps_padmux = {
526         .muxmask_counts = ARRAY_SIZE(gps_muxmask),
527         .muxmask = gps_muxmask,
528         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
529         .funcmask = BIT(12) | BIT(13) | BIT(14),
530         .funcval = BIT(12),
531 };
532
533 static const unsigned gps_pins[] = { 24, 25, 26 };
534
535 static const struct sirfsoc_muxmask sdmmc5_muxmask[] = {
536         {
537                 .group = 0,
538                 .mask = BIT(24) | BIT(25) | BIT(26),
539         },
540 };
541
542 static const struct sirfsoc_padmux sdmmc5_padmux = {
543         .muxmask_counts = ARRAY_SIZE(sdmmc5_muxmask),
544         .muxmask = sdmmc5_muxmask,
545         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
546         .funcmask = BIT(13) | BIT(14),
547         .funcval = BIT(13) | BIT(14),
548 };
549
550 static const unsigned sdmmc5_pins[] = { 24, 25, 26 };
551
552 static const struct sirfsoc_muxmask usp0_muxmask[] = {
553         {
554                 .group = 1,
555                 .mask = BIT(19) | BIT(20) | BIT(21) | BIT(22) | BIT(23),
556         },
557 };
558
559 static const struct sirfsoc_padmux usp0_padmux = {
560         .muxmask_counts = ARRAY_SIZE(usp0_muxmask),
561         .muxmask = usp0_muxmask,
562         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
563         .funcmask = BIT(1) | BIT(2) | BIT(6) | BIT(9),
564         .funcval = 0,
565 };
566
567 static const unsigned usp0_pins[] = { 51, 52, 53, 54, 55 };
568
569 static const struct sirfsoc_muxmask usp0_only_utfs_muxmask[] = {
570         {
571                 .group = 1,
572                 .mask = BIT(19) | BIT(20) | BIT(21) | BIT(22),
573         },
574 };
575
576 static const struct sirfsoc_padmux usp0_only_utfs_padmux = {
577         .muxmask_counts = ARRAY_SIZE(usp0_only_utfs_muxmask),
578         .muxmask = usp0_only_utfs_muxmask,
579         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
580         .funcmask = BIT(1) | BIT(2) | BIT(6),
581         .funcval = 0,
582 };
583
584 static const unsigned usp0_only_utfs_pins[] = { 51, 52, 53, 54 };
585
586 static const struct sirfsoc_muxmask usp0_only_urfs_muxmask[] = {
587         {
588                 .group = 1,
589                 .mask = BIT(19) | BIT(20) | BIT(21) | BIT(23),
590         },
591 };
592
593 static const struct sirfsoc_padmux usp0_only_urfs_padmux = {
594         .muxmask_counts = ARRAY_SIZE(usp0_only_urfs_muxmask),
595         .muxmask = usp0_only_urfs_muxmask,
596         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
597         .funcmask = BIT(1) | BIT(2) | BIT(9),
598         .funcval = 0,
599 };
600
601 static const unsigned usp0_only_urfs_pins[] = { 51, 52, 53, 55 };
602
603 static const struct sirfsoc_muxmask usp0_uart_nostreamctrl_muxmask[] = {
604         {
605                 .group = 1,
606                 .mask = BIT(20) | BIT(21),
607         },
608 };
609
610 static const struct sirfsoc_padmux usp0_uart_nostreamctrl_padmux = {
611         .muxmask_counts = ARRAY_SIZE(usp0_uart_nostreamctrl_muxmask),
612         .muxmask = usp0_uart_nostreamctrl_muxmask,
613 };
614
615 static const unsigned usp0_uart_nostreamctrl_pins[] = { 52, 53 };
616
617 static const struct sirfsoc_muxmask usp1_muxmask[] = {
618         {
619                 .group = 1,
620                 .mask = BIT(24) | BIT(25) | BIT(26) | BIT(27) | BIT(28),
621         },
622 };
623
624 static const struct sirfsoc_padmux usp1_padmux = {
625         .muxmask_counts = ARRAY_SIZE(usp1_muxmask),
626         .muxmask = usp1_muxmask,
627         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
628         .funcmask = BIT(1) | BIT(9) | BIT(10) | BIT(11),
629         .funcval = 0,
630 };
631
632 static const unsigned usp1_pins[] = { 56, 57, 58, 59, 60 };
633
634 static const struct sirfsoc_muxmask usp1_uart_nostreamctrl_muxmask[] = {
635         {
636                 .group = 1,
637                 .mask = BIT(25) | BIT(26),
638         },
639 };
640
641 static const struct sirfsoc_padmux usp1_uart_nostreamctrl_padmux = {
642         .muxmask_counts = ARRAY_SIZE(usp1_uart_nostreamctrl_muxmask),
643         .muxmask = usp1_uart_nostreamctrl_muxmask,
644 };
645
646 static const unsigned usp1_uart_nostreamctrl_pins[] = { 57, 58 };
647
648 static const struct sirfsoc_muxmask usp2_muxmask[] = {
649         {
650                 .group = 1,
651                 .mask = BIT(29) | BIT(30) | BIT(31),
652         }, {
653                 .group = 2,
654                 .mask = BIT(0) | BIT(1),
655         },
656 };
657
658 static const struct sirfsoc_padmux usp2_padmux = {
659         .muxmask_counts = ARRAY_SIZE(usp2_muxmask),
660         .muxmask = usp2_muxmask,
661         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
662         .funcmask = BIT(13) | BIT(14),
663         .funcval = 0,
664 };
665
666 static const unsigned usp2_pins[] = { 61, 62, 63, 64, 65 };
667
668 static const struct sirfsoc_muxmask usp2_uart_nostreamctrl_muxmask[] = {
669         {
670                 .group = 1,
671                 .mask = BIT(30) | BIT(31),
672         },
673 };
674
675 static const struct sirfsoc_padmux usp2_uart_nostreamctrl_padmux = {
676         .muxmask_counts = ARRAY_SIZE(usp2_uart_nostreamctrl_muxmask),
677         .muxmask = usp2_uart_nostreamctrl_muxmask,
678 };
679
680 static const unsigned usp2_uart_nostreamctrl_pins[] = { 62, 63 };
681
682 static const struct sirfsoc_muxmask nand_muxmask[] = {
683         {
684                 .group = 2,
685                 .mask = BIT(2) | BIT(3) | BIT(28) | BIT(29) | BIT(30),
686         },
687 };
688
689 static const struct sirfsoc_padmux nand_padmux = {
690         .muxmask_counts = ARRAY_SIZE(nand_muxmask),
691         .muxmask = nand_muxmask,
692         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
693         .funcmask = BIT(5),
694         .funcval = 0,
695 };
696
697 static const unsigned nand_pins[] = { 64, 65, 92, 93, 94 };
698
699 static const struct sirfsoc_padmux sdmmc0_padmux = {
700         .muxmask_counts = 0,
701         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
702         .funcmask = BIT(5),
703         .funcval = 0,
704 };
705
706 static const unsigned sdmmc0_pins[] = { };
707
708 static const struct sirfsoc_muxmask sdmmc2_muxmask[] = {
709         {
710                 .group = 2,
711                 .mask = BIT(2) | BIT(3),
712         },
713 };
714
715 static const struct sirfsoc_padmux sdmmc2_padmux = {
716         .muxmask_counts = ARRAY_SIZE(sdmmc2_muxmask),
717         .muxmask = sdmmc2_muxmask,
718         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
719         .funcmask = BIT(5),
720         .funcval = BIT(5),
721 };
722
723 static const unsigned sdmmc2_pins[] = { 66, 67 };
724
725 static const struct sirfsoc_muxmask cko0_muxmask[] = {
726         {
727                 .group = 2,
728                 .mask = BIT(14),
729         },
730 };
731
732 static const struct sirfsoc_padmux cko0_padmux = {
733         .muxmask_counts = ARRAY_SIZE(cko0_muxmask),
734         .muxmask = cko0_muxmask,
735 };
736
737 static const unsigned cko0_pins[] = { 78 };
738
739 static const struct sirfsoc_muxmask vip_muxmask[] = {
740         {
741                 .group = 2,
742                 .mask = BIT(15) | BIT(16) | BIT(17) | BIT(18) | BIT(19)
743                         | BIT(20) | BIT(21) | BIT(22) | BIT(23) | BIT(24) |
744                         BIT(25),
745         },
746 };
747
748 static const struct sirfsoc_padmux vip_padmux = {
749         .muxmask_counts = ARRAY_SIZE(vip_muxmask),
750         .muxmask = vip_muxmask,
751         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
752         .funcmask = BIT(0),
753         .funcval = 0,
754 };
755
756 static const unsigned vip_pins[] = { 79, 80, 81, 82, 83, 84, 85, 86, 87,
757         88, 89 };
758
759 static const struct sirfsoc_muxmask i2c0_muxmask[] = {
760         {
761                 .group = 2,
762                 .mask = BIT(26) | BIT(27),
763         },
764 };
765
766 static const struct sirfsoc_padmux i2c0_padmux = {
767         .muxmask_counts = ARRAY_SIZE(i2c0_muxmask),
768         .muxmask = i2c0_muxmask,
769 };
770
771 static const unsigned i2c0_pins[] = { 90, 91 };
772
773 static const struct sirfsoc_muxmask i2c1_muxmask[] = {
774         {
775                 .group = 0,
776                 .mask = BIT(13) | BIT(15),
777         },
778 };
779
780 static const struct sirfsoc_padmux i2c1_padmux = {
781         .muxmask_counts = ARRAY_SIZE(i2c1_muxmask),
782         .muxmask = i2c1_muxmask,
783 };
784
785 static const unsigned i2c1_pins[] = { 13, 15 };
786
787 static const struct sirfsoc_muxmask viprom_muxmask[] = {
788         {
789                 .group = 2,
790                 .mask = BIT(15) | BIT(16) | BIT(17) | BIT(18) | BIT(19)
791                         | BIT(20) | BIT(21) | BIT(22) | BIT(23) | BIT(24) |
792                         BIT(25),
793         }, {
794                 .group = 0,
795                 .mask = BIT(12),
796         },
797 };
798
799 static const struct sirfsoc_padmux viprom_padmux = {
800         .muxmask_counts = ARRAY_SIZE(viprom_muxmask),
801         .muxmask = viprom_muxmask,
802         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
803         .funcmask = BIT(0),
804         .funcval = BIT(0),
805 };
806
807 static const unsigned viprom_pins[] = { 12, 79, 80, 81, 82, 83, 84, 85, 86,
808         87, 88, 89 };
809
810 static const struct sirfsoc_muxmask pwm0_muxmask[] = {
811         {
812                 .group = 0,
813                 .mask = BIT(4),
814         },
815 };
816
817 static const struct sirfsoc_padmux pwm0_padmux = {
818         .muxmask_counts = ARRAY_SIZE(pwm0_muxmask),
819         .muxmask = pwm0_muxmask,
820         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
821         .funcmask = BIT(12),
822         .funcval = 0,
823 };
824
825 static const unsigned pwm0_pins[] = { 4 };
826
827 static const struct sirfsoc_muxmask pwm1_muxmask[] = {
828         {
829                 .group = 0,
830                 .mask = BIT(5),
831         },
832 };
833
834 static const struct sirfsoc_padmux pwm1_padmux = {
835         .muxmask_counts = ARRAY_SIZE(pwm1_muxmask),
836         .muxmask = pwm1_muxmask,
837 };
838
839 static const unsigned pwm1_pins[] = { 5 };
840
841 static const struct sirfsoc_muxmask pwm2_muxmask[] = {
842         {
843                 .group = 0,
844                 .mask = BIT(6),
845         },
846 };
847
848 static const struct sirfsoc_padmux pwm2_padmux = {
849         .muxmask_counts = ARRAY_SIZE(pwm2_muxmask),
850         .muxmask = pwm2_muxmask,
851 };
852
853 static const unsigned pwm2_pins[] = { 6 };
854
855 static const struct sirfsoc_muxmask pwm3_muxmask[] = {
856         {
857                 .group = 0,
858                 .mask = BIT(7),
859         },
860 };
861
862 static const struct sirfsoc_padmux pwm3_padmux = {
863         .muxmask_counts = ARRAY_SIZE(pwm3_muxmask),
864         .muxmask = pwm3_muxmask,
865 };
866
867 static const unsigned pwm3_pins[] = { 7 };
868
869 static const struct sirfsoc_muxmask warm_rst_muxmask[] = {
870         {
871                 .group = 0,
872                 .mask = BIT(8),
873         },
874 };
875
876 static const struct sirfsoc_padmux warm_rst_padmux = {
877         .muxmask_counts = ARRAY_SIZE(warm_rst_muxmask),
878         .muxmask = warm_rst_muxmask,
879 };
880
881 static const unsigned warm_rst_pins[] = { 8 };
882
883 static const struct sirfsoc_muxmask usb0_utmi_drvbus_muxmask[] = {
884         {
885                 .group = 1,
886                 .mask = BIT(22),
887         },
888 };
889 static const struct sirfsoc_padmux usb0_utmi_drvbus_padmux = {
890         .muxmask_counts = ARRAY_SIZE(usb0_utmi_drvbus_muxmask),
891         .muxmask = usb0_utmi_drvbus_muxmask,
892         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
893         .funcmask = BIT(6),
894         .funcval = BIT(6), /* refer to PAD_UTMI_DRVVBUS0_ENABLE */
895 };
896
897 static const unsigned usb0_utmi_drvbus_pins[] = { 54 };
898
899 static const struct sirfsoc_muxmask usb1_utmi_drvbus_muxmask[] = {
900         {
901                 .group = 1,
902                 .mask = BIT(27),
903         },
904 };
905
906 static const struct sirfsoc_padmux usb1_utmi_drvbus_padmux = {
907         .muxmask_counts = ARRAY_SIZE(usb1_utmi_drvbus_muxmask),
908         .muxmask = usb1_utmi_drvbus_muxmask,
909         .ctrlreg = SIRFSOC_RSC_PIN_MUX,
910         .funcmask = BIT(11),
911         .funcval = BIT(11), /* refer to PAD_UTMI_DRVVBUS1_ENABLE */
912 };
913
914 static const unsigned usb1_utmi_drvbus_pins[] = { 59 };
915
916 static const struct sirfsoc_padmux usb1_dp_dn_padmux = {
917         .muxmask_counts = 0,
918         .ctrlreg = SIRFSOC_RSC_USB_UART_SHARE,
919         .funcmask = BIT(2),
920         .funcval = BIT(2),
921 };
922
923 static const unsigned usb1_dp_dn_pins[] = { 115, 116 };
924
925 static const struct sirfsoc_padmux uart1_route_io_usb1_padmux = {
926         .muxmask_counts = 0,
927         .ctrlreg = SIRFSOC_RSC_USB_UART_SHARE,
928         .funcmask = BIT(2),
929         .funcval = 0,
930 };
931
932 static const unsigned uart1_route_io_usb1_pins[] = { 115, 116 };
933
934 static const struct sirfsoc_muxmask pulse_count_muxmask[] = {
935         {
936                 .group = 0,
937                 .mask = BIT(9) | BIT(10) | BIT(11),
938         },
939 };
940
941 static const struct sirfsoc_padmux pulse_count_padmux = {
942         .muxmask_counts = ARRAY_SIZE(pulse_count_muxmask),
943         .muxmask = pulse_count_muxmask,
944 };
945
946 static const unsigned pulse_count_pins[] = { 9, 10, 11 };
947
948 static const struct sirfsoc_pin_group sirfsoc_pin_groups[] = {
949         SIRFSOC_PIN_GROUP("lcd_16bitsgrp", lcd_16bits_pins),
950         SIRFSOC_PIN_GROUP("lcd_18bitsgrp", lcd_18bits_pins),
951         SIRFSOC_PIN_GROUP("lcd_24bitsgrp", lcd_24bits_pins),
952         SIRFSOC_PIN_GROUP("lcdrom_grp", lcdrom_pins),
953         SIRFSOC_PIN_GROUP("uart0grp", uart0_pins),
954         SIRFSOC_PIN_GROUP("uart0_nostreamctrlgrp", uart0_nostreamctrl_pins),
955         SIRFSOC_PIN_GROUP("uart1grp", uart1_pins),
956         SIRFSOC_PIN_GROUP("uart2grp", uart2_pins),
957         SIRFSOC_PIN_GROUP("uart2_nostreamctrlgrp", uart2_nostreamctrl_pins),
958         SIRFSOC_PIN_GROUP("usp0grp", usp0_pins),
959         SIRFSOC_PIN_GROUP("usp0_uart_nostreamctrl_grp",
960                                         usp0_uart_nostreamctrl_pins),
961         SIRFSOC_PIN_GROUP("usp0_only_utfs_grp", usp0_only_utfs_pins),
962         SIRFSOC_PIN_GROUP("usp0_only_urfs_grp", usp0_only_urfs_pins),
963         SIRFSOC_PIN_GROUP("usp1grp", usp1_pins),
964         SIRFSOC_PIN_GROUP("usp1_uart_nostreamctrl_grp",
965                                         usp1_uart_nostreamctrl_pins),
966         SIRFSOC_PIN_GROUP("usp2grp", usp2_pins),
967         SIRFSOC_PIN_GROUP("usp2_uart_nostreamctrl_grp",
968                                         usp2_uart_nostreamctrl_pins),
969         SIRFSOC_PIN_GROUP("i2c0grp", i2c0_pins),
970         SIRFSOC_PIN_GROUP("i2c1grp", i2c1_pins),
971         SIRFSOC_PIN_GROUP("pwm0grp", pwm0_pins),
972         SIRFSOC_PIN_GROUP("pwm1grp", pwm1_pins),
973         SIRFSOC_PIN_GROUP("pwm2grp", pwm2_pins),
974         SIRFSOC_PIN_GROUP("pwm3grp", pwm3_pins),
975         SIRFSOC_PIN_GROUP("vipgrp", vip_pins),
976         SIRFSOC_PIN_GROUP("vipromgrp", viprom_pins),
977         SIRFSOC_PIN_GROUP("warm_rstgrp", warm_rst_pins),
978         SIRFSOC_PIN_GROUP("cko0grp", cko0_pins),
979         SIRFSOC_PIN_GROUP("cko1grp", cko1_pins),
980         SIRFSOC_PIN_GROUP("sdmmc0grp", sdmmc0_pins),
981         SIRFSOC_PIN_GROUP("sdmmc1grp", sdmmc1_pins),
982         SIRFSOC_PIN_GROUP("sdmmc2grp", sdmmc2_pins),
983         SIRFSOC_PIN_GROUP("sdmmc3grp", sdmmc3_pins),
984         SIRFSOC_PIN_GROUP("sdmmc4grp", sdmmc4_pins),
985         SIRFSOC_PIN_GROUP("sdmmc5grp", sdmmc5_pins),
986         SIRFSOC_PIN_GROUP("usb0_utmi_drvbusgrp", usb0_utmi_drvbus_pins),
987         SIRFSOC_PIN_GROUP("usb1_utmi_drvbusgrp", usb1_utmi_drvbus_pins),
988         SIRFSOC_PIN_GROUP("usb1_dp_dngrp", usb1_dp_dn_pins),
989         SIRFSOC_PIN_GROUP("uart1_route_io_usb1grp", uart1_route_io_usb1_pins),
990         SIRFSOC_PIN_GROUP("pulse_countgrp", pulse_count_pins),
991         SIRFSOC_PIN_GROUP("i2smclkgrp", i2s_mclk_pins),
992         SIRFSOC_PIN_GROUP("i2s_ext_clk_inputgrp", i2s_ext_clk_input_pins),
993         SIRFSOC_PIN_GROUP("i2sgrp", i2s_pins),
994         SIRFSOC_PIN_GROUP("i2s_no_dingrp", i2s_no_din_pins),
995         SIRFSOC_PIN_GROUP("i2s_6chngrp", i2s_6chn_pins),
996         SIRFSOC_PIN_GROUP("ac97grp", ac97_pins),
997         SIRFSOC_PIN_GROUP("nandgrp", nand_pins),
998         SIRFSOC_PIN_GROUP("spi0grp", spi0_pins),
999         SIRFSOC_PIN_GROUP("spi1grp", spi1_pins),
1000         SIRFSOC_PIN_GROUP("gpsgrp", gps_pins),
1001 };
1002
1003 static const char * const lcd_16bitsgrp[] = { "lcd_16bitsgrp" };
1004 static const char * const lcd_18bitsgrp[] = { "lcd_18bitsgrp" };
1005 static const char * const lcd_24bitsgrp[] = { "lcd_24bitsgrp" };
1006 static const char * const lcdromgrp[] = { "lcdromgrp" };
1007 static const char * const uart0grp[] = { "uart0grp" };
1008 static const char * const uart0_nostreamctrlgrp[] = { "uart0_nostreamctrlgrp" };
1009 static const char * const uart1grp[] = { "uart1grp" };
1010 static const char * const uart2grp[] = { "uart2grp" };
1011 static const char * const uart2_nostreamctrlgrp[] = { "uart2_nostreamctrlgrp" };
1012 static const char * const usp0grp[] = { "usp0grp" };
1013 static const char * const usp0_uart_nostreamctrl_grp[] = {
1014         "usp0_uart_nostreamctrl_grp"
1015 };
1016 static const char * const usp0_only_utfs_grp[] = { "usp0_only_utfs_grp" };
1017 static const char * const usp0_only_urfs_grp[] = { "usp0_only_urfs_grp" };
1018 static const char * const usp1grp[] = { "usp1grp" };
1019 static const char * const usp1_uart_nostreamctrl_grp[] = {
1020         "usp1_uart_nostreamctrl_grp"
1021 };
1022 static const char * const usp2grp[] = { "usp2grp" };
1023 static const char * const usp2_uart_nostreamctrl_grp[] = {
1024         "usp2_uart_nostreamctrl_grp"
1025 };
1026 static const char * const i2c0grp[] = { "i2c0grp" };
1027 static const char * const i2c1grp[] = { "i2c1grp" };
1028 static const char * const pwm0grp[] = { "pwm0grp" };
1029 static const char * const pwm1grp[] = { "pwm1grp" };
1030 static const char * const pwm2grp[] = { "pwm2grp" };
1031 static const char * const pwm3grp[] = { "pwm3grp" };
1032 static const char * const vipgrp[] = { "vipgrp" };
1033 static const char * const vipromgrp[] = { "vipromgrp" };
1034 static const char * const warm_rstgrp[] = { "warm_rstgrp" };
1035 static const char * const cko0grp[] = { "cko0grp" };
1036 static const char * const cko1grp[] = { "cko1grp" };
1037 static const char * const sdmmc0grp[] = { "sdmmc0grp" };
1038 static const char * const sdmmc1grp[] = { "sdmmc1grp" };
1039 static const char * const sdmmc2grp[] = { "sdmmc2grp" };
1040 static const char * const sdmmc3grp[] = { "sdmmc3grp" };
1041 static const char * const sdmmc4grp[] = { "sdmmc4grp" };
1042 static const char * const sdmmc5grp[] = { "sdmmc5grp" };
1043 static const char * const usb0_utmi_drvbusgrp[] = { "usb0_utmi_drvbusgrp" };
1044 static const char * const usb1_utmi_drvbusgrp[] = { "usb1_utmi_drvbusgrp" };
1045 static const char * const usb1_dp_dngrp[] = { "usb1_dp_dngrp" };
1046 static const char * const
1047         uart1_route_io_usb1grp[] = { "uart1_route_io_usb1grp" };
1048 static const char * const pulse_countgrp[] = { "pulse_countgrp" };
1049 static const char * const i2smclkgrp[] = { "i2smclkgrp" };
1050 static const char * const i2s_ext_clk_inputgrp[] = { "i2s_ext_clk_inputgrp" };
1051 static const char * const i2sgrp[] = { "i2sgrp" };
1052 static const char * const i2s_no_dingrp[] = { "i2s_no_dingrp" };
1053 static const char * const i2s_6chngrp[] = { "i2s_6chngrp" };
1054 static const char * const ac97grp[] = { "ac97grp" };
1055 static const char * const nandgrp[] = { "nandgrp" };
1056 static const char * const spi0grp[] = { "spi0grp" };
1057 static const char * const spi1grp[] = { "spi1grp" };
1058 static const char * const gpsgrp[] = { "gpsgrp" };
1059
1060 static const struct sirfsoc_pmx_func sirfsoc_pmx_functions[] = {
1061         SIRFSOC_PMX_FUNCTION("lcd_16bits", lcd_16bitsgrp, lcd_16bits_padmux),
1062         SIRFSOC_PMX_FUNCTION("lcd_18bits", lcd_18bitsgrp, lcd_18bits_padmux),
1063         SIRFSOC_PMX_FUNCTION("lcd_24bits", lcd_24bitsgrp, lcd_24bits_padmux),
1064         SIRFSOC_PMX_FUNCTION("lcdrom", lcdromgrp, lcdrom_padmux),
1065         SIRFSOC_PMX_FUNCTION("uart0", uart0grp, uart0_padmux),
1066         SIRFSOC_PMX_FUNCTION("uart0_nostreamctrl",
1067                 uart0_nostreamctrlgrp, uart0_nostreamctrl_padmux),
1068         SIRFSOC_PMX_FUNCTION("uart1", uart1grp, uart1_padmux),
1069         SIRFSOC_PMX_FUNCTION("uart2", uart2grp, uart2_padmux),
1070         SIRFSOC_PMX_FUNCTION("uart2_nostreamctrl",
1071                 uart2_nostreamctrlgrp, uart2_nostreamctrl_padmux),
1072         SIRFSOC_PMX_FUNCTION("usp0", usp0grp, usp0_padmux),
1073         SIRFSOC_PMX_FUNCTION("usp0_uart_nostreamctrl",
1074                 usp0_uart_nostreamctrl_grp, usp0_uart_nostreamctrl_padmux),
1075         SIRFSOC_PMX_FUNCTION("usp0_only_utfs",
1076                 usp0_only_utfs_grp, usp0_only_utfs_padmux),
1077         SIRFSOC_PMX_FUNCTION("usp0_only_urfs",
1078                 usp0_only_urfs_grp, usp0_only_urfs_padmux),
1079         SIRFSOC_PMX_FUNCTION("usp1", usp1grp, usp1_padmux),
1080         SIRFSOC_PMX_FUNCTION("usp1_uart_nostreamctrl",
1081                 usp1_uart_nostreamctrl_grp, usp1_uart_nostreamctrl_padmux),
1082         SIRFSOC_PMX_FUNCTION("usp2", usp2grp, usp2_padmux),
1083         SIRFSOC_PMX_FUNCTION("usp2_uart_nostreamctrl",
1084                 usp2_uart_nostreamctrl_grp, usp2_uart_nostreamctrl_padmux),
1085         SIRFSOC_PMX_FUNCTION("i2c0", i2c0grp, i2c0_padmux),
1086         SIRFSOC_PMX_FUNCTION("i2c1", i2c1grp, i2c1_padmux),
1087         SIRFSOC_PMX_FUNCTION("pwm0", pwm0grp, pwm0_padmux),
1088         SIRFSOC_PMX_FUNCTION("pwm1", pwm1grp, pwm1_padmux),
1089         SIRFSOC_PMX_FUNCTION("pwm2", pwm2grp, pwm2_padmux),
1090         SIRFSOC_PMX_FUNCTION("pwm3", pwm3grp, pwm3_padmux),
1091         SIRFSOC_PMX_FUNCTION("vip", vipgrp, vip_padmux),
1092         SIRFSOC_PMX_FUNCTION("viprom", vipromgrp, viprom_padmux),
1093         SIRFSOC_PMX_FUNCTION("warm_rst", warm_rstgrp, warm_rst_padmux),
1094         SIRFSOC_PMX_FUNCTION("cko0", cko0grp, cko0_padmux),
1095         SIRFSOC_PMX_FUNCTION("cko1", cko1grp, cko1_padmux),
1096         SIRFSOC_PMX_FUNCTION("sdmmc0", sdmmc0grp, sdmmc0_padmux),
1097         SIRFSOC_PMX_FUNCTION("sdmmc1", sdmmc1grp, sdmmc1_padmux),
1098         SIRFSOC_PMX_FUNCTION("sdmmc2", sdmmc2grp, sdmmc2_padmux),
1099         SIRFSOC_PMX_FUNCTION("sdmmc3", sdmmc3grp, sdmmc3_padmux),
1100         SIRFSOC_PMX_FUNCTION("sdmmc4", sdmmc4grp, sdmmc4_padmux),
1101         SIRFSOC_PMX_FUNCTION("sdmmc5", sdmmc5grp, sdmmc5_padmux),
1102         SIRFSOC_PMX_FUNCTION("usb0_utmi_drvbus",
1103                 usb0_utmi_drvbusgrp, usb0_utmi_drvbus_padmux),
1104         SIRFSOC_PMX_FUNCTION("usb1_utmi_drvbus",
1105                 usb1_utmi_drvbusgrp, usb1_utmi_drvbus_padmux),
1106         SIRFSOC_PMX_FUNCTION("usb1_dp_dn", usb1_dp_dngrp, usb1_dp_dn_padmux),
1107         SIRFSOC_PMX_FUNCTION("uart1_route_io_usb1",
1108                 uart1_route_io_usb1grp, uart1_route_io_usb1_padmux),
1109         SIRFSOC_PMX_FUNCTION("pulse_count", pulse_countgrp, pulse_count_padmux),
1110         SIRFSOC_PMX_FUNCTION("i2s_mclk", i2smclkgrp, i2s_mclk_padmux),
1111         SIRFSOC_PMX_FUNCTION("i2s_ext_clk_input", i2s_ext_clk_inputgrp,
1112                                                 i2s_ext_clk_input_padmux),
1113         SIRFSOC_PMX_FUNCTION("i2s", i2sgrp, i2s_padmux),
1114         SIRFSOC_PMX_FUNCTION("i2s_no_din", i2s_no_dingrp, i2s_no_din_padmux),
1115         SIRFSOC_PMX_FUNCTION("i2s_6chn", i2s_6chngrp, i2s_6chn_padmux),
1116         SIRFSOC_PMX_FUNCTION("ac97", ac97grp, ac97_padmux),
1117         SIRFSOC_PMX_FUNCTION("nand", nandgrp, nand_padmux),
1118         SIRFSOC_PMX_FUNCTION("spi0", spi0grp, spi0_padmux),
1119         SIRFSOC_PMX_FUNCTION("spi1", spi1grp, spi1_padmux),
1120         SIRFSOC_PMX_FUNCTION("gps", gpsgrp, gps_padmux),
1121 };
1122
1123 struct sirfsoc_pinctrl_data prima2_pinctrl_data = {
1124         (struct pinctrl_pin_desc *)sirfsoc_pads,
1125         ARRAY_SIZE(sirfsoc_pads),
1126         (struct sirfsoc_pin_group *)sirfsoc_pin_groups,
1127         ARRAY_SIZE(sirfsoc_pin_groups),
1128         (struct sirfsoc_pmx_func *)sirfsoc_pmx_functions,
1129         ARRAY_SIZE(sirfsoc_pmx_functions),
1130 };
1131