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