xref: /OK3568_Linux_fs/kernel/drivers/pinctrl/sirf/pinctrl-atlas7.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-or-later
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * pinctrl pads, groups, functions for CSR SiRFatlasVII
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/init.h>
10*4882a593Smuzhiyun #include <linux/platform_device.h>
11*4882a593Smuzhiyun #include <linux/io.h>
12*4882a593Smuzhiyun #include <linux/bitops.h>
13*4882a593Smuzhiyun #include <linux/irq.h>
14*4882a593Smuzhiyun #include <linux/slab.h>
15*4882a593Smuzhiyun #include <linux/clk.h>
16*4882a593Smuzhiyun #include <linux/of.h>
17*4882a593Smuzhiyun #include <linux/of_address.h>
18*4882a593Smuzhiyun #include <linux/of_device.h>
19*4882a593Smuzhiyun #include <linux/of_platform.h>
20*4882a593Smuzhiyun #include <linux/of_irq.h>
21*4882a593Smuzhiyun #include <linux/pinctrl/machine.h>
22*4882a593Smuzhiyun #include <linux/pinctrl/pinconf.h>
23*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
24*4882a593Smuzhiyun #include <linux/pinctrl/pinmux.h>
25*4882a593Smuzhiyun #include <linux/pinctrl/consumer.h>
26*4882a593Smuzhiyun #include <linux/pinctrl/pinconf-generic.h>
27*4882a593Smuzhiyun #include <linux/gpio/driver.h>
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun /* Definition of Pad&Mux Properties */
30*4882a593Smuzhiyun #define N 0
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* The Bank contains input-disable regisgers */
33*4882a593Smuzhiyun #define BANK_DS	0
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* Clear Register offset */
36*4882a593Smuzhiyun #define CLR_REG(r)	((r) + 0x04)
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun /* Definition of multiple function select register */
39*4882a593Smuzhiyun #define FUNC_CLEAR_MASK		0x7
40*4882a593Smuzhiyun #define FUNC_GPIO		0
41*4882a593Smuzhiyun #define FUNC_ANALOGUE		0x8
42*4882a593Smuzhiyun #define ANA_CLEAR_MASK		0x1
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun /* The Atlas7's Pad Type List */
45*4882a593Smuzhiyun enum altas7_pad_type {
46*4882a593Smuzhiyun 	PAD_T_4WE_PD = 0,	/* ZIO_PAD3V_4WE_PD */
47*4882a593Smuzhiyun 	PAD_T_4WE_PU,		/* ZIO_PAD3V_4WE_PD */
48*4882a593Smuzhiyun 	PAD_T_16ST,		/* ZIO_PAD3V_SDCLK_PD */
49*4882a593Smuzhiyun 	PAD_T_M31_0204_PD,	/* PRDW0204SDGZ_M311311_PD */
50*4882a593Smuzhiyun 	PAD_T_M31_0204_PU,	/* PRDW0204SDGZ_M311311_PU */
51*4882a593Smuzhiyun 	PAD_T_M31_0610_PD,	/* PRUW0610SDGZ_M311311_PD */
52*4882a593Smuzhiyun 	PAD_T_M31_0610_PU,	/* PRUW0610SDGZ_M311311_PU */
53*4882a593Smuzhiyun 	PAD_T_AD,		/* PRDWUWHW08SCDG_HZ */
54*4882a593Smuzhiyun };
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun /* Raw value of Driver-Strength Bits */
57*4882a593Smuzhiyun #define DS3	BIT(3)
58*4882a593Smuzhiyun #define DS2	BIT(2)
59*4882a593Smuzhiyun #define DS1	BIT(1)
60*4882a593Smuzhiyun #define DS0	BIT(0)
61*4882a593Smuzhiyun #define DSZ	0
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* Drive-Strength Intermediate Values */
64*4882a593Smuzhiyun #define DS_NULL		-1
65*4882a593Smuzhiyun #define DS_1BIT_IM_VAL  DS0
66*4882a593Smuzhiyun #define DS_1BIT_MASK	0x1
67*4882a593Smuzhiyun #define DS_2BIT_IM_VAL  (DS1 | DS0)
68*4882a593Smuzhiyun #define DS_2BIT_MASK	0x3
69*4882a593Smuzhiyun #define DS_4BIT_IM_VAL	(DS3 | DS2 | DS1 | DS0)
70*4882a593Smuzhiyun #define DS_4BIT_MASK	0xf
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /* The Drive-Strength of 4WE Pad		 DS1  0  CO */
73*4882a593Smuzhiyun #define DS_4WE_3   (DS1 | DS0)			/* 1  1  3  */
74*4882a593Smuzhiyun #define DS_4WE_2   (DS1)			/* 1  0  2  */
75*4882a593Smuzhiyun #define DS_4WE_1   (DS0)			/* 0  1  1  */
76*4882a593Smuzhiyun #define DS_4WE_0   (DSZ)			/* 0  0  0  */
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /* The Drive-Strength of 16st Pad		 DS3  2  1  0  CO */
79*4882a593Smuzhiyun #define DS_16ST_15  (DS3 | DS2 | DS1 | DS0)	/* 1  1  1  1  15 */
80*4882a593Smuzhiyun #define DS_16ST_14  (DS3 | DS2 | DS0)		/* 1  1  0  1  13 */
81*4882a593Smuzhiyun #define DS_16ST_13  (DS3 | DS2 | DS1)		/* 1  1  1  0  14 */
82*4882a593Smuzhiyun #define DS_16ST_12  (DS2 | DS1 | DS0)		/* 0  1  1  1  7  */
83*4882a593Smuzhiyun #define DS_16ST_11  (DS2 | DS0)			/* 0  1  0  1  5  */
84*4882a593Smuzhiyun #define DS_16ST_10  (DS3 | DS1 | DS0)		/* 1  0  1  1  11 */
85*4882a593Smuzhiyun #define DS_16ST_9   (DS3 | DS0)			/* 1  0  0  1  9  */
86*4882a593Smuzhiyun #define DS_16ST_8   (DS1 | DS0)			/* 0  0  1  1  3  */
87*4882a593Smuzhiyun #define DS_16ST_7   (DS2 | DS1)			/* 0  1  1  0  6  */
88*4882a593Smuzhiyun #define DS_16ST_6   (DS3 | DS2)			/* 1  1  0  0  12 */
89*4882a593Smuzhiyun #define DS_16ST_5   (DS2)			/* 0  1  0  0  4  */
90*4882a593Smuzhiyun #define DS_16ST_4   (DS3 | DS1)			/* 1  0  1  0  10 */
91*4882a593Smuzhiyun #define DS_16ST_3   (DS1)			/* 0  0  1  0  2  */
92*4882a593Smuzhiyun #define DS_16ST_2   (DS0)			/* 0  0  0  1  1  */
93*4882a593Smuzhiyun #define DS_16ST_1   (DSZ)			/* 0  0  0  0  0  */
94*4882a593Smuzhiyun #define DS_16ST_0   (DS3)			/* 1  0  0  0  8  */
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun /* The Drive-Strength of M31 Pad		 DS0  CO */
97*4882a593Smuzhiyun #define DS_M31_0   (DSZ)			/* 0  0  */
98*4882a593Smuzhiyun #define DS_M31_1   (DS0)			/* 1  1  */
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun /* Raw values of Pull Option Bits */
101*4882a593Smuzhiyun #define PUN	BIT(1)
102*4882a593Smuzhiyun #define PD	BIT(0)
103*4882a593Smuzhiyun #define PE	BIT(0)
104*4882a593Smuzhiyun #define PZ	0
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /* Definition of Pull Types */
107*4882a593Smuzhiyun #define PULL_UP		0
108*4882a593Smuzhiyun #define HIGH_HYSTERESIS 1
109*4882a593Smuzhiyun #define HIGH_Z		2
110*4882a593Smuzhiyun #define PULL_DOWN	3
111*4882a593Smuzhiyun #define PULL_DISABLE	4
112*4882a593Smuzhiyun #define PULL_ENABLE	5
113*4882a593Smuzhiyun #define PULL_UNKNOWN	-1
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun /* Pull Options for 4WE Pad			  PUN  PD  CO */
116*4882a593Smuzhiyun #define P4WE_PULL_MASK		0x3
117*4882a593Smuzhiyun #define P4WE_PULL_DOWN		(PUN | PD)	/* 1   1   3  */
118*4882a593Smuzhiyun #define P4WE_HIGH_Z		(PUN)		/* 1   0   2  */
119*4882a593Smuzhiyun #define P4WE_HIGH_HYSTERESIS	(PD)		/* 0   1   1  */
120*4882a593Smuzhiyun #define P4WE_PULL_UP		(PZ)		/* 0   0   0  */
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun /* Pull Options for 16ST Pad			  PUN  PD  CO */
123*4882a593Smuzhiyun #define P16ST_PULL_MASK		0x3
124*4882a593Smuzhiyun #define P16ST_PULL_DOWN		(PUN | PD)	/* 1   1   3  */
125*4882a593Smuzhiyun #define P16ST_HIGH_Z		(PUN)		/* 1   0   2  */
126*4882a593Smuzhiyun #define P16ST_PULL_UP		(PZ)		/* 0   0   0  */
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /* Pull Options for M31 Pad			  PE */
129*4882a593Smuzhiyun #define PM31_PULL_MASK		0x1
130*4882a593Smuzhiyun #define PM31_PULL_ENABLED	(PE)		/* 1 */
131*4882a593Smuzhiyun #define PM31_PULL_DISABLED	(PZ)		/* 0 */
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun /* Pull Options for A/D Pad			  PUN  PD  CO */
134*4882a593Smuzhiyun #define PANGD_PULL_MASK		0x3
135*4882a593Smuzhiyun #define PANGD_PULL_DOWN		(PUN | PD)	/* 1   1   3  */
136*4882a593Smuzhiyun #define PANGD_HIGH_Z		(PUN)		/* 1   0   2  */
137*4882a593Smuzhiyun #define PANGD_PULL_UP		(PZ)		/* 0   0   0  */
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun /* Definition of Input Disable */
140*4882a593Smuzhiyun #define DI_MASK		0x1
141*4882a593Smuzhiyun #define DI_DISABLE	0x1
142*4882a593Smuzhiyun #define DI_ENABLE	0x0
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun /* Definition of Input Disable Value */
145*4882a593Smuzhiyun #define DIV_MASK	0x1
146*4882a593Smuzhiyun #define DIV_DISABLE	0x1
147*4882a593Smuzhiyun #define DIV_ENABLE	0x0
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun /* Number of Function input disable registers */
150*4882a593Smuzhiyun #define NUM_OF_IN_DISABLE_REG	0x2
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun /* Offset of Function input disable registers */
153*4882a593Smuzhiyun #define IN_DISABLE_0_REG_SET		0x0A00
154*4882a593Smuzhiyun #define IN_DISABLE_0_REG_CLR		0x0A04
155*4882a593Smuzhiyun #define IN_DISABLE_1_REG_SET		0x0A08
156*4882a593Smuzhiyun #define IN_DISABLE_1_REG_CLR		0x0A0C
157*4882a593Smuzhiyun #define IN_DISABLE_VAL_0_REG_SET	0x0A80
158*4882a593Smuzhiyun #define IN_DISABLE_VAL_0_REG_CLR	0x0A84
159*4882a593Smuzhiyun #define IN_DISABLE_VAL_1_REG_SET	0x0A88
160*4882a593Smuzhiyun #define IN_DISABLE_VAL_1_REG_CLR	0x0A8C
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun /* Offset of the SDIO9SEL*/
163*4882a593Smuzhiyun #define SYS2PCI_SDIO9SEL 0x14
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun struct dt_params {
166*4882a593Smuzhiyun 	const char *property;
167*4882a593Smuzhiyun 	int value;
168*4882a593Smuzhiyun };
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun /**
171*4882a593Smuzhiyun  * struct atlas7_pad_conf - Atlas7 Pad Configuration
172*4882a593Smuzhiyun  * @id:			The ID of this Pad.
173*4882a593Smuzhiyun  * @type:		The type of this Pad.
174*4882a593Smuzhiyun  * @mux_reg:		The mux register offset.
175*4882a593Smuzhiyun  *			This register contains the mux.
176*4882a593Smuzhiyun  * @pupd_reg:		The pull-up/down register offset.
177*4882a593Smuzhiyun  * @drvstr_reg:		The drive-strength register offset.
178*4882a593Smuzhiyun  * @ad_ctrl_reg:	The Analogue/Digital Control register.
179*4882a593Smuzhiyun  *
180*4882a593Smuzhiyun  * @mux_bit:		The start bit of mux register.
181*4882a593Smuzhiyun  * @pupd_bit:		The start bit of pull-up/down register.
182*4882a593Smuzhiyun  * @drvstr_bit:		The start bit of drive-strength register.
183*4882a593Smuzhiyun  * @ad_ctrl_bit:	The start bit of analogue/digital register.
184*4882a593Smuzhiyun  */
185*4882a593Smuzhiyun struct atlas7_pad_config {
186*4882a593Smuzhiyun 	const u32 id;
187*4882a593Smuzhiyun 	u32 type;
188*4882a593Smuzhiyun 	u32 mux_reg;
189*4882a593Smuzhiyun 	u32 pupd_reg;
190*4882a593Smuzhiyun 	u32 drvstr_reg;
191*4882a593Smuzhiyun 	u32 ad_ctrl_reg;
192*4882a593Smuzhiyun 	/* bits in register */
193*4882a593Smuzhiyun 	u8 mux_bit;
194*4882a593Smuzhiyun 	u8 pupd_bit;
195*4882a593Smuzhiyun 	u8 drvstr_bit;
196*4882a593Smuzhiyun 	u8 ad_ctrl_bit;
197*4882a593Smuzhiyun };
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define PADCONF(pad, t, mr, pr, dsr, adr, mb, pb, dsb, adb)	\
200*4882a593Smuzhiyun 	{							\
201*4882a593Smuzhiyun 		.id = pad,					\
202*4882a593Smuzhiyun 		.type = t,					\
203*4882a593Smuzhiyun 		.mux_reg = mr,					\
204*4882a593Smuzhiyun 		.pupd_reg = pr,					\
205*4882a593Smuzhiyun 		.drvstr_reg = dsr,				\
206*4882a593Smuzhiyun 		.ad_ctrl_reg = adr,				\
207*4882a593Smuzhiyun 		.mux_bit = mb,					\
208*4882a593Smuzhiyun 		.pupd_bit = pb,					\
209*4882a593Smuzhiyun 		.drvstr_bit = dsb,				\
210*4882a593Smuzhiyun 		.ad_ctrl_bit = adb,				\
211*4882a593Smuzhiyun 	}
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun /*
214*4882a593Smuzhiyun  * struct atlas7_pad_status - Atlas7 Pad status
215*4882a593Smuzhiyun  */
216*4882a593Smuzhiyun struct atlas7_pad_status {
217*4882a593Smuzhiyun 	u8 func;
218*4882a593Smuzhiyun 	u8 pull;
219*4882a593Smuzhiyun 	u8 dstr;
220*4882a593Smuzhiyun 	u8 reserved;
221*4882a593Smuzhiyun };
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun /**
224*4882a593Smuzhiyun  * struct atlas7_pad_mux - Atlas7 mux
225*4882a593Smuzhiyun  * @bank:		The bank of this pad's registers on.
226*4882a593Smuzhiyun  * @pin	:		The ID of this Pad.
227*4882a593Smuzhiyun  * @func:		The mux func on this Pad.
228*4882a593Smuzhiyun  * @dinput_reg:		The Input-Disable register offset.
229*4882a593Smuzhiyun  * @dinput_bit:		The start bit of Input-Disable register.
230*4882a593Smuzhiyun  * @dinput_val_reg:	The Input-Disable-value register offset.
231*4882a593Smuzhiyun  *			This register is used to set the value of this pad
232*4882a593Smuzhiyun  *			if this pad was disabled.
233*4882a593Smuzhiyun  * @dinput_val_bit:	The start bit of Input-Disable Value register.
234*4882a593Smuzhiyun  */
235*4882a593Smuzhiyun struct atlas7_pad_mux {
236*4882a593Smuzhiyun 	u32 bank;
237*4882a593Smuzhiyun 	u32 pin;
238*4882a593Smuzhiyun 	u32 func;
239*4882a593Smuzhiyun 	u32 dinput_reg;
240*4882a593Smuzhiyun 	u32 dinput_bit;
241*4882a593Smuzhiyun 	u32 dinput_val_reg;
242*4882a593Smuzhiyun 	u32 dinput_val_bit;
243*4882a593Smuzhiyun };
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun #define MUX(b, pad, f, dr, db, dvr, dvb)	\
246*4882a593Smuzhiyun 	{					\
247*4882a593Smuzhiyun 		.bank = b,			\
248*4882a593Smuzhiyun 		.pin = pad,			\
249*4882a593Smuzhiyun 		.func = f,			\
250*4882a593Smuzhiyun 		.dinput_reg = dr,		\
251*4882a593Smuzhiyun 		.dinput_bit = db,		\
252*4882a593Smuzhiyun 		.dinput_val_reg = dvr,		\
253*4882a593Smuzhiyun 		.dinput_val_bit = dvb,		\
254*4882a593Smuzhiyun 	}
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun struct atlas7_grp_mux {
257*4882a593Smuzhiyun 	unsigned int group;
258*4882a593Smuzhiyun 	unsigned int pad_mux_count;
259*4882a593Smuzhiyun 	const struct atlas7_pad_mux *pad_mux_list;
260*4882a593Smuzhiyun };
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun  /**
263*4882a593Smuzhiyun  * struct sirfsoc_pin_group - describes a SiRFprimaII pin group
264*4882a593Smuzhiyun  * @name: the name of this specific pin group
265*4882a593Smuzhiyun  * @pins: an array of discrete physical pins used in this group, taken
266*4882a593Smuzhiyun  *	from the driver-local pin enumeration space
267*4882a593Smuzhiyun  * @num_pins: the number of pins in this group array, i.e. the number of
268*4882a593Smuzhiyun  *	elements in .pins so we can iterate over that array
269*4882a593Smuzhiyun  */
270*4882a593Smuzhiyun struct atlas7_pin_group {
271*4882a593Smuzhiyun 	const char *name;
272*4882a593Smuzhiyun 	const unsigned int *pins;
273*4882a593Smuzhiyun 	const unsigned num_pins;
274*4882a593Smuzhiyun };
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun #define GROUP(n, p)  \
277*4882a593Smuzhiyun 	{			\
278*4882a593Smuzhiyun 		.name = n,	\
279*4882a593Smuzhiyun 		.pins = p,	\
280*4882a593Smuzhiyun 		.num_pins = ARRAY_SIZE(p),	\
281*4882a593Smuzhiyun 	}
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun struct atlas7_pmx_func {
284*4882a593Smuzhiyun 	const char *name;
285*4882a593Smuzhiyun 	const char * const *groups;
286*4882a593Smuzhiyun 	const unsigned num_groups;
287*4882a593Smuzhiyun 	const struct atlas7_grp_mux *grpmux;
288*4882a593Smuzhiyun };
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun #define FUNCTION(n, g, m)		\
291*4882a593Smuzhiyun 	{					\
292*4882a593Smuzhiyun 		.name = n,			\
293*4882a593Smuzhiyun 		.groups = g,			\
294*4882a593Smuzhiyun 		.num_groups = ARRAY_SIZE(g),	\
295*4882a593Smuzhiyun 		.grpmux = m,			\
296*4882a593Smuzhiyun 	}
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun struct atlas7_pinctrl_data {
299*4882a593Smuzhiyun 	struct pinctrl_pin_desc *pads;
300*4882a593Smuzhiyun 	int pads_cnt;
301*4882a593Smuzhiyun 	struct atlas7_pin_group *grps;
302*4882a593Smuzhiyun 	int grps_cnt;
303*4882a593Smuzhiyun 	struct atlas7_pmx_func *funcs;
304*4882a593Smuzhiyun 	int funcs_cnt;
305*4882a593Smuzhiyun 	struct atlas7_pad_config *confs;
306*4882a593Smuzhiyun 	int confs_cnt;
307*4882a593Smuzhiyun };
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun /* Platform info of atlas7 pinctrl */
310*4882a593Smuzhiyun #define ATLAS7_PINCTRL_REG_BANKS	2
311*4882a593Smuzhiyun #define ATLAS7_PINCTRL_BANK_0_PINS	18
312*4882a593Smuzhiyun #define ATLAS7_PINCTRL_BANK_1_PINS	141
313*4882a593Smuzhiyun #define ATLAS7_PINCTRL_TOTAL_PINS	\
314*4882a593Smuzhiyun 	(ATLAS7_PINCTRL_BANK_0_PINS + ATLAS7_PINCTRL_BANK_1_PINS)
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun /**
317*4882a593Smuzhiyun  * Atlas7 GPIO Chip
318*4882a593Smuzhiyun  */
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun #define NGPIO_OF_BANK		32
321*4882a593Smuzhiyun #define GPIO_TO_BANK(gpio)	((gpio) / NGPIO_OF_BANK)
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun /* Registers of GPIO Controllers */
324*4882a593Smuzhiyun #define ATLAS7_GPIO_BASE(g, b)		((g)->reg + 0x100 * (b))
325*4882a593Smuzhiyun #define ATLAS7_GPIO_CTRL(b, i)		((b)->base + 4 * (i))
326*4882a593Smuzhiyun #define ATLAS7_GPIO_INT_STATUS(b)	((b)->base + 0x8C)
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun /* Definition bits of GPIO Control Registers */
329*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_INTR_LOW_MASK		BIT(0)
330*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_INTR_HIGH_MASK		BIT(1)
331*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_INTR_TYPE_MASK		BIT(2)
332*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_INTR_EN_MASK		BIT(3)
333*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_INTR_STATUS_MASK	BIT(4)
334*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_OUT_EN_MASK		BIT(5)
335*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_DATAOUT_MASK		BIT(6)
336*4882a593Smuzhiyun #define ATLAS7_GPIO_CTL_DATAIN_MASK		BIT(7)
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun struct atlas7_gpio_bank {
339*4882a593Smuzhiyun 	int id;
340*4882a593Smuzhiyun 	int irq;
341*4882a593Smuzhiyun 	void __iomem *base;
342*4882a593Smuzhiyun 	unsigned int gpio_offset;
343*4882a593Smuzhiyun 	unsigned int ngpio;
344*4882a593Smuzhiyun 	const unsigned int *gpio_pins;
345*4882a593Smuzhiyun 	u32 sleep_data[NGPIO_OF_BANK];
346*4882a593Smuzhiyun };
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun struct atlas7_gpio_chip {
349*4882a593Smuzhiyun 	const char *name;
350*4882a593Smuzhiyun 	void __iomem *reg;
351*4882a593Smuzhiyun 	struct clk *clk;
352*4882a593Smuzhiyun 	int nbank;
353*4882a593Smuzhiyun 	raw_spinlock_t lock;
354*4882a593Smuzhiyun 	struct gpio_chip chip;
355*4882a593Smuzhiyun 	struct atlas7_gpio_bank banks[];
356*4882a593Smuzhiyun };
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun struct atlas7_pmx {
359*4882a593Smuzhiyun 	struct device *dev;
360*4882a593Smuzhiyun 	struct pinctrl_dev *pctl;
361*4882a593Smuzhiyun 	struct pinctrl_desc pctl_desc;
362*4882a593Smuzhiyun 	struct atlas7_pinctrl_data *pctl_data;
363*4882a593Smuzhiyun 	void __iomem *regs[ATLAS7_PINCTRL_REG_BANKS];
364*4882a593Smuzhiyun 	void __iomem *sys2pci_base;
365*4882a593Smuzhiyun 	u32 status_ds[NUM_OF_IN_DISABLE_REG];
366*4882a593Smuzhiyun 	u32 status_dsv[NUM_OF_IN_DISABLE_REG];
367*4882a593Smuzhiyun 	struct atlas7_pad_status sleep_data[ATLAS7_PINCTRL_TOTAL_PINS];
368*4882a593Smuzhiyun };
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun /*
371*4882a593Smuzhiyun  * Pad list for the pinmux subsystem
372*4882a593Smuzhiyun  * refer to A7DA IO Summary - CS-314158-DD-4E.xls
373*4882a593Smuzhiyun  */
374*4882a593Smuzhiyun 
375*4882a593Smuzhiyun /* Pads in IOC RTC & TOP */
376*4882a593Smuzhiyun static const struct pinctrl_pin_desc atlas7_ioc_pads[] = {
377*4882a593Smuzhiyun 	/* RTC PADs */
378*4882a593Smuzhiyun 	PINCTRL_PIN(0, "rtc_gpio_0"),
379*4882a593Smuzhiyun 	PINCTRL_PIN(1, "rtc_gpio_1"),
380*4882a593Smuzhiyun 	PINCTRL_PIN(2, "rtc_gpio_2"),
381*4882a593Smuzhiyun 	PINCTRL_PIN(3, "rtc_gpio_3"),
382*4882a593Smuzhiyun 	PINCTRL_PIN(4, "low_bat_ind_b"),
383*4882a593Smuzhiyun 	PINCTRL_PIN(5, "on_key_b"),
384*4882a593Smuzhiyun 	PINCTRL_PIN(6, "ext_on"),
385*4882a593Smuzhiyun 	PINCTRL_PIN(7, "mem_on"),
386*4882a593Smuzhiyun 	PINCTRL_PIN(8, "core_on"),
387*4882a593Smuzhiyun 	PINCTRL_PIN(9, "io_on"),
388*4882a593Smuzhiyun 	PINCTRL_PIN(10, "can0_tx"),
389*4882a593Smuzhiyun 	PINCTRL_PIN(11, "can0_rx"),
390*4882a593Smuzhiyun 	PINCTRL_PIN(12, "spi0_clk"),
391*4882a593Smuzhiyun 	PINCTRL_PIN(13, "spi0_cs_b"),
392*4882a593Smuzhiyun 	PINCTRL_PIN(14, "spi0_io_0"),
393*4882a593Smuzhiyun 	PINCTRL_PIN(15, "spi0_io_1"),
394*4882a593Smuzhiyun 	PINCTRL_PIN(16, "spi0_io_2"),
395*4882a593Smuzhiyun 	PINCTRL_PIN(17, "spi0_io_3"),
396*4882a593Smuzhiyun 
397*4882a593Smuzhiyun 	/* TOP PADs */
398*4882a593Smuzhiyun 	PINCTRL_PIN(18, "spi1_en"),
399*4882a593Smuzhiyun 	PINCTRL_PIN(19, "spi1_clk"),
400*4882a593Smuzhiyun 	PINCTRL_PIN(20, "spi1_din"),
401*4882a593Smuzhiyun 	PINCTRL_PIN(21, "spi1_dout"),
402*4882a593Smuzhiyun 	PINCTRL_PIN(22, "trg_spi_clk"),
403*4882a593Smuzhiyun 	PINCTRL_PIN(23, "trg_spi_di"),
404*4882a593Smuzhiyun 	PINCTRL_PIN(24, "trg_spi_do"),
405*4882a593Smuzhiyun 	PINCTRL_PIN(25, "trg_spi_cs_b"),
406*4882a593Smuzhiyun 	PINCTRL_PIN(26, "trg_acq_d1"),
407*4882a593Smuzhiyun 	PINCTRL_PIN(27, "trg_irq_b"),
408*4882a593Smuzhiyun 	PINCTRL_PIN(28, "trg_acq_d0"),
409*4882a593Smuzhiyun 	PINCTRL_PIN(29, "trg_acq_clk"),
410*4882a593Smuzhiyun 	PINCTRL_PIN(30, "trg_shutdown_b_out"),
411*4882a593Smuzhiyun 	PINCTRL_PIN(31, "sdio2_clk"),
412*4882a593Smuzhiyun 	PINCTRL_PIN(32, "sdio2_cmd"),
413*4882a593Smuzhiyun 	PINCTRL_PIN(33, "sdio2_dat_0"),
414*4882a593Smuzhiyun 	PINCTRL_PIN(34, "sdio2_dat_1"),
415*4882a593Smuzhiyun 	PINCTRL_PIN(35, "sdio2_dat_2"),
416*4882a593Smuzhiyun 	PINCTRL_PIN(36, "sdio2_dat_3"),
417*4882a593Smuzhiyun 	PINCTRL_PIN(37, "df_ad_7"),
418*4882a593Smuzhiyun 	PINCTRL_PIN(38, "df_ad_6"),
419*4882a593Smuzhiyun 	PINCTRL_PIN(39, "df_ad_5"),
420*4882a593Smuzhiyun 	PINCTRL_PIN(40, "df_ad_4"),
421*4882a593Smuzhiyun 	PINCTRL_PIN(41, "df_ad_3"),
422*4882a593Smuzhiyun 	PINCTRL_PIN(42, "df_ad_2"),
423*4882a593Smuzhiyun 	PINCTRL_PIN(43, "df_ad_1"),
424*4882a593Smuzhiyun 	PINCTRL_PIN(44, "df_ad_0"),
425*4882a593Smuzhiyun 	PINCTRL_PIN(45, "df_dqs"),
426*4882a593Smuzhiyun 	PINCTRL_PIN(46, "df_cle"),
427*4882a593Smuzhiyun 	PINCTRL_PIN(47, "df_ale"),
428*4882a593Smuzhiyun 	PINCTRL_PIN(48, "df_we_b"),
429*4882a593Smuzhiyun 	PINCTRL_PIN(49, "df_re_b"),
430*4882a593Smuzhiyun 	PINCTRL_PIN(50, "df_ry_by"),
431*4882a593Smuzhiyun 	PINCTRL_PIN(51, "df_cs_b_1"),
432*4882a593Smuzhiyun 	PINCTRL_PIN(52, "df_cs_b_0"),
433*4882a593Smuzhiyun 	PINCTRL_PIN(53, "l_pclk"),
434*4882a593Smuzhiyun 	PINCTRL_PIN(54, "l_lck"),
435*4882a593Smuzhiyun 	PINCTRL_PIN(55, "l_fck"),
436*4882a593Smuzhiyun 	PINCTRL_PIN(56, "l_de"),
437*4882a593Smuzhiyun 	PINCTRL_PIN(57, "ldd_0"),
438*4882a593Smuzhiyun 	PINCTRL_PIN(58, "ldd_1"),
439*4882a593Smuzhiyun 	PINCTRL_PIN(59, "ldd_2"),
440*4882a593Smuzhiyun 	PINCTRL_PIN(60, "ldd_3"),
441*4882a593Smuzhiyun 	PINCTRL_PIN(61, "ldd_4"),
442*4882a593Smuzhiyun 	PINCTRL_PIN(62, "ldd_5"),
443*4882a593Smuzhiyun 	PINCTRL_PIN(63, "ldd_6"),
444*4882a593Smuzhiyun 	PINCTRL_PIN(64, "ldd_7"),
445*4882a593Smuzhiyun 	PINCTRL_PIN(65, "ldd_8"),
446*4882a593Smuzhiyun 	PINCTRL_PIN(66, "ldd_9"),
447*4882a593Smuzhiyun 	PINCTRL_PIN(67, "ldd_10"),
448*4882a593Smuzhiyun 	PINCTRL_PIN(68, "ldd_11"),
449*4882a593Smuzhiyun 	PINCTRL_PIN(69, "ldd_12"),
450*4882a593Smuzhiyun 	PINCTRL_PIN(70, "ldd_13"),
451*4882a593Smuzhiyun 	PINCTRL_PIN(71, "ldd_14"),
452*4882a593Smuzhiyun 	PINCTRL_PIN(72, "ldd_15"),
453*4882a593Smuzhiyun 	PINCTRL_PIN(73, "lcd_gpio_20"),
454*4882a593Smuzhiyun 	PINCTRL_PIN(74, "vip_0"),
455*4882a593Smuzhiyun 	PINCTRL_PIN(75, "vip_1"),
456*4882a593Smuzhiyun 	PINCTRL_PIN(76, "vip_2"),
457*4882a593Smuzhiyun 	PINCTRL_PIN(77, "vip_3"),
458*4882a593Smuzhiyun 	PINCTRL_PIN(78, "vip_4"),
459*4882a593Smuzhiyun 	PINCTRL_PIN(79, "vip_5"),
460*4882a593Smuzhiyun 	PINCTRL_PIN(80, "vip_6"),
461*4882a593Smuzhiyun 	PINCTRL_PIN(81, "vip_7"),
462*4882a593Smuzhiyun 	PINCTRL_PIN(82, "vip_pxclk"),
463*4882a593Smuzhiyun 	PINCTRL_PIN(83, "vip_hsync"),
464*4882a593Smuzhiyun 	PINCTRL_PIN(84, "vip_vsync"),
465*4882a593Smuzhiyun 	PINCTRL_PIN(85, "sdio3_clk"),
466*4882a593Smuzhiyun 	PINCTRL_PIN(86, "sdio3_cmd"),
467*4882a593Smuzhiyun 	PINCTRL_PIN(87, "sdio3_dat_0"),
468*4882a593Smuzhiyun 	PINCTRL_PIN(88, "sdio3_dat_1"),
469*4882a593Smuzhiyun 	PINCTRL_PIN(89, "sdio3_dat_2"),
470*4882a593Smuzhiyun 	PINCTRL_PIN(90, "sdio3_dat_3"),
471*4882a593Smuzhiyun 	PINCTRL_PIN(91, "sdio5_clk"),
472*4882a593Smuzhiyun 	PINCTRL_PIN(92, "sdio5_cmd"),
473*4882a593Smuzhiyun 	PINCTRL_PIN(93, "sdio5_dat_0"),
474*4882a593Smuzhiyun 	PINCTRL_PIN(94, "sdio5_dat_1"),
475*4882a593Smuzhiyun 	PINCTRL_PIN(95, "sdio5_dat_2"),
476*4882a593Smuzhiyun 	PINCTRL_PIN(96, "sdio5_dat_3"),
477*4882a593Smuzhiyun 	PINCTRL_PIN(97, "rgmii_txd_0"),
478*4882a593Smuzhiyun 	PINCTRL_PIN(98, "rgmii_txd_1"),
479*4882a593Smuzhiyun 	PINCTRL_PIN(99, "rgmii_txd_2"),
480*4882a593Smuzhiyun 	PINCTRL_PIN(100, "rgmii_txd_3"),
481*4882a593Smuzhiyun 	PINCTRL_PIN(101, "rgmii_txclk"),
482*4882a593Smuzhiyun 	PINCTRL_PIN(102, "rgmii_tx_ctl"),
483*4882a593Smuzhiyun 	PINCTRL_PIN(103, "rgmii_rxd_0"),
484*4882a593Smuzhiyun 	PINCTRL_PIN(104, "rgmii_rxd_1"),
485*4882a593Smuzhiyun 	PINCTRL_PIN(105, "rgmii_rxd_2"),
486*4882a593Smuzhiyun 	PINCTRL_PIN(106, "rgmii_rxd_3"),
487*4882a593Smuzhiyun 	PINCTRL_PIN(107, "rgmii_rx_clk"),
488*4882a593Smuzhiyun 	PINCTRL_PIN(108, "rgmii_rxc_ctl"),
489*4882a593Smuzhiyun 	PINCTRL_PIN(109, "rgmii_mdio"),
490*4882a593Smuzhiyun 	PINCTRL_PIN(110, "rgmii_mdc"),
491*4882a593Smuzhiyun 	PINCTRL_PIN(111, "rgmii_intr_n"),
492*4882a593Smuzhiyun 	PINCTRL_PIN(112, "i2s_mclk"),
493*4882a593Smuzhiyun 	PINCTRL_PIN(113, "i2s_bclk"),
494*4882a593Smuzhiyun 	PINCTRL_PIN(114, "i2s_ws"),
495*4882a593Smuzhiyun 	PINCTRL_PIN(115, "i2s_dout0"),
496*4882a593Smuzhiyun 	PINCTRL_PIN(116, "i2s_dout1"),
497*4882a593Smuzhiyun 	PINCTRL_PIN(117, "i2s_dout2"),
498*4882a593Smuzhiyun 	PINCTRL_PIN(118, "i2s_din"),
499*4882a593Smuzhiyun 	PINCTRL_PIN(119, "gpio_0"),
500*4882a593Smuzhiyun 	PINCTRL_PIN(120, "gpio_1"),
501*4882a593Smuzhiyun 	PINCTRL_PIN(121, "gpio_2"),
502*4882a593Smuzhiyun 	PINCTRL_PIN(122, "gpio_3"),
503*4882a593Smuzhiyun 	PINCTRL_PIN(123, "gpio_4"),
504*4882a593Smuzhiyun 	PINCTRL_PIN(124, "gpio_5"),
505*4882a593Smuzhiyun 	PINCTRL_PIN(125, "gpio_6"),
506*4882a593Smuzhiyun 	PINCTRL_PIN(126, "gpio_7"),
507*4882a593Smuzhiyun 	PINCTRL_PIN(127, "sda_0"),
508*4882a593Smuzhiyun 	PINCTRL_PIN(128, "scl_0"),
509*4882a593Smuzhiyun 	PINCTRL_PIN(129, "coex_pio_0"),
510*4882a593Smuzhiyun 	PINCTRL_PIN(130, "coex_pio_1"),
511*4882a593Smuzhiyun 	PINCTRL_PIN(131, "coex_pio_2"),
512*4882a593Smuzhiyun 	PINCTRL_PIN(132, "coex_pio_3"),
513*4882a593Smuzhiyun 	PINCTRL_PIN(133, "uart0_tx"),
514*4882a593Smuzhiyun 	PINCTRL_PIN(134, "uart0_rx"),
515*4882a593Smuzhiyun 	PINCTRL_PIN(135, "uart1_tx"),
516*4882a593Smuzhiyun 	PINCTRL_PIN(136, "uart1_rx"),
517*4882a593Smuzhiyun 	PINCTRL_PIN(137, "uart3_tx"),
518*4882a593Smuzhiyun 	PINCTRL_PIN(138, "uart3_rx"),
519*4882a593Smuzhiyun 	PINCTRL_PIN(139, "uart4_tx"),
520*4882a593Smuzhiyun 	PINCTRL_PIN(140, "uart4_rx"),
521*4882a593Smuzhiyun 	PINCTRL_PIN(141, "usp0_clk"),
522*4882a593Smuzhiyun 	PINCTRL_PIN(142, "usp0_tx"),
523*4882a593Smuzhiyun 	PINCTRL_PIN(143, "usp0_rx"),
524*4882a593Smuzhiyun 	PINCTRL_PIN(144, "usp0_fs"),
525*4882a593Smuzhiyun 	PINCTRL_PIN(145, "usp1_clk"),
526*4882a593Smuzhiyun 	PINCTRL_PIN(146, "usp1_tx"),
527*4882a593Smuzhiyun 	PINCTRL_PIN(147, "usp1_rx"),
528*4882a593Smuzhiyun 	PINCTRL_PIN(148, "usp1_fs"),
529*4882a593Smuzhiyun 	PINCTRL_PIN(149, "lvds_tx0d4p"),
530*4882a593Smuzhiyun 	PINCTRL_PIN(150, "lvds_tx0d4n"),
531*4882a593Smuzhiyun 	PINCTRL_PIN(151, "lvds_tx0d3p"),
532*4882a593Smuzhiyun 	PINCTRL_PIN(152, "lvds_tx0d3n"),
533*4882a593Smuzhiyun 	PINCTRL_PIN(153, "lvds_tx0d2p"),
534*4882a593Smuzhiyun 	PINCTRL_PIN(154, "lvds_tx0d2n"),
535*4882a593Smuzhiyun 	PINCTRL_PIN(155, "lvds_tx0d1p"),
536*4882a593Smuzhiyun 	PINCTRL_PIN(156, "lvds_tx0d1n"),
537*4882a593Smuzhiyun 	PINCTRL_PIN(157, "lvds_tx0d0p"),
538*4882a593Smuzhiyun 	PINCTRL_PIN(158, "lvds_tx0d0n"),
539*4882a593Smuzhiyun 	PINCTRL_PIN(159, "jtag_tdo"),
540*4882a593Smuzhiyun 	PINCTRL_PIN(160, "jtag_tms"),
541*4882a593Smuzhiyun 	PINCTRL_PIN(161, "jtag_tck"),
542*4882a593Smuzhiyun 	PINCTRL_PIN(162, "jtag_tdi"),
543*4882a593Smuzhiyun 	PINCTRL_PIN(163, "jtag_trstn"),
544*4882a593Smuzhiyun };
545*4882a593Smuzhiyun 
546*4882a593Smuzhiyun static struct atlas7_pad_config atlas7_ioc_pad_confs[] = {
547*4882a593Smuzhiyun 	/* The Configuration of IOC_RTC Pads */
548*4882a593Smuzhiyun 	PADCONF(0, 3, 0x0, 0x100, 0x200, -1, 0, 0, 0, 0),
549*4882a593Smuzhiyun 	PADCONF(1, 3, 0x0, 0x100, 0x200, -1, 4, 2, 2, 0),
550*4882a593Smuzhiyun 	PADCONF(2, 3, 0x0, 0x100, 0x200, -1, 8, 4, 4, 0),
551*4882a593Smuzhiyun 	PADCONF(3, 5, 0x0, 0x100, 0x200, -1, 12, 6, 6, 0),
552*4882a593Smuzhiyun 	PADCONF(4, 4, 0x0, 0x100, 0x200, -1, 16, 8, 8, 0),
553*4882a593Smuzhiyun 	PADCONF(5, 4, 0x0, 0x100, 0x200, -1, 20, 10, 10, 0),
554*4882a593Smuzhiyun 	PADCONF(6, 3, 0x0, 0x100, 0x200, -1, 24, 12, 12, 0),
555*4882a593Smuzhiyun 	PADCONF(7, 3, 0x0, 0x100, 0x200, -1, 28, 14, 14, 0),
556*4882a593Smuzhiyun 	PADCONF(8, 3, 0x8, 0x100, 0x200, -1, 0, 16, 16, 0),
557*4882a593Smuzhiyun 	PADCONF(9, 3, 0x8, 0x100, 0x200, -1, 4, 18, 18, 0),
558*4882a593Smuzhiyun 	PADCONF(10, 4, 0x8, 0x100, 0x200, -1, 8, 20, 20, 0),
559*4882a593Smuzhiyun 	PADCONF(11, 4, 0x8, 0x100, 0x200, -1, 12, 22, 22, 0),
560*4882a593Smuzhiyun 	PADCONF(12, 5, 0x8, 0x100, 0x200, -1, 16, 24, 24, 0),
561*4882a593Smuzhiyun 	PADCONF(13, 6, 0x8, 0x100, 0x200, -1, 20, 26, 26, 0),
562*4882a593Smuzhiyun 	PADCONF(14, 5, 0x8, 0x100, 0x200, -1, 24, 28, 28, 0),
563*4882a593Smuzhiyun 	PADCONF(15, 5, 0x8, 0x100, 0x200, -1, 28, 30, 30, 0),
564*4882a593Smuzhiyun 	PADCONF(16, 5, 0x10, 0x108, 0x208, -1, 0, 0, 0, 0),
565*4882a593Smuzhiyun 	PADCONF(17, 5, 0x10, 0x108, 0x208, -1, 4, 2, 2, 0),
566*4882a593Smuzhiyun 	/* The Configuration of IOC_TOP Pads */
567*4882a593Smuzhiyun 	PADCONF(18, 5, 0x80, 0x180, 0x300, -1, 0, 0, 0, 0),
568*4882a593Smuzhiyun 	PADCONF(19, 5, 0x80, 0x180, 0x300, -1, 4, 2, 2, 0),
569*4882a593Smuzhiyun 	PADCONF(20, 5, 0x80, 0x180, 0x300, -1, 8, 4, 4, 0),
570*4882a593Smuzhiyun 	PADCONF(21, 5, 0x80, 0x180, 0x300, -1, 12, 6, 6, 0),
571*4882a593Smuzhiyun 	PADCONF(22, 5, 0x88, 0x188, 0x308, -1, 0, 0, 0, 0),
572*4882a593Smuzhiyun 	PADCONF(23, 5, 0x88, 0x188, 0x308, -1, 4, 2, 2, 0),
573*4882a593Smuzhiyun 	PADCONF(24, 5, 0x88, 0x188, 0x308, -1, 8, 4, 4, 0),
574*4882a593Smuzhiyun 	PADCONF(25, 6, 0x88, 0x188, 0x308, -1, 12, 6, 6, 0),
575*4882a593Smuzhiyun 	PADCONF(26, 5, 0x88, 0x188, 0x308, -1, 16, 8, 8, 0),
576*4882a593Smuzhiyun 	PADCONF(27, 6, 0x88, 0x188, 0x308, -1, 20, 10, 10, 0),
577*4882a593Smuzhiyun 	PADCONF(28, 5, 0x88, 0x188, 0x308, -1, 24, 12, 12, 0),
578*4882a593Smuzhiyun 	PADCONF(29, 5, 0x88, 0x188, 0x308, -1, 28, 14, 14, 0),
579*4882a593Smuzhiyun 	PADCONF(30, 5, 0x90, 0x188, 0x308, -1, 0, 16, 16, 0),
580*4882a593Smuzhiyun 	PADCONF(31, 2, 0x98, 0x190, 0x310, -1, 0, 0, 0, 0),
581*4882a593Smuzhiyun 	PADCONF(32, 1, 0x98, 0x190, 0x310, -1, 4, 2, 4, 0),
582*4882a593Smuzhiyun 	PADCONF(33, 1, 0x98, 0x190, 0x310, -1, 8, 4, 6, 0),
583*4882a593Smuzhiyun 	PADCONF(34, 1, 0x98, 0x190, 0x310, -1, 12, 6, 8, 0),
584*4882a593Smuzhiyun 	PADCONF(35, 1, 0x98, 0x190, 0x310, -1, 16, 8, 10, 0),
585*4882a593Smuzhiyun 	PADCONF(36, 1, 0x98, 0x190, 0x310, -1, 20, 10, 12, 0),
586*4882a593Smuzhiyun 	PADCONF(37, 1, 0xa0, 0x198, 0x318, -1, 0, 0, 0, 0),
587*4882a593Smuzhiyun 	PADCONF(38, 1, 0xa0, 0x198, 0x318, -1, 4, 2, 2, 0),
588*4882a593Smuzhiyun 	PADCONF(39, 1, 0xa0, 0x198, 0x318, -1, 8, 4, 4, 0),
589*4882a593Smuzhiyun 	PADCONF(40, 1, 0xa0, 0x198, 0x318, -1, 12, 6, 6, 0),
590*4882a593Smuzhiyun 	PADCONF(41, 1, 0xa0, 0x198, 0x318, -1, 16, 8, 8, 0),
591*4882a593Smuzhiyun 	PADCONF(42, 1, 0xa0, 0x198, 0x318, -1, 20, 10, 10, 0),
592*4882a593Smuzhiyun 	PADCONF(43, 1, 0xa0, 0x198, 0x318, -1, 24, 12, 12, 0),
593*4882a593Smuzhiyun 	PADCONF(44, 1, 0xa0, 0x198, 0x318, -1, 28, 14, 14, 0),
594*4882a593Smuzhiyun 	PADCONF(45, 0, 0xa8, 0x198, 0x318, -1, 0, 16, 16, 0),
595*4882a593Smuzhiyun 	PADCONF(46, 0, 0xa8, 0x198, 0x318, -1, 4, 18, 18, 0),
596*4882a593Smuzhiyun 	PADCONF(47, 1, 0xa8, 0x198, 0x318, -1, 8, 20, 20, 0),
597*4882a593Smuzhiyun 	PADCONF(48, 1, 0xa8, 0x198, 0x318, -1, 12, 22, 22, 0),
598*4882a593Smuzhiyun 	PADCONF(49, 1, 0xa8, 0x198, 0x318, -1, 16, 24, 24, 0),
599*4882a593Smuzhiyun 	PADCONF(50, 1, 0xa8, 0x198, 0x318, -1, 20, 26, 26, 0),
600*4882a593Smuzhiyun 	PADCONF(51, 1, 0xa8, 0x198, 0x318, -1, 24, 28, 28, 0),
601*4882a593Smuzhiyun 	PADCONF(52, 1, 0xa8, 0x198, 0x318, -1, 28, 30, 30, 0),
602*4882a593Smuzhiyun 	PADCONF(53, 0, 0xb0, 0x1a0, 0x320, -1, 0, 0, 0, 0),
603*4882a593Smuzhiyun 	PADCONF(54, 0, 0xb0, 0x1a0, 0x320, -1, 4, 2, 2, 0),
604*4882a593Smuzhiyun 	PADCONF(55, 0, 0xb0, 0x1a0, 0x320, -1, 8, 4, 4, 0),
605*4882a593Smuzhiyun 	PADCONF(56, 0, 0xb0, 0x1a0, 0x320, -1, 12, 6, 6, 0),
606*4882a593Smuzhiyun 	PADCONF(57, 0, 0xb0, 0x1a0, 0x320, -1, 16, 8, 8, 0),
607*4882a593Smuzhiyun 	PADCONF(58, 0, 0xb0, 0x1a0, 0x320, -1, 20, 10, 10, 0),
608*4882a593Smuzhiyun 	PADCONF(59, 0, 0xb0, 0x1a0, 0x320, -1, 24, 12, 12, 0),
609*4882a593Smuzhiyun 	PADCONF(60, 0, 0xb0, 0x1a0, 0x320, -1, 28, 14, 14, 0),
610*4882a593Smuzhiyun 	PADCONF(61, 0, 0xb8, 0x1a0, 0x320, -1, 0, 16, 16, 0),
611*4882a593Smuzhiyun 	PADCONF(62, 0, 0xb8, 0x1a0, 0x320, -1, 4, 18, 18, 0),
612*4882a593Smuzhiyun 	PADCONF(63, 0, 0xb8, 0x1a0, 0x320, -1, 8, 20, 20, 0),
613*4882a593Smuzhiyun 	PADCONF(64, 0, 0xb8, 0x1a0, 0x320, -1, 12, 22, 22, 0),
614*4882a593Smuzhiyun 	PADCONF(65, 0, 0xb8, 0x1a0, 0x320, -1, 16, 24, 24, 0),
615*4882a593Smuzhiyun 	PADCONF(66, 0, 0xb8, 0x1a0, 0x320, -1, 20, 26, 26, 0),
616*4882a593Smuzhiyun 	PADCONF(67, 0, 0xb8, 0x1a0, 0x320, -1, 24, 28, 28, 0),
617*4882a593Smuzhiyun 	PADCONF(68, 0, 0xb8, 0x1a0, 0x320, -1, 28, 30, 30, 0),
618*4882a593Smuzhiyun 	PADCONF(69, 0, 0xc0, 0x1a8, 0x328, -1, 0, 0, 0, 0),
619*4882a593Smuzhiyun 	PADCONF(70, 0, 0xc0, 0x1a8, 0x328, -1, 4, 2, 2, 0),
620*4882a593Smuzhiyun 	PADCONF(71, 0, 0xc0, 0x1a8, 0x328, -1, 8, 4, 4, 0),
621*4882a593Smuzhiyun 	PADCONF(72, 0, 0xc0, 0x1a8, 0x328, -1, 12, 6, 6, 0),
622*4882a593Smuzhiyun 	PADCONF(73, 0, 0xc0, 0x1a8, 0x328, -1, 16, 8, 8, 0),
623*4882a593Smuzhiyun 	PADCONF(74, 0, 0xc8, 0x1b0, 0x330, -1, 0, 0, 0, 0),
624*4882a593Smuzhiyun 	PADCONF(75, 0, 0xc8, 0x1b0, 0x330, -1, 4, 2, 2, 0),
625*4882a593Smuzhiyun 	PADCONF(76, 0, 0xc8, 0x1b0, 0x330, -1, 8, 4, 4, 0),
626*4882a593Smuzhiyun 	PADCONF(77, 0, 0xc8, 0x1b0, 0x330, -1, 12, 6, 6, 0),
627*4882a593Smuzhiyun 	PADCONF(78, 0, 0xc8, 0x1b0, 0x330, -1, 16, 8, 8, 0),
628*4882a593Smuzhiyun 	PADCONF(79, 0, 0xc8, 0x1b0, 0x330, -1, 20, 10, 10, 0),
629*4882a593Smuzhiyun 	PADCONF(80, 0, 0xc8, 0x1b0, 0x330, -1, 24, 12, 12, 0),
630*4882a593Smuzhiyun 	PADCONF(81, 0, 0xc8, 0x1b0, 0x330, -1, 28, 14, 14, 0),
631*4882a593Smuzhiyun 	PADCONF(82, 0, 0xd0, 0x1b0, 0x330, -1, 0, 16, 16, 0),
632*4882a593Smuzhiyun 	PADCONF(83, 0, 0xd0, 0x1b0, 0x330, -1, 4, 18, 18, 0),
633*4882a593Smuzhiyun 	PADCONF(84, 0, 0xd0, 0x1b0, 0x330, -1, 8, 20, 20, 0),
634*4882a593Smuzhiyun 	PADCONF(85, 2, 0xd8, 0x1b8, 0x338, -1, 0, 0, 0, 0),
635*4882a593Smuzhiyun 	PADCONF(86, 1, 0xd8, 0x1b8, 0x338, -1, 4, 4, 4, 0),
636*4882a593Smuzhiyun 	PADCONF(87, 1, 0xd8, 0x1b8, 0x338, -1, 8, 6, 6, 0),
637*4882a593Smuzhiyun 	PADCONF(88, 1, 0xd8, 0x1b8, 0x338, -1, 12, 8, 8, 0),
638*4882a593Smuzhiyun 	PADCONF(89, 1, 0xd8, 0x1b8, 0x338, -1, 16, 10, 10, 0),
639*4882a593Smuzhiyun 	PADCONF(90, 1, 0xd8, 0x1b8, 0x338, -1, 20, 12, 12, 0),
640*4882a593Smuzhiyun 	PADCONF(91, 2, 0xe0, 0x1c0, 0x340, -1, 0, 0, 0, 0),
641*4882a593Smuzhiyun 	PADCONF(92, 1, 0xe0, 0x1c0, 0x340, -1, 4, 4, 4, 0),
642*4882a593Smuzhiyun 	PADCONF(93, 1, 0xe0, 0x1c0, 0x340, -1, 8, 6, 6, 0),
643*4882a593Smuzhiyun 	PADCONF(94, 1, 0xe0, 0x1c0, 0x340, -1, 12, 8, 8, 0),
644*4882a593Smuzhiyun 	PADCONF(95, 1, 0xe0, 0x1c0, 0x340, -1, 16, 10, 10, 0),
645*4882a593Smuzhiyun 	PADCONF(96, 1, 0xe0, 0x1c0, 0x340, -1, 20, 12, 12, 0),
646*4882a593Smuzhiyun 	PADCONF(97, 0, 0xe8, 0x1c8, 0x348, -1, 0, 0, 0, 0),
647*4882a593Smuzhiyun 	PADCONF(98, 0, 0xe8, 0x1c8, 0x348, -1, 4, 2, 2, 0),
648*4882a593Smuzhiyun 	PADCONF(99, 0, 0xe8, 0x1c8, 0x348, -1, 8, 4, 4, 0),
649*4882a593Smuzhiyun 	PADCONF(100, 0, 0xe8, 0x1c8, 0x348, -1, 12, 6, 6, 0),
650*4882a593Smuzhiyun 	PADCONF(101, 2, 0xe8, 0x1c8, 0x348, -1, 16, 8, 8, 0),
651*4882a593Smuzhiyun 	PADCONF(102, 0, 0xe8, 0x1c8, 0x348, -1, 20, 12, 12, 0),
652*4882a593Smuzhiyun 	PADCONF(103, 0, 0xe8, 0x1c8, 0x348, -1, 24, 14, 14, 0),
653*4882a593Smuzhiyun 	PADCONF(104, 0, 0xe8, 0x1c8, 0x348, -1, 28, 16, 16, 0),
654*4882a593Smuzhiyun 	PADCONF(105, 0, 0xf0, 0x1c8, 0x348, -1, 0, 18, 18, 0),
655*4882a593Smuzhiyun 	PADCONF(106, 0, 0xf0, 0x1c8, 0x348, -1, 4, 20, 20, 0),
656*4882a593Smuzhiyun 	PADCONF(107, 0, 0xf0, 0x1c8, 0x348, -1, 8, 22, 22, 0),
657*4882a593Smuzhiyun 	PADCONF(108, 0, 0xf0, 0x1c8, 0x348, -1, 12, 24, 24, 0),
658*4882a593Smuzhiyun 	PADCONF(109, 1, 0xf0, 0x1c8, 0x348, -1, 16, 26, 26, 0),
659*4882a593Smuzhiyun 	PADCONF(110, 0, 0xf0, 0x1c8, 0x348, -1, 20, 28, 28, 0),
660*4882a593Smuzhiyun 	PADCONF(111, 1, 0xf0, 0x1c8, 0x348, -1, 24, 30, 30, 0),
661*4882a593Smuzhiyun 	PADCONF(112, 5, 0xf8, 0x200, 0x350, -1, 0, 0, 0, 0),
662*4882a593Smuzhiyun 	PADCONF(113, 5, 0xf8, 0x200, 0x350, -1, 4, 2, 2, 0),
663*4882a593Smuzhiyun 	PADCONF(114, 5, 0xf8, 0x200, 0x350, -1, 8, 4, 4, 0),
664*4882a593Smuzhiyun 	PADCONF(115, 5, 0xf8, 0x200, 0x350, -1, 12, 6, 6, 0),
665*4882a593Smuzhiyun 	PADCONF(116, 5, 0xf8, 0x200, 0x350, -1, 16, 8, 8, 0),
666*4882a593Smuzhiyun 	PADCONF(117, 5, 0xf8, 0x200, 0x350, -1, 20, 10, 10, 0),
667*4882a593Smuzhiyun 	PADCONF(118, 5, 0xf8, 0x200, 0x350, -1, 24, 12, 12, 0),
668*4882a593Smuzhiyun 	PADCONF(119, 5, 0x100, 0x250, 0x358, -1, 0, 0, 0, 0),
669*4882a593Smuzhiyun 	PADCONF(120, 5, 0x100, 0x250, 0x358, -1, 4, 2, 2, 0),
670*4882a593Smuzhiyun 	PADCONF(121, 5, 0x100, 0x250, 0x358, -1, 8, 4, 4, 0),
671*4882a593Smuzhiyun 	PADCONF(122, 5, 0x100, 0x250, 0x358, -1, 12, 6, 6, 0),
672*4882a593Smuzhiyun 	PADCONF(123, 6, 0x100, 0x250, 0x358, -1, 16, 8, 8, 0),
673*4882a593Smuzhiyun 	PADCONF(124, 6, 0x100, 0x250, 0x358, -1, 20, 10, 10, 0),
674*4882a593Smuzhiyun 	PADCONF(125, 6, 0x100, 0x250, 0x358, -1, 24, 12, 12, 0),
675*4882a593Smuzhiyun 	PADCONF(126, 6, 0x100, 0x250, 0x358, -1, 28, 14, 14, 0),
676*4882a593Smuzhiyun 	PADCONF(127, 6, 0x108, 0x250, 0x358, -1, 16, 24, 24, 0),
677*4882a593Smuzhiyun 	PADCONF(128, 6, 0x108, 0x250, 0x358, -1, 20, 26, 26, 0),
678*4882a593Smuzhiyun 	PADCONF(129, 0, 0x110, 0x258, 0x360, -1, 0, 0, 0, 0),
679*4882a593Smuzhiyun 	PADCONF(130, 0, 0x110, 0x258, 0x360, -1, 4, 2, 2, 0),
680*4882a593Smuzhiyun 	PADCONF(131, 0, 0x110, 0x258, 0x360, -1, 8, 4, 4, 0),
681*4882a593Smuzhiyun 	PADCONF(132, 0, 0x110, 0x258, 0x360, -1, 12, 6, 6, 0),
682*4882a593Smuzhiyun 	PADCONF(133, 6, 0x118, 0x260, 0x368, -1, 0, 0, 0, 0),
683*4882a593Smuzhiyun 	PADCONF(134, 6, 0x118, 0x260, 0x368, -1, 4, 2, 2, 0),
684*4882a593Smuzhiyun 	PADCONF(135, 6, 0x118, 0x260, 0x368, -1, 16, 8, 8, 0),
685*4882a593Smuzhiyun 	PADCONF(136, 6, 0x118, 0x260, 0x368, -1, 20, 10, 10, 0),
686*4882a593Smuzhiyun 	PADCONF(137, 6, 0x118, 0x260, 0x368, -1, 24, 12, 12, 0),
687*4882a593Smuzhiyun 	PADCONF(138, 6, 0x118, 0x260, 0x368, -1, 28, 14, 14, 0),
688*4882a593Smuzhiyun 	PADCONF(139, 6, 0x120, 0x260, 0x368, -1, 0, 16, 16, 0),
689*4882a593Smuzhiyun 	PADCONF(140, 6, 0x120, 0x260, 0x368, -1, 4, 18, 18, 0),
690*4882a593Smuzhiyun 	PADCONF(141, 5, 0x128, 0x268, 0x378, -1, 0, 0, 0, 0),
691*4882a593Smuzhiyun 	PADCONF(142, 5, 0x128, 0x268, 0x378, -1, 4, 2, 2, 0),
692*4882a593Smuzhiyun 	PADCONF(143, 5, 0x128, 0x268, 0x378, -1, 8, 4, 4, 0),
693*4882a593Smuzhiyun 	PADCONF(144, 5, 0x128, 0x268, 0x378, -1, 12, 6, 6, 0),
694*4882a593Smuzhiyun 	PADCONF(145, 5, 0x128, 0x268, 0x378, -1, 16, 8, 8, 0),
695*4882a593Smuzhiyun 	PADCONF(146, 5, 0x128, 0x268, 0x378, -1, 20, 10, 10, 0),
696*4882a593Smuzhiyun 	PADCONF(147, 5, 0x128, 0x268, 0x378, -1, 24, 12, 12, 0),
697*4882a593Smuzhiyun 	PADCONF(148, 5, 0x128, 0x268, 0x378, -1, 28, 14, 14, 0),
698*4882a593Smuzhiyun 	PADCONF(149, 7, 0x130, 0x270, -1, 0x480, 0, 0, 0, 0),
699*4882a593Smuzhiyun 	PADCONF(150, 7, 0x130, 0x270, -1, 0x480, 4, 2, 0, 1),
700*4882a593Smuzhiyun 	PADCONF(151, 7, 0x130, 0x270, -1, 0x480, 8, 4, 0, 2),
701*4882a593Smuzhiyun 	PADCONF(152, 7, 0x130, 0x270, -1, 0x480, 12, 6, 0, 3),
702*4882a593Smuzhiyun 	PADCONF(153, 7, 0x130, 0x270, -1, 0x480, 16, 8, 0, 4),
703*4882a593Smuzhiyun 	PADCONF(154, 7, 0x130, 0x270, -1, 0x480, 20, 10, 0, 5),
704*4882a593Smuzhiyun 	PADCONF(155, 7, 0x130, 0x270, -1, 0x480, 24, 12, 0, 6),
705*4882a593Smuzhiyun 	PADCONF(156, 7, 0x130, 0x270, -1, 0x480, 28, 14, 0, 7),
706*4882a593Smuzhiyun 	PADCONF(157, 7, 0x138, 0x278, -1, 0x480, 0, 0, 0, 8),
707*4882a593Smuzhiyun 	PADCONF(158, 7, 0x138, 0x278, -1, 0x480, 4, 2, 0, 9),
708*4882a593Smuzhiyun 	PADCONF(159, 5, 0x140, 0x280, 0x380, -1, 0, 0, 0, 0),
709*4882a593Smuzhiyun 	PADCONF(160, 6, 0x140, 0x280, 0x380, -1, 4, 2, 2, 0),
710*4882a593Smuzhiyun 	PADCONF(161, 5, 0x140, 0x280, 0x380, -1, 8, 4, 4, 0),
711*4882a593Smuzhiyun 	PADCONF(162, 6, 0x140, 0x280, 0x380, -1, 12, 6, 6, 0),
712*4882a593Smuzhiyun 	PADCONF(163, 6, 0x140, 0x280, 0x380, -1, 16, 8, 8, 0),
713*4882a593Smuzhiyun };
714*4882a593Smuzhiyun 
715*4882a593Smuzhiyun /* pin list of each pin group */
716*4882a593Smuzhiyun static const unsigned int gnss_gpio_pins[] = { 119, 120, 121, 122, 123, 124,
717*4882a593Smuzhiyun 		125, 126, 127, 128, 22, 23, 24, 25, 26, 27, 28, 29, 30, };
718*4882a593Smuzhiyun static const unsigned int lcd_vip_gpio_pins[] = { 74, 75, 76, 77, 78, 79, 80,
719*4882a593Smuzhiyun 		81, 82, 83, 84, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
720*4882a593Smuzhiyun 		64, 65, 66, 67, 68, 69, 70, 71, 72, 73, };
721*4882a593Smuzhiyun static const unsigned int sdio_i2s_gpio_pins[] = { 31, 32, 33, 34, 35, 36,
722*4882a593Smuzhiyun 		85, 86, 87, 88, 89, 90, 129, 130, 131, 132, 91, 92, 93, 94,
723*4882a593Smuzhiyun 		95, 96, 112, 113, 114, 115, 116, 117, 118, };
724*4882a593Smuzhiyun static const unsigned int sp_rgmii_gpio_pins[] = { 97, 98, 99, 100, 101, 102,
725*4882a593Smuzhiyun 		103, 104, 105, 106, 107, 108, 109, 110, 111, 18, 19, 20, 21,
726*4882a593Smuzhiyun 		141, 142, 143, 144, 145, 146, 147, 148, };
727*4882a593Smuzhiyun static const unsigned int lvds_gpio_pins[] = { 157, 158, 155, 156, 153, 154,
728*4882a593Smuzhiyun 		151, 152, 149, 150, };
729*4882a593Smuzhiyun static const unsigned int jtag_uart_nand_gpio_pins[] = { 44, 43, 42, 41, 40,
730*4882a593Smuzhiyun 		39, 38, 37, 46, 47, 48, 49, 50, 52, 51, 45, 133, 134, 135,
731*4882a593Smuzhiyun 		136, 137, 138, 139, 140, 159, 160, 161, 162, 163, };
732*4882a593Smuzhiyun static const unsigned int rtc_gpio_pins[] = { 0, 1, 2, 3, 4, 10, 11, 12, 13,
733*4882a593Smuzhiyun 		14, 15, 16, 17, 9, };
734*4882a593Smuzhiyun static const unsigned int audio_ac97_pins[] = { 113, 118, 115, 114, };
735*4882a593Smuzhiyun static const unsigned int audio_digmic_pins0[] = { 51, };
736*4882a593Smuzhiyun static const unsigned int audio_digmic_pins1[] = { 122, };
737*4882a593Smuzhiyun static const unsigned int audio_digmic_pins2[] = { 161, };
738*4882a593Smuzhiyun static const unsigned int audio_func_dbg_pins[] = { 141, 144, 44, 43, 42, 41,
739*4882a593Smuzhiyun 		40, 39, 38, 37, 74, 75, 76, 77, 78, 79, 81, 113, 114, 118,
740*4882a593Smuzhiyun 		115, 49, 50, 142, 143, 80, };
741*4882a593Smuzhiyun static const unsigned int audio_i2s_pins[] = { 118, 115, 116, 117, 112, 113,
742*4882a593Smuzhiyun 		114, };
743*4882a593Smuzhiyun static const unsigned int audio_i2s_2ch_pins[] = { 118, 115, 112, 113, 114, };
744*4882a593Smuzhiyun static const unsigned int audio_i2s_extclk_pins[] = { 112, };
745*4882a593Smuzhiyun static const unsigned int audio_spdif_out_pins0[] = { 112, };
746*4882a593Smuzhiyun static const unsigned int audio_spdif_out_pins1[] = { 116, };
747*4882a593Smuzhiyun static const unsigned int audio_spdif_out_pins2[] = { 142, };
748*4882a593Smuzhiyun static const unsigned int audio_uart0_basic_pins[] = { 143, 142, 141, 144, };
749*4882a593Smuzhiyun static const unsigned int audio_uart0_urfs_pins0[] = { 117, };
750*4882a593Smuzhiyun static const unsigned int audio_uart0_urfs_pins1[] = { 139, };
751*4882a593Smuzhiyun static const unsigned int audio_uart0_urfs_pins2[] = { 163, };
752*4882a593Smuzhiyun static const unsigned int audio_uart0_urfs_pins3[] = { 162, };
753*4882a593Smuzhiyun static const unsigned int audio_uart1_basic_pins[] = { 147, 146, 145, 148, };
754*4882a593Smuzhiyun static const unsigned int audio_uart1_urfs_pins0[] = { 117, };
755*4882a593Smuzhiyun static const unsigned int audio_uart1_urfs_pins1[] = { 140, };
756*4882a593Smuzhiyun static const unsigned int audio_uart1_urfs_pins2[] = { 163, };
757*4882a593Smuzhiyun static const unsigned int audio_uart2_urfs_pins0[] = { 139, };
758*4882a593Smuzhiyun static const unsigned int audio_uart2_urfs_pins1[] = { 163, };
759*4882a593Smuzhiyun static const unsigned int audio_uart2_urfs_pins2[] = { 96, };
760*4882a593Smuzhiyun static const unsigned int audio_uart2_urxd_pins0[] = { 20, };
761*4882a593Smuzhiyun static const unsigned int audio_uart2_urxd_pins1[] = { 109, };
762*4882a593Smuzhiyun static const unsigned int audio_uart2_urxd_pins2[] = { 93, };
763*4882a593Smuzhiyun static const unsigned int audio_uart2_usclk_pins0[] = { 19, };
764*4882a593Smuzhiyun static const unsigned int audio_uart2_usclk_pins1[] = { 101, };
765*4882a593Smuzhiyun static const unsigned int audio_uart2_usclk_pins2[] = { 91, };
766*4882a593Smuzhiyun static const unsigned int audio_uart2_utfs_pins0[] = { 18, };
767*4882a593Smuzhiyun static const unsigned int audio_uart2_utfs_pins1[] = { 111, };
768*4882a593Smuzhiyun static const unsigned int audio_uart2_utfs_pins2[] = { 94, };
769*4882a593Smuzhiyun static const unsigned int audio_uart2_utxd_pins0[] = { 21, };
770*4882a593Smuzhiyun static const unsigned int audio_uart2_utxd_pins1[] = { 110, };
771*4882a593Smuzhiyun static const unsigned int audio_uart2_utxd_pins2[] = { 92, };
772*4882a593Smuzhiyun static const unsigned int c_can_trnsvr_en_pins0[] = { 2, };
773*4882a593Smuzhiyun static const unsigned int c_can_trnsvr_en_pins1[] = { 0, };
774*4882a593Smuzhiyun static const unsigned int c_can_trnsvr_intr_pins[] = { 1, };
775*4882a593Smuzhiyun static const unsigned int c_can_trnsvr_stb_n_pins[] = { 3, };
776*4882a593Smuzhiyun static const unsigned int c0_can_rxd_trnsv0_pins[] = { 11, };
777*4882a593Smuzhiyun static const unsigned int c0_can_rxd_trnsv1_pins[] = { 2, };
778*4882a593Smuzhiyun static const unsigned int c0_can_txd_trnsv0_pins[] = { 10, };
779*4882a593Smuzhiyun static const unsigned int c0_can_txd_trnsv1_pins[] = { 3, };
780*4882a593Smuzhiyun static const unsigned int c1_can_rxd_pins0[] = { 138, };
781*4882a593Smuzhiyun static const unsigned int c1_can_rxd_pins1[] = { 147, };
782*4882a593Smuzhiyun static const unsigned int c1_can_rxd_pins2[] = { 2, };
783*4882a593Smuzhiyun static const unsigned int c1_can_rxd_pins3[] = { 162, };
784*4882a593Smuzhiyun static const unsigned int c1_can_txd_pins0[] = { 137, };
785*4882a593Smuzhiyun static const unsigned int c1_can_txd_pins1[] = { 146, };
786*4882a593Smuzhiyun static const unsigned int c1_can_txd_pins2[] = { 3, };
787*4882a593Smuzhiyun static const unsigned int c1_can_txd_pins3[] = { 161, };
788*4882a593Smuzhiyun static const unsigned int ca_audio_lpc_pins[] = { 62, 63, 64, 65, 66, 67, 68,
789*4882a593Smuzhiyun 		69, 70, 71, };
790*4882a593Smuzhiyun static const unsigned int ca_bt_lpc_pins[] = { 85, 86, 87, 88, 89, 90, };
791*4882a593Smuzhiyun static const unsigned int ca_coex_pins[] = { 129, 130, 131, 132, };
792*4882a593Smuzhiyun static const unsigned int ca_curator_lpc_pins[] = { 57, 58, 59, 60, };
793*4882a593Smuzhiyun static const unsigned int ca_pcm_debug_pins[] = { 91, 93, 94, 92, };
794*4882a593Smuzhiyun static const unsigned int ca_pio_pins[] = { 121, 122, 125, 126, 38, 37, 47,
795*4882a593Smuzhiyun 		49, 50, 54, 55, 56, };
796*4882a593Smuzhiyun static const unsigned int ca_sdio_debug_pins[] = { 40, 39, 44, 43, 42, 41, };
797*4882a593Smuzhiyun static const unsigned int ca_spi_pins[] = { 82, 79, 80, 81, };
798*4882a593Smuzhiyun static const unsigned int ca_trb_pins[] = { 91, 93, 94, 95, 96, 78, 74, 75,
799*4882a593Smuzhiyun 		76, 77, };
800*4882a593Smuzhiyun static const unsigned int ca_uart_debug_pins[] = { 136, 135, 134, 133, };
801*4882a593Smuzhiyun static const unsigned int clkc_pins0[] = { 30, 47, };
802*4882a593Smuzhiyun static const unsigned int clkc_pins1[] = { 78, 54, };
803*4882a593Smuzhiyun static const unsigned int gn_gnss_i2c_pins[] = { 128, 127, };
804*4882a593Smuzhiyun static const unsigned int gn_gnss_uart_nopause_pins[] = { 134, 133, };
805*4882a593Smuzhiyun static const unsigned int gn_gnss_uart_pins[] = { 134, 133, 136, 135, };
806*4882a593Smuzhiyun static const unsigned int gn_trg_spi_pins0[] = { 22, 25, 23, 24, };
807*4882a593Smuzhiyun static const unsigned int gn_trg_spi_pins1[] = { 82, 79, 80, 81, };
808*4882a593Smuzhiyun static const unsigned int cvbs_dbg_pins[] = { 54, 53, 82, 74, 75, 76, 77, 78,
809*4882a593Smuzhiyun 		79, 80, 81, 83, 84, 73, 55, 56, };
810*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins0[] = { 57, };
811*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins1[] = { 58, };
812*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins2[] = { 59, };
813*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins3[] = { 60, };
814*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins4[] = { 61, };
815*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins5[] = { 62, };
816*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins6[] = { 63, };
817*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins7[] = { 64, };
818*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins8[] = { 65, };
819*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins9[] = { 66, };
820*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins10[] = { 67, };
821*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins11[] = { 68, };
822*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins12[] = { 69, };
823*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins13[] = { 70, };
824*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins14[] = { 71, };
825*4882a593Smuzhiyun static const unsigned int cvbs_dbg_test_pins15[] = { 72, };
826*4882a593Smuzhiyun static const unsigned int gn_gnss_power_pins[] = { 123, 124, 121, 122, 125,
827*4882a593Smuzhiyun 		120, };
828*4882a593Smuzhiyun static const unsigned int gn_gnss_sw_status_pins[] = { 57, 58, 59, 60, 61,
829*4882a593Smuzhiyun 		62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 53, 55, 56, 54, };
830*4882a593Smuzhiyun static const unsigned int gn_gnss_eclk_pins[] = { 113, };
831*4882a593Smuzhiyun static const unsigned int gn_gnss_irq1_pins0[] = { 112, };
832*4882a593Smuzhiyun static const unsigned int gn_gnss_irq2_pins0[] = { 118, };
833*4882a593Smuzhiyun static const unsigned int gn_gnss_tm_pins[] = { 115, };
834*4882a593Smuzhiyun static const unsigned int gn_gnss_tsync_pins[] = { 114, };
835*4882a593Smuzhiyun static const unsigned int gn_io_gnsssys_sw_cfg_pins[] = { 44, 43, 42, 41, 40,
836*4882a593Smuzhiyun 		39, 38, 37, 49, 50, 91, 92, 93, 94, 95, 96, };
837*4882a593Smuzhiyun static const unsigned int gn_trg_pins0[] = { 29, 28, 26, 27, };
838*4882a593Smuzhiyun static const unsigned int gn_trg_pins1[] = { 77, 76, 74, 75, };
839*4882a593Smuzhiyun static const unsigned int gn_trg_shutdown_pins0[] = { 30, };
840*4882a593Smuzhiyun static const unsigned int gn_trg_shutdown_pins1[] = { 83, };
841*4882a593Smuzhiyun static const unsigned int gn_trg_shutdown_pins2[] = { 117, };
842*4882a593Smuzhiyun static const unsigned int gn_trg_shutdown_pins3[] = { 123, };
843*4882a593Smuzhiyun static const unsigned int i2c0_pins[] = { 128, 127, };
844*4882a593Smuzhiyun static const unsigned int i2c1_pins[] = { 126, 125, };
845*4882a593Smuzhiyun static const unsigned int i2s0_pins[] = { 91, 93, 94, 92, };
846*4882a593Smuzhiyun static const unsigned int i2s1_basic_pins[] = { 95, 96, };
847*4882a593Smuzhiyun static const unsigned int i2s1_rxd0_pins0[] = { 61, };
848*4882a593Smuzhiyun static const unsigned int i2s1_rxd0_pins1[] = { 131, };
849*4882a593Smuzhiyun static const unsigned int i2s1_rxd0_pins2[] = { 129, };
850*4882a593Smuzhiyun static const unsigned int i2s1_rxd0_pins3[] = { 117, };
851*4882a593Smuzhiyun static const unsigned int i2s1_rxd0_pins4[] = { 83, };
852*4882a593Smuzhiyun static const unsigned int i2s1_rxd1_pins0[] = { 72, };
853*4882a593Smuzhiyun static const unsigned int i2s1_rxd1_pins1[] = { 132, };
854*4882a593Smuzhiyun static const unsigned int i2s1_rxd1_pins2[] = { 130, };
855*4882a593Smuzhiyun static const unsigned int i2s1_rxd1_pins3[] = { 118, };
856*4882a593Smuzhiyun static const unsigned int i2s1_rxd1_pins4[] = { 84, };
857*4882a593Smuzhiyun static const unsigned int jtag_jt_dbg_nsrst_pins[] = { 125, };
858*4882a593Smuzhiyun static const unsigned int jtag_ntrst_pins0[] = { 4, };
859*4882a593Smuzhiyun static const unsigned int jtag_ntrst_pins1[] = { 163, };
860*4882a593Smuzhiyun static const unsigned int jtag_swdiotms_pins0[] = { 2, };
861*4882a593Smuzhiyun static const unsigned int jtag_swdiotms_pins1[] = { 160, };
862*4882a593Smuzhiyun static const unsigned int jtag_tck_pins0[] = { 0, };
863*4882a593Smuzhiyun static const unsigned int jtag_tck_pins1[] = { 161, };
864*4882a593Smuzhiyun static const unsigned int jtag_tdi_pins0[] = { 1, };
865*4882a593Smuzhiyun static const unsigned int jtag_tdi_pins1[] = { 162, };
866*4882a593Smuzhiyun static const unsigned int jtag_tdo_pins0[] = { 3, };
867*4882a593Smuzhiyun static const unsigned int jtag_tdo_pins1[] = { 159, };
868*4882a593Smuzhiyun static const unsigned int ks_kas_spi_pins0[] = { 141, 144, 143, 142, };
869*4882a593Smuzhiyun static const unsigned int ld_ldd_pins[] = { 57, 58, 59, 60, 61, 62, 63, 64,
870*4882a593Smuzhiyun 		65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80,
871*4882a593Smuzhiyun 		81, 56, 53, };
872*4882a593Smuzhiyun static const unsigned int ld_ldd_16bit_pins[] = { 57, 58, 59, 60, 61, 62, 63,
873*4882a593Smuzhiyun 		64, 65, 66, 67, 68, 69, 70, 71, 72, 56, 53, };
874*4882a593Smuzhiyun static const unsigned int ld_ldd_fck_pins[] = { 55, };
875*4882a593Smuzhiyun static const unsigned int ld_ldd_lck_pins[] = { 54, };
876*4882a593Smuzhiyun static const unsigned int lr_lcdrom_pins[] = { 73, 54, 57, 58, 59, 60, 61,
877*4882a593Smuzhiyun 		62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 56, 53, 55, };
878*4882a593Smuzhiyun static const unsigned int lvds_analog_pins[] = { 149, 150, 151, 152, 153, 154,
879*4882a593Smuzhiyun 		155, 156, 157, 158, };
880*4882a593Smuzhiyun static const unsigned int nd_df_basic_pins[] = { 44, 43, 42, 41, 40, 39, 38,
881*4882a593Smuzhiyun 		37, 47, 46, 52, 45, 49, 50, 48, };
882*4882a593Smuzhiyun static const unsigned int nd_df_wp_pins[] = { 124, };
883*4882a593Smuzhiyun static const unsigned int nd_df_cs_pins[] = { 51, };
884*4882a593Smuzhiyun static const unsigned int ps_pins[] = { 120, 119, 121, };
885*4882a593Smuzhiyun static const unsigned int ps_no_dir_pins[] = { 119, };
886*4882a593Smuzhiyun static const unsigned int pwc_core_on_pins[] = { 8, };
887*4882a593Smuzhiyun static const unsigned int pwc_ext_on_pins[] = { 6, };
888*4882a593Smuzhiyun static const unsigned int pwc_gpio3_clk_pins[] = { 3, };
889*4882a593Smuzhiyun static const unsigned int pwc_io_on_pins[] = { 9, };
890*4882a593Smuzhiyun static const unsigned int pwc_lowbatt_b_pins0[] = { 4, };
891*4882a593Smuzhiyun static const unsigned int pwc_mem_on_pins[] = { 7, };
892*4882a593Smuzhiyun static const unsigned int pwc_on_key_b_pins0[] = { 5, };
893*4882a593Smuzhiyun static const unsigned int pwc_wakeup_src0_pins[] = { 0, };
894*4882a593Smuzhiyun static const unsigned int pwc_wakeup_src1_pins[] = { 1, };
895*4882a593Smuzhiyun static const unsigned int pwc_wakeup_src2_pins[] = { 2, };
896*4882a593Smuzhiyun static const unsigned int pwc_wakeup_src3_pins[] = { 3, };
897*4882a593Smuzhiyun static const unsigned int pw_cko0_pins0[] = { 123, };
898*4882a593Smuzhiyun static const unsigned int pw_cko0_pins1[] = { 101, };
899*4882a593Smuzhiyun static const unsigned int pw_cko0_pins2[] = { 82, };
900*4882a593Smuzhiyun static const unsigned int pw_cko0_pins3[] = { 162, };
901*4882a593Smuzhiyun static const unsigned int pw_cko1_pins0[] = { 124, };
902*4882a593Smuzhiyun static const unsigned int pw_cko1_pins1[] = { 110, };
903*4882a593Smuzhiyun static const unsigned int pw_cko1_pins2[] = { 163, };
904*4882a593Smuzhiyun static const unsigned int pw_i2s01_clk_pins0[] = { 125, };
905*4882a593Smuzhiyun static const unsigned int pw_i2s01_clk_pins1[] = { 117, };
906*4882a593Smuzhiyun static const unsigned int pw_i2s01_clk_pins2[] = { 132, };
907*4882a593Smuzhiyun static const unsigned int pw_pwm0_pins0[] = { 119, };
908*4882a593Smuzhiyun static const unsigned int pw_pwm0_pins1[] = { 159, };
909*4882a593Smuzhiyun static const unsigned int pw_pwm1_pins0[] = { 120, };
910*4882a593Smuzhiyun static const unsigned int pw_pwm1_pins1[] = { 160, };
911*4882a593Smuzhiyun static const unsigned int pw_pwm1_pins2[] = { 131, };
912*4882a593Smuzhiyun static const unsigned int pw_pwm2_pins0[] = { 121, };
913*4882a593Smuzhiyun static const unsigned int pw_pwm2_pins1[] = { 98, };
914*4882a593Smuzhiyun static const unsigned int pw_pwm2_pins2[] = { 161, };
915*4882a593Smuzhiyun static const unsigned int pw_pwm3_pins0[] = { 122, };
916*4882a593Smuzhiyun static const unsigned int pw_pwm3_pins1[] = { 73, };
917*4882a593Smuzhiyun static const unsigned int pw_pwm_cpu_vol_pins0[] = { 121, };
918*4882a593Smuzhiyun static const unsigned int pw_pwm_cpu_vol_pins1[] = { 98, };
919*4882a593Smuzhiyun static const unsigned int pw_pwm_cpu_vol_pins2[] = { 161, };
920*4882a593Smuzhiyun static const unsigned int pw_backlight_pins0[] = { 122, };
921*4882a593Smuzhiyun static const unsigned int pw_backlight_pins1[] = { 73, };
922*4882a593Smuzhiyun static const unsigned int rg_eth_mac_pins[] = { 108, 103, 104, 105, 106, 107,
923*4882a593Smuzhiyun 		102, 97, 98, 99, 100, 101, };
924*4882a593Smuzhiyun static const unsigned int rg_gmac_phy_intr_n_pins[] = { 111, };
925*4882a593Smuzhiyun static const unsigned int rg_rgmii_mac_pins[] = { 109, 110, };
926*4882a593Smuzhiyun static const unsigned int rg_rgmii_phy_ref_clk_pins0[] = { 111, };
927*4882a593Smuzhiyun static const unsigned int rg_rgmii_phy_ref_clk_pins1[] = { 53, };
928*4882a593Smuzhiyun static const unsigned int sd0_pins[] = { 46, 47, 44, 43, 42, 41, 40, 39, 38,
929*4882a593Smuzhiyun 		37, };
930*4882a593Smuzhiyun static const unsigned int sd0_4bit_pins[] = { 46, 47, 44, 43, 42, 41, };
931*4882a593Smuzhiyun static const unsigned int sd1_pins[] = { 48, 49, 44, 43, 42, 41, 40, 39, 38,
932*4882a593Smuzhiyun 		37, };
933*4882a593Smuzhiyun static const unsigned int sd1_4bit_pins0[] = { 48, 49, 44, 43, 42, 41, };
934*4882a593Smuzhiyun static const unsigned int sd1_4bit_pins1[] = { 48, 49, 40, 39, 38, 37, };
935*4882a593Smuzhiyun static const unsigned int sd2_basic_pins[] = { 31, 32, 33, 34, 35, 36, };
936*4882a593Smuzhiyun static const unsigned int sd2_cdb_pins0[] = { 124, };
937*4882a593Smuzhiyun static const unsigned int sd2_cdb_pins1[] = { 161, };
938*4882a593Smuzhiyun static const unsigned int sd2_wpb_pins0[] = { 123, };
939*4882a593Smuzhiyun static const unsigned int sd2_wpb_pins1[] = { 163, };
940*4882a593Smuzhiyun static const unsigned int sd3_9_pins[] = { 85, 86, 87, 88, 89, 90, };
941*4882a593Smuzhiyun static const unsigned int sd5_pins[] = { 91, 92, 93, 94, 95, 96, };
942*4882a593Smuzhiyun static const unsigned int sd6_pins0[] = { 79, 78, 74, 75, 76, 77, };
943*4882a593Smuzhiyun static const unsigned int sd6_pins1[] = { 101, 99, 100, 110, 109, 111, };
944*4882a593Smuzhiyun static const unsigned int sp0_ext_ldo_on_pins[] = { 4, };
945*4882a593Smuzhiyun static const unsigned int sp0_qspi_pins[] = { 12, 13, 14, 15, 16, 17, };
946*4882a593Smuzhiyun static const unsigned int sp1_spi_pins[] = { 19, 20, 21, 18, };
947*4882a593Smuzhiyun static const unsigned int tpiu_trace_pins[] = { 53, 56, 57, 58, 59, 60, 61,
948*4882a593Smuzhiyun 		62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, };
949*4882a593Smuzhiyun static const unsigned int uart0_pins[] = { 121, 120, 134, 133, };
950*4882a593Smuzhiyun static const unsigned int uart0_nopause_pins[] = { 134, 133, };
951*4882a593Smuzhiyun static const unsigned int uart1_pins[] = { 136, 135, };
952*4882a593Smuzhiyun static const unsigned int uart2_cts_pins0[] = { 132, };
953*4882a593Smuzhiyun static const unsigned int uart2_cts_pins1[] = { 162, };
954*4882a593Smuzhiyun static const unsigned int uart2_rts_pins0[] = { 131, };
955*4882a593Smuzhiyun static const unsigned int uart2_rts_pins1[] = { 161, };
956*4882a593Smuzhiyun static const unsigned int uart2_rxd_pins0[] = { 11, };
957*4882a593Smuzhiyun static const unsigned int uart2_rxd_pins1[] = { 160, };
958*4882a593Smuzhiyun static const unsigned int uart2_rxd_pins2[] = { 130, };
959*4882a593Smuzhiyun static const unsigned int uart2_txd_pins0[] = { 10, };
960*4882a593Smuzhiyun static const unsigned int uart2_txd_pins1[] = { 159, };
961*4882a593Smuzhiyun static const unsigned int uart2_txd_pins2[] = { 129, };
962*4882a593Smuzhiyun static const unsigned int uart3_cts_pins0[] = { 125, };
963*4882a593Smuzhiyun static const unsigned int uart3_cts_pins1[] = { 111, };
964*4882a593Smuzhiyun static const unsigned int uart3_cts_pins2[] = { 140, };
965*4882a593Smuzhiyun static const unsigned int uart3_rts_pins0[] = { 126, };
966*4882a593Smuzhiyun static const unsigned int uart3_rts_pins1[] = { 109, };
967*4882a593Smuzhiyun static const unsigned int uart3_rts_pins2[] = { 139, };
968*4882a593Smuzhiyun static const unsigned int uart3_rxd_pins0[] = { 138, };
969*4882a593Smuzhiyun static const unsigned int uart3_rxd_pins1[] = { 84, };
970*4882a593Smuzhiyun static const unsigned int uart3_rxd_pins2[] = { 162, };
971*4882a593Smuzhiyun static const unsigned int uart3_txd_pins0[] = { 137, };
972*4882a593Smuzhiyun static const unsigned int uart3_txd_pins1[] = { 83, };
973*4882a593Smuzhiyun static const unsigned int uart3_txd_pins2[] = { 161, };
974*4882a593Smuzhiyun static const unsigned int uart4_basic_pins[] = { 140, 139, };
975*4882a593Smuzhiyun static const unsigned int uart4_cts_pins0[] = { 122, };
976*4882a593Smuzhiyun static const unsigned int uart4_cts_pins1[] = { 100, };
977*4882a593Smuzhiyun static const unsigned int uart4_cts_pins2[] = { 117, };
978*4882a593Smuzhiyun static const unsigned int uart4_rts_pins0[] = { 123, };
979*4882a593Smuzhiyun static const unsigned int uart4_rts_pins1[] = { 99, };
980*4882a593Smuzhiyun static const unsigned int uart4_rts_pins2[] = { 116, };
981*4882a593Smuzhiyun static const unsigned int usb0_drvvbus_pins0[] = { 51, };
982*4882a593Smuzhiyun static const unsigned int usb0_drvvbus_pins1[] = { 162, };
983*4882a593Smuzhiyun static const unsigned int usb1_drvvbus_pins0[] = { 134, };
984*4882a593Smuzhiyun static const unsigned int usb1_drvvbus_pins1[] = { 163, };
985*4882a593Smuzhiyun static const unsigned int visbus_dout_pins[] = { 57, 58, 59, 60, 61, 62, 63,
986*4882a593Smuzhiyun 		64, 65, 66, 67, 68, 69, 70, 71, 72, 53, 54, 55, 56, 85, 86,
987*4882a593Smuzhiyun 		87, 88, 89, 90, 91, 92, 93, 94, 95, 96, };
988*4882a593Smuzhiyun static const unsigned int vi_vip1_pins[] = { 74, 75, 76, 77, 78, 79, 80, 81,
989*4882a593Smuzhiyun 		82, 83, 84, 103, 104, 105, 106, 107, 102, 97, 98, };
990*4882a593Smuzhiyun static const unsigned int vi_vip1_ext_pins[] = { 74, 75, 76, 77, 78, 79, 80,
991*4882a593Smuzhiyun 		81, 82, 83, 84, 108, 103, 104, 105, 106, 107, 102, 97, 98,
992*4882a593Smuzhiyun 		99, 100, };
993*4882a593Smuzhiyun static const unsigned int vi_vip1_low8bit_pins[] = { 74, 75, 76, 77, 78, 79,
994*4882a593Smuzhiyun 		80, 81, 82, 83, 84, };
995*4882a593Smuzhiyun static const unsigned int vi_vip1_high8bit_pins[] = { 82, 83, 84, 103, 104,
996*4882a593Smuzhiyun 		105, 106, 107, 102, 97, 98, };
997*4882a593Smuzhiyun 
998*4882a593Smuzhiyun /* definition of pin group table */
999*4882a593Smuzhiyun static struct atlas7_pin_group altas7_pin_groups[] = {
1000*4882a593Smuzhiyun 	GROUP("gnss_gpio_grp", gnss_gpio_pins),
1001*4882a593Smuzhiyun 	GROUP("lcd_vip_gpio_grp", lcd_vip_gpio_pins),
1002*4882a593Smuzhiyun 	GROUP("sdio_i2s_gpio_grp", sdio_i2s_gpio_pins),
1003*4882a593Smuzhiyun 	GROUP("sp_rgmii_gpio_grp", sp_rgmii_gpio_pins),
1004*4882a593Smuzhiyun 	GROUP("lvds_gpio_grp", lvds_gpio_pins),
1005*4882a593Smuzhiyun 	GROUP("jtag_uart_nand_gpio_grp", jtag_uart_nand_gpio_pins),
1006*4882a593Smuzhiyun 	GROUP("rtc_gpio_grp", rtc_gpio_pins),
1007*4882a593Smuzhiyun 	GROUP("audio_ac97_grp", audio_ac97_pins),
1008*4882a593Smuzhiyun 	GROUP("audio_digmic_grp0", audio_digmic_pins0),
1009*4882a593Smuzhiyun 	GROUP("audio_digmic_grp1", audio_digmic_pins1),
1010*4882a593Smuzhiyun 	GROUP("audio_digmic_grp2", audio_digmic_pins2),
1011*4882a593Smuzhiyun 	GROUP("audio_func_dbg_grp", audio_func_dbg_pins),
1012*4882a593Smuzhiyun 	GROUP("audio_i2s_grp", audio_i2s_pins),
1013*4882a593Smuzhiyun 	GROUP("audio_i2s_2ch_grp", audio_i2s_2ch_pins),
1014*4882a593Smuzhiyun 	GROUP("audio_i2s_extclk_grp", audio_i2s_extclk_pins),
1015*4882a593Smuzhiyun 	GROUP("audio_spdif_out_grp0", audio_spdif_out_pins0),
1016*4882a593Smuzhiyun 	GROUP("audio_spdif_out_grp1", audio_spdif_out_pins1),
1017*4882a593Smuzhiyun 	GROUP("audio_spdif_out_grp2", audio_spdif_out_pins2),
1018*4882a593Smuzhiyun 	GROUP("audio_uart0_basic_grp", audio_uart0_basic_pins),
1019*4882a593Smuzhiyun 	GROUP("audio_uart0_urfs_grp0", audio_uart0_urfs_pins0),
1020*4882a593Smuzhiyun 	GROUP("audio_uart0_urfs_grp1", audio_uart0_urfs_pins1),
1021*4882a593Smuzhiyun 	GROUP("audio_uart0_urfs_grp2", audio_uart0_urfs_pins2),
1022*4882a593Smuzhiyun 	GROUP("audio_uart0_urfs_grp3", audio_uart0_urfs_pins3),
1023*4882a593Smuzhiyun 	GROUP("audio_uart1_basic_grp", audio_uart1_basic_pins),
1024*4882a593Smuzhiyun 	GROUP("audio_uart1_urfs_grp0", audio_uart1_urfs_pins0),
1025*4882a593Smuzhiyun 	GROUP("audio_uart1_urfs_grp1", audio_uart1_urfs_pins1),
1026*4882a593Smuzhiyun 	GROUP("audio_uart1_urfs_grp2", audio_uart1_urfs_pins2),
1027*4882a593Smuzhiyun 	GROUP("audio_uart2_urfs_grp0", audio_uart2_urfs_pins0),
1028*4882a593Smuzhiyun 	GROUP("audio_uart2_urfs_grp1", audio_uart2_urfs_pins1),
1029*4882a593Smuzhiyun 	GROUP("audio_uart2_urfs_grp2", audio_uart2_urfs_pins2),
1030*4882a593Smuzhiyun 	GROUP("audio_uart2_urxd_grp0", audio_uart2_urxd_pins0),
1031*4882a593Smuzhiyun 	GROUP("audio_uart2_urxd_grp1", audio_uart2_urxd_pins1),
1032*4882a593Smuzhiyun 	GROUP("audio_uart2_urxd_grp2", audio_uart2_urxd_pins2),
1033*4882a593Smuzhiyun 	GROUP("audio_uart2_usclk_grp0", audio_uart2_usclk_pins0),
1034*4882a593Smuzhiyun 	GROUP("audio_uart2_usclk_grp1", audio_uart2_usclk_pins1),
1035*4882a593Smuzhiyun 	GROUP("audio_uart2_usclk_grp2", audio_uart2_usclk_pins2),
1036*4882a593Smuzhiyun 	GROUP("audio_uart2_utfs_grp0", audio_uart2_utfs_pins0),
1037*4882a593Smuzhiyun 	GROUP("audio_uart2_utfs_grp1", audio_uart2_utfs_pins1),
1038*4882a593Smuzhiyun 	GROUP("audio_uart2_utfs_grp2", audio_uart2_utfs_pins2),
1039*4882a593Smuzhiyun 	GROUP("audio_uart2_utxd_grp0", audio_uart2_utxd_pins0),
1040*4882a593Smuzhiyun 	GROUP("audio_uart2_utxd_grp1", audio_uart2_utxd_pins1),
1041*4882a593Smuzhiyun 	GROUP("audio_uart2_utxd_grp2", audio_uart2_utxd_pins2),
1042*4882a593Smuzhiyun 	GROUP("c_can_trnsvr_en_grp0", c_can_trnsvr_en_pins0),
1043*4882a593Smuzhiyun 	GROUP("c_can_trnsvr_en_grp1", c_can_trnsvr_en_pins1),
1044*4882a593Smuzhiyun 	GROUP("c_can_trnsvr_intr_grp", c_can_trnsvr_intr_pins),
1045*4882a593Smuzhiyun 	GROUP("c_can_trnsvr_stb_n_grp", c_can_trnsvr_stb_n_pins),
1046*4882a593Smuzhiyun 	GROUP("c0_can_rxd_trnsv0_grp", c0_can_rxd_trnsv0_pins),
1047*4882a593Smuzhiyun 	GROUP("c0_can_rxd_trnsv1_grp", c0_can_rxd_trnsv1_pins),
1048*4882a593Smuzhiyun 	GROUP("c0_can_txd_trnsv0_grp", c0_can_txd_trnsv0_pins),
1049*4882a593Smuzhiyun 	GROUP("c0_can_txd_trnsv1_grp", c0_can_txd_trnsv1_pins),
1050*4882a593Smuzhiyun 	GROUP("c1_can_rxd_grp0", c1_can_rxd_pins0),
1051*4882a593Smuzhiyun 	GROUP("c1_can_rxd_grp1", c1_can_rxd_pins1),
1052*4882a593Smuzhiyun 	GROUP("c1_can_rxd_grp2", c1_can_rxd_pins2),
1053*4882a593Smuzhiyun 	GROUP("c1_can_rxd_grp3", c1_can_rxd_pins3),
1054*4882a593Smuzhiyun 	GROUP("c1_can_txd_grp0", c1_can_txd_pins0),
1055*4882a593Smuzhiyun 	GROUP("c1_can_txd_grp1", c1_can_txd_pins1),
1056*4882a593Smuzhiyun 	GROUP("c1_can_txd_grp2", c1_can_txd_pins2),
1057*4882a593Smuzhiyun 	GROUP("c1_can_txd_grp3", c1_can_txd_pins3),
1058*4882a593Smuzhiyun 	GROUP("ca_audio_lpc_grp", ca_audio_lpc_pins),
1059*4882a593Smuzhiyun 	GROUP("ca_bt_lpc_grp", ca_bt_lpc_pins),
1060*4882a593Smuzhiyun 	GROUP("ca_coex_grp", ca_coex_pins),
1061*4882a593Smuzhiyun 	GROUP("ca_curator_lpc_grp", ca_curator_lpc_pins),
1062*4882a593Smuzhiyun 	GROUP("ca_pcm_debug_grp", ca_pcm_debug_pins),
1063*4882a593Smuzhiyun 	GROUP("ca_pio_grp", ca_pio_pins),
1064*4882a593Smuzhiyun 	GROUP("ca_sdio_debug_grp", ca_sdio_debug_pins),
1065*4882a593Smuzhiyun 	GROUP("ca_spi_grp", ca_spi_pins),
1066*4882a593Smuzhiyun 	GROUP("ca_trb_grp", ca_trb_pins),
1067*4882a593Smuzhiyun 	GROUP("ca_uart_debug_grp", ca_uart_debug_pins),
1068*4882a593Smuzhiyun 	GROUP("clkc_grp0", clkc_pins0),
1069*4882a593Smuzhiyun 	GROUP("clkc_grp1", clkc_pins1),
1070*4882a593Smuzhiyun 	GROUP("gn_gnss_i2c_grp", gn_gnss_i2c_pins),
1071*4882a593Smuzhiyun 	GROUP("gn_gnss_uart_nopause_grp", gn_gnss_uart_nopause_pins),
1072*4882a593Smuzhiyun 	GROUP("gn_gnss_uart_grp", gn_gnss_uart_pins),
1073*4882a593Smuzhiyun 	GROUP("gn_trg_spi_grp0", gn_trg_spi_pins0),
1074*4882a593Smuzhiyun 	GROUP("gn_trg_spi_grp1", gn_trg_spi_pins1),
1075*4882a593Smuzhiyun 	GROUP("cvbs_dbg_grp", cvbs_dbg_pins),
1076*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp0", cvbs_dbg_test_pins0),
1077*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp1", cvbs_dbg_test_pins1),
1078*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp2", cvbs_dbg_test_pins2),
1079*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp3", cvbs_dbg_test_pins3),
1080*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp4", cvbs_dbg_test_pins4),
1081*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp5", cvbs_dbg_test_pins5),
1082*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp6", cvbs_dbg_test_pins6),
1083*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp7", cvbs_dbg_test_pins7),
1084*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp8", cvbs_dbg_test_pins8),
1085*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp9", cvbs_dbg_test_pins9),
1086*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp10", cvbs_dbg_test_pins10),
1087*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp11", cvbs_dbg_test_pins11),
1088*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp12", cvbs_dbg_test_pins12),
1089*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp13", cvbs_dbg_test_pins13),
1090*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp14", cvbs_dbg_test_pins14),
1091*4882a593Smuzhiyun 	GROUP("cvbs_dbg_test_grp15", cvbs_dbg_test_pins15),
1092*4882a593Smuzhiyun 	GROUP("gn_gnss_power_grp", gn_gnss_power_pins),
1093*4882a593Smuzhiyun 	GROUP("gn_gnss_sw_status_grp", gn_gnss_sw_status_pins),
1094*4882a593Smuzhiyun 	GROUP("gn_gnss_eclk_grp", gn_gnss_eclk_pins),
1095*4882a593Smuzhiyun 	GROUP("gn_gnss_irq1_grp0", gn_gnss_irq1_pins0),
1096*4882a593Smuzhiyun 	GROUP("gn_gnss_irq2_grp0", gn_gnss_irq2_pins0),
1097*4882a593Smuzhiyun 	GROUP("gn_gnss_tm_grp", gn_gnss_tm_pins),
1098*4882a593Smuzhiyun 	GROUP("gn_gnss_tsync_grp", gn_gnss_tsync_pins),
1099*4882a593Smuzhiyun 	GROUP("gn_io_gnsssys_sw_cfg_grp", gn_io_gnsssys_sw_cfg_pins),
1100*4882a593Smuzhiyun 	GROUP("gn_trg_grp0", gn_trg_pins0),
1101*4882a593Smuzhiyun 	GROUP("gn_trg_grp1", gn_trg_pins1),
1102*4882a593Smuzhiyun 	GROUP("gn_trg_shutdown_grp0", gn_trg_shutdown_pins0),
1103*4882a593Smuzhiyun 	GROUP("gn_trg_shutdown_grp1", gn_trg_shutdown_pins1),
1104*4882a593Smuzhiyun 	GROUP("gn_trg_shutdown_grp2", gn_trg_shutdown_pins2),
1105*4882a593Smuzhiyun 	GROUP("gn_trg_shutdown_grp3", gn_trg_shutdown_pins3),
1106*4882a593Smuzhiyun 	GROUP("i2c0_grp", i2c0_pins),
1107*4882a593Smuzhiyun 	GROUP("i2c1_grp", i2c1_pins),
1108*4882a593Smuzhiyun 	GROUP("i2s0_grp", i2s0_pins),
1109*4882a593Smuzhiyun 	GROUP("i2s1_basic_grp", i2s1_basic_pins),
1110*4882a593Smuzhiyun 	GROUP("i2s1_rxd0_grp0", i2s1_rxd0_pins0),
1111*4882a593Smuzhiyun 	GROUP("i2s1_rxd0_grp1", i2s1_rxd0_pins1),
1112*4882a593Smuzhiyun 	GROUP("i2s1_rxd0_grp2", i2s1_rxd0_pins2),
1113*4882a593Smuzhiyun 	GROUP("i2s1_rxd0_grp3", i2s1_rxd0_pins3),
1114*4882a593Smuzhiyun 	GROUP("i2s1_rxd0_grp4", i2s1_rxd0_pins4),
1115*4882a593Smuzhiyun 	GROUP("i2s1_rxd1_grp0", i2s1_rxd1_pins0),
1116*4882a593Smuzhiyun 	GROUP("i2s1_rxd1_grp1", i2s1_rxd1_pins1),
1117*4882a593Smuzhiyun 	GROUP("i2s1_rxd1_grp2", i2s1_rxd1_pins2),
1118*4882a593Smuzhiyun 	GROUP("i2s1_rxd1_grp3", i2s1_rxd1_pins3),
1119*4882a593Smuzhiyun 	GROUP("i2s1_rxd1_grp4", i2s1_rxd1_pins4),
1120*4882a593Smuzhiyun 	GROUP("jtag_jt_dbg_nsrst_grp", jtag_jt_dbg_nsrst_pins),
1121*4882a593Smuzhiyun 	GROUP("jtag_ntrst_grp0", jtag_ntrst_pins0),
1122*4882a593Smuzhiyun 	GROUP("jtag_ntrst_grp1", jtag_ntrst_pins1),
1123*4882a593Smuzhiyun 	GROUP("jtag_swdiotms_grp0", jtag_swdiotms_pins0),
1124*4882a593Smuzhiyun 	GROUP("jtag_swdiotms_grp1", jtag_swdiotms_pins1),
1125*4882a593Smuzhiyun 	GROUP("jtag_tck_grp0", jtag_tck_pins0),
1126*4882a593Smuzhiyun 	GROUP("jtag_tck_grp1", jtag_tck_pins1),
1127*4882a593Smuzhiyun 	GROUP("jtag_tdi_grp0", jtag_tdi_pins0),
1128*4882a593Smuzhiyun 	GROUP("jtag_tdi_grp1", jtag_tdi_pins1),
1129*4882a593Smuzhiyun 	GROUP("jtag_tdo_grp0", jtag_tdo_pins0),
1130*4882a593Smuzhiyun 	GROUP("jtag_tdo_grp1", jtag_tdo_pins1),
1131*4882a593Smuzhiyun 	GROUP("ks_kas_spi_grp0", ks_kas_spi_pins0),
1132*4882a593Smuzhiyun 	GROUP("ld_ldd_grp", ld_ldd_pins),
1133*4882a593Smuzhiyun 	GROUP("ld_ldd_16bit_grp", ld_ldd_16bit_pins),
1134*4882a593Smuzhiyun 	GROUP("ld_ldd_fck_grp", ld_ldd_fck_pins),
1135*4882a593Smuzhiyun 	GROUP("ld_ldd_lck_grp", ld_ldd_lck_pins),
1136*4882a593Smuzhiyun 	GROUP("lr_lcdrom_grp", lr_lcdrom_pins),
1137*4882a593Smuzhiyun 	GROUP("lvds_analog_grp", lvds_analog_pins),
1138*4882a593Smuzhiyun 	GROUP("nd_df_basic_grp", nd_df_basic_pins),
1139*4882a593Smuzhiyun 	GROUP("nd_df_wp_grp", nd_df_wp_pins),
1140*4882a593Smuzhiyun 	GROUP("nd_df_cs_grp", nd_df_cs_pins),
1141*4882a593Smuzhiyun 	GROUP("ps_grp", ps_pins),
1142*4882a593Smuzhiyun 	GROUP("ps_no_dir_grp", ps_no_dir_pins),
1143*4882a593Smuzhiyun 	GROUP("pwc_core_on_grp", pwc_core_on_pins),
1144*4882a593Smuzhiyun 	GROUP("pwc_ext_on_grp", pwc_ext_on_pins),
1145*4882a593Smuzhiyun 	GROUP("pwc_gpio3_clk_grp", pwc_gpio3_clk_pins),
1146*4882a593Smuzhiyun 	GROUP("pwc_io_on_grp", pwc_io_on_pins),
1147*4882a593Smuzhiyun 	GROUP("pwc_lowbatt_b_grp0", pwc_lowbatt_b_pins0),
1148*4882a593Smuzhiyun 	GROUP("pwc_mem_on_grp", pwc_mem_on_pins),
1149*4882a593Smuzhiyun 	GROUP("pwc_on_key_b_grp0", pwc_on_key_b_pins0),
1150*4882a593Smuzhiyun 	GROUP("pwc_wakeup_src0_grp", pwc_wakeup_src0_pins),
1151*4882a593Smuzhiyun 	GROUP("pwc_wakeup_src1_grp", pwc_wakeup_src1_pins),
1152*4882a593Smuzhiyun 	GROUP("pwc_wakeup_src2_grp", pwc_wakeup_src2_pins),
1153*4882a593Smuzhiyun 	GROUP("pwc_wakeup_src3_grp", pwc_wakeup_src3_pins),
1154*4882a593Smuzhiyun 	GROUP("pw_cko0_grp0", pw_cko0_pins0),
1155*4882a593Smuzhiyun 	GROUP("pw_cko0_grp1", pw_cko0_pins1),
1156*4882a593Smuzhiyun 	GROUP("pw_cko0_grp2", pw_cko0_pins2),
1157*4882a593Smuzhiyun 	GROUP("pw_cko0_grp3", pw_cko0_pins3),
1158*4882a593Smuzhiyun 	GROUP("pw_cko1_grp0", pw_cko1_pins0),
1159*4882a593Smuzhiyun 	GROUP("pw_cko1_grp1", pw_cko1_pins1),
1160*4882a593Smuzhiyun 	GROUP("pw_cko1_grp2", pw_cko1_pins2),
1161*4882a593Smuzhiyun 	GROUP("pw_i2s01_clk_grp0", pw_i2s01_clk_pins0),
1162*4882a593Smuzhiyun 	GROUP("pw_i2s01_clk_grp1", pw_i2s01_clk_pins1),
1163*4882a593Smuzhiyun 	GROUP("pw_i2s01_clk_grp2", pw_i2s01_clk_pins2),
1164*4882a593Smuzhiyun 	GROUP("pw_pwm0_grp0", pw_pwm0_pins0),
1165*4882a593Smuzhiyun 	GROUP("pw_pwm0_grp1", pw_pwm0_pins1),
1166*4882a593Smuzhiyun 	GROUP("pw_pwm1_grp0", pw_pwm1_pins0),
1167*4882a593Smuzhiyun 	GROUP("pw_pwm1_grp1", pw_pwm1_pins1),
1168*4882a593Smuzhiyun 	GROUP("pw_pwm1_grp2", pw_pwm1_pins2),
1169*4882a593Smuzhiyun 	GROUP("pw_pwm2_grp0", pw_pwm2_pins0),
1170*4882a593Smuzhiyun 	GROUP("pw_pwm2_grp1", pw_pwm2_pins1),
1171*4882a593Smuzhiyun 	GROUP("pw_pwm2_grp2", pw_pwm2_pins2),
1172*4882a593Smuzhiyun 	GROUP("pw_pwm3_grp0", pw_pwm3_pins0),
1173*4882a593Smuzhiyun 	GROUP("pw_pwm3_grp1", pw_pwm3_pins1),
1174*4882a593Smuzhiyun 	GROUP("pw_pwm_cpu_vol_grp0", pw_pwm_cpu_vol_pins0),
1175*4882a593Smuzhiyun 	GROUP("pw_pwm_cpu_vol_grp1", pw_pwm_cpu_vol_pins1),
1176*4882a593Smuzhiyun 	GROUP("pw_pwm_cpu_vol_grp2", pw_pwm_cpu_vol_pins2),
1177*4882a593Smuzhiyun 	GROUP("pw_backlight_grp0", pw_backlight_pins0),
1178*4882a593Smuzhiyun 	GROUP("pw_backlight_grp1", pw_backlight_pins1),
1179*4882a593Smuzhiyun 	GROUP("rg_eth_mac_grp", rg_eth_mac_pins),
1180*4882a593Smuzhiyun 	GROUP("rg_gmac_phy_intr_n_grp", rg_gmac_phy_intr_n_pins),
1181*4882a593Smuzhiyun 	GROUP("rg_rgmii_mac_grp", rg_rgmii_mac_pins),
1182*4882a593Smuzhiyun 	GROUP("rg_rgmii_phy_ref_clk_grp0", rg_rgmii_phy_ref_clk_pins0),
1183*4882a593Smuzhiyun 	GROUP("rg_rgmii_phy_ref_clk_grp1", rg_rgmii_phy_ref_clk_pins1),
1184*4882a593Smuzhiyun 	GROUP("sd0_grp", sd0_pins),
1185*4882a593Smuzhiyun 	GROUP("sd0_4bit_grp", sd0_4bit_pins),
1186*4882a593Smuzhiyun 	GROUP("sd1_grp", sd1_pins),
1187*4882a593Smuzhiyun 	GROUP("sd1_4bit_grp0", sd1_4bit_pins0),
1188*4882a593Smuzhiyun 	GROUP("sd1_4bit_grp1", sd1_4bit_pins1),
1189*4882a593Smuzhiyun 	GROUP("sd2_basic_grp", sd2_basic_pins),
1190*4882a593Smuzhiyun 	GROUP("sd2_cdb_grp0", sd2_cdb_pins0),
1191*4882a593Smuzhiyun 	GROUP("sd2_cdb_grp1", sd2_cdb_pins1),
1192*4882a593Smuzhiyun 	GROUP("sd2_wpb_grp0", sd2_wpb_pins0),
1193*4882a593Smuzhiyun 	GROUP("sd2_wpb_grp1", sd2_wpb_pins1),
1194*4882a593Smuzhiyun 	GROUP("sd3_9_grp", sd3_9_pins),
1195*4882a593Smuzhiyun 	GROUP("sd5_grp", sd5_pins),
1196*4882a593Smuzhiyun 	GROUP("sd6_grp0", sd6_pins0),
1197*4882a593Smuzhiyun 	GROUP("sd6_grp1", sd6_pins1),
1198*4882a593Smuzhiyun 	GROUP("sp0_ext_ldo_on_grp", sp0_ext_ldo_on_pins),
1199*4882a593Smuzhiyun 	GROUP("sp0_qspi_grp", sp0_qspi_pins),
1200*4882a593Smuzhiyun 	GROUP("sp1_spi_grp", sp1_spi_pins),
1201*4882a593Smuzhiyun 	GROUP("tpiu_trace_grp", tpiu_trace_pins),
1202*4882a593Smuzhiyun 	GROUP("uart0_grp", uart0_pins),
1203*4882a593Smuzhiyun 	GROUP("uart0_nopause_grp", uart0_nopause_pins),
1204*4882a593Smuzhiyun 	GROUP("uart1_grp", uart1_pins),
1205*4882a593Smuzhiyun 	GROUP("uart2_cts_grp0", uart2_cts_pins0),
1206*4882a593Smuzhiyun 	GROUP("uart2_cts_grp1", uart2_cts_pins1),
1207*4882a593Smuzhiyun 	GROUP("uart2_rts_grp0", uart2_rts_pins0),
1208*4882a593Smuzhiyun 	GROUP("uart2_rts_grp1", uart2_rts_pins1),
1209*4882a593Smuzhiyun 	GROUP("uart2_rxd_grp0", uart2_rxd_pins0),
1210*4882a593Smuzhiyun 	GROUP("uart2_rxd_grp1", uart2_rxd_pins1),
1211*4882a593Smuzhiyun 	GROUP("uart2_rxd_grp2", uart2_rxd_pins2),
1212*4882a593Smuzhiyun 	GROUP("uart2_txd_grp0", uart2_txd_pins0),
1213*4882a593Smuzhiyun 	GROUP("uart2_txd_grp1", uart2_txd_pins1),
1214*4882a593Smuzhiyun 	GROUP("uart2_txd_grp2", uart2_txd_pins2),
1215*4882a593Smuzhiyun 	GROUP("uart3_cts_grp0", uart3_cts_pins0),
1216*4882a593Smuzhiyun 	GROUP("uart3_cts_grp1", uart3_cts_pins1),
1217*4882a593Smuzhiyun 	GROUP("uart3_cts_grp2", uart3_cts_pins2),
1218*4882a593Smuzhiyun 	GROUP("uart3_rts_grp0", uart3_rts_pins0),
1219*4882a593Smuzhiyun 	GROUP("uart3_rts_grp1", uart3_rts_pins1),
1220*4882a593Smuzhiyun 	GROUP("uart3_rts_grp2", uart3_rts_pins2),
1221*4882a593Smuzhiyun 	GROUP("uart3_rxd_grp0", uart3_rxd_pins0),
1222*4882a593Smuzhiyun 	GROUP("uart3_rxd_grp1", uart3_rxd_pins1),
1223*4882a593Smuzhiyun 	GROUP("uart3_rxd_grp2", uart3_rxd_pins2),
1224*4882a593Smuzhiyun 	GROUP("uart3_txd_grp0", uart3_txd_pins0),
1225*4882a593Smuzhiyun 	GROUP("uart3_txd_grp1", uart3_txd_pins1),
1226*4882a593Smuzhiyun 	GROUP("uart3_txd_grp2", uart3_txd_pins2),
1227*4882a593Smuzhiyun 	GROUP("uart4_basic_grp", uart4_basic_pins),
1228*4882a593Smuzhiyun 	GROUP("uart4_cts_grp0", uart4_cts_pins0),
1229*4882a593Smuzhiyun 	GROUP("uart4_cts_grp1", uart4_cts_pins1),
1230*4882a593Smuzhiyun 	GROUP("uart4_cts_grp2", uart4_cts_pins2),
1231*4882a593Smuzhiyun 	GROUP("uart4_rts_grp0", uart4_rts_pins0),
1232*4882a593Smuzhiyun 	GROUP("uart4_rts_grp1", uart4_rts_pins1),
1233*4882a593Smuzhiyun 	GROUP("uart4_rts_grp2", uart4_rts_pins2),
1234*4882a593Smuzhiyun 	GROUP("usb0_drvvbus_grp0", usb0_drvvbus_pins0),
1235*4882a593Smuzhiyun 	GROUP("usb0_drvvbus_grp1", usb0_drvvbus_pins1),
1236*4882a593Smuzhiyun 	GROUP("usb1_drvvbus_grp0", usb1_drvvbus_pins0),
1237*4882a593Smuzhiyun 	GROUP("usb1_drvvbus_grp1", usb1_drvvbus_pins1),
1238*4882a593Smuzhiyun 	GROUP("visbus_dout_grp", visbus_dout_pins),
1239*4882a593Smuzhiyun 	GROUP("vi_vip1_grp", vi_vip1_pins),
1240*4882a593Smuzhiyun 	GROUP("vi_vip1_ext_grp", vi_vip1_ext_pins),
1241*4882a593Smuzhiyun 	GROUP("vi_vip1_low8bit_grp", vi_vip1_low8bit_pins),
1242*4882a593Smuzhiyun 	GROUP("vi_vip1_high8bit_grp", vi_vip1_high8bit_pins),
1243*4882a593Smuzhiyun };
1244*4882a593Smuzhiyun 
1245*4882a593Smuzhiyun /* How many groups that a function can use */
1246*4882a593Smuzhiyun static const char * const gnss_gpio_grp[] = { "gnss_gpio_grp", };
1247*4882a593Smuzhiyun static const char * const lcd_vip_gpio_grp[] = { "lcd_vip_gpio_grp", };
1248*4882a593Smuzhiyun static const char * const sdio_i2s_gpio_grp[] = { "sdio_i2s_gpio_grp", };
1249*4882a593Smuzhiyun static const char * const sp_rgmii_gpio_grp[] = { "sp_rgmii_gpio_grp", };
1250*4882a593Smuzhiyun static const char * const lvds_gpio_grp[] = { "lvds_gpio_grp", };
1251*4882a593Smuzhiyun static const char * const jtag_uart_nand_gpio_grp[] = {
1252*4882a593Smuzhiyun 				"jtag_uart_nand_gpio_grp", };
1253*4882a593Smuzhiyun static const char * const rtc_gpio_grp[] = { "rtc_gpio_grp", };
1254*4882a593Smuzhiyun static const char * const audio_ac97_grp[] = { "audio_ac97_grp", };
1255*4882a593Smuzhiyun static const char * const audio_digmic_grp0[] = { "audio_digmic_grp0", };
1256*4882a593Smuzhiyun static const char * const audio_digmic_grp1[] = { "audio_digmic_grp1", };
1257*4882a593Smuzhiyun static const char * const audio_digmic_grp2[] = { "audio_digmic_grp2", };
1258*4882a593Smuzhiyun static const char * const audio_func_dbg_grp[] = { "audio_func_dbg_grp", };
1259*4882a593Smuzhiyun static const char * const audio_i2s_grp[] = { "audio_i2s_grp", };
1260*4882a593Smuzhiyun static const char * const audio_i2s_2ch_grp[] = { "audio_i2s_2ch_grp", };
1261*4882a593Smuzhiyun static const char * const audio_i2s_extclk_grp[] = { "audio_i2s_extclk_grp", };
1262*4882a593Smuzhiyun static const char * const audio_spdif_out_grp0[] = { "audio_spdif_out_grp0", };
1263*4882a593Smuzhiyun static const char * const audio_spdif_out_grp1[] = { "audio_spdif_out_grp1", };
1264*4882a593Smuzhiyun static const char * const audio_spdif_out_grp2[] = { "audio_spdif_out_grp2", };
1265*4882a593Smuzhiyun static const char * const audio_uart0_basic_grp[] = {
1266*4882a593Smuzhiyun 				"audio_uart0_basic_grp", };
1267*4882a593Smuzhiyun static const char * const audio_uart0_urfs_grp0[] = {
1268*4882a593Smuzhiyun 				"audio_uart0_urfs_grp0", };
1269*4882a593Smuzhiyun static const char * const audio_uart0_urfs_grp1[] = {
1270*4882a593Smuzhiyun 				"audio_uart0_urfs_grp1", };
1271*4882a593Smuzhiyun static const char * const audio_uart0_urfs_grp2[] = {
1272*4882a593Smuzhiyun 				"audio_uart0_urfs_grp2", };
1273*4882a593Smuzhiyun static const char * const audio_uart0_urfs_grp3[] = {
1274*4882a593Smuzhiyun 				"audio_uart0_urfs_grp3", };
1275*4882a593Smuzhiyun static const char * const audio_uart1_basic_grp[] = {
1276*4882a593Smuzhiyun 				"audio_uart1_basic_grp", };
1277*4882a593Smuzhiyun static const char * const audio_uart1_urfs_grp0[] = {
1278*4882a593Smuzhiyun 				"audio_uart1_urfs_grp0", };
1279*4882a593Smuzhiyun static const char * const audio_uart1_urfs_grp1[] = {
1280*4882a593Smuzhiyun 				"audio_uart1_urfs_grp1", };
1281*4882a593Smuzhiyun static const char * const audio_uart1_urfs_grp2[] = {
1282*4882a593Smuzhiyun 				"audio_uart1_urfs_grp2", };
1283*4882a593Smuzhiyun static const char * const audio_uart2_urfs_grp0[] = {
1284*4882a593Smuzhiyun 				"audio_uart2_urfs_grp0", };
1285*4882a593Smuzhiyun static const char * const audio_uart2_urfs_grp1[] = {
1286*4882a593Smuzhiyun 				"audio_uart2_urfs_grp1", };
1287*4882a593Smuzhiyun static const char * const audio_uart2_urfs_grp2[] = {
1288*4882a593Smuzhiyun 				"audio_uart2_urfs_grp2", };
1289*4882a593Smuzhiyun static const char * const audio_uart2_urxd_grp0[] = {
1290*4882a593Smuzhiyun 				"audio_uart2_urxd_grp0", };
1291*4882a593Smuzhiyun static const char * const audio_uart2_urxd_grp1[] = {
1292*4882a593Smuzhiyun 				"audio_uart2_urxd_grp1", };
1293*4882a593Smuzhiyun static const char * const audio_uart2_urxd_grp2[] = {
1294*4882a593Smuzhiyun 				"audio_uart2_urxd_grp2", };
1295*4882a593Smuzhiyun static const char * const audio_uart2_usclk_grp0[] = {
1296*4882a593Smuzhiyun 				"audio_uart2_usclk_grp0", };
1297*4882a593Smuzhiyun static const char * const audio_uart2_usclk_grp1[] = {
1298*4882a593Smuzhiyun 				"audio_uart2_usclk_grp1", };
1299*4882a593Smuzhiyun static const char * const audio_uart2_usclk_grp2[] = {
1300*4882a593Smuzhiyun 				"audio_uart2_usclk_grp2", };
1301*4882a593Smuzhiyun static const char * const audio_uart2_utfs_grp0[] = {
1302*4882a593Smuzhiyun 				"audio_uart2_utfs_grp0", };
1303*4882a593Smuzhiyun static const char * const audio_uart2_utfs_grp1[] = {
1304*4882a593Smuzhiyun 				"audio_uart2_utfs_grp1", };
1305*4882a593Smuzhiyun static const char * const audio_uart2_utfs_grp2[] = {
1306*4882a593Smuzhiyun 				"audio_uart2_utfs_grp2", };
1307*4882a593Smuzhiyun static const char * const audio_uart2_utxd_grp0[] = {
1308*4882a593Smuzhiyun 				"audio_uart2_utxd_grp0", };
1309*4882a593Smuzhiyun static const char * const audio_uart2_utxd_grp1[] = {
1310*4882a593Smuzhiyun 				"audio_uart2_utxd_grp1", };
1311*4882a593Smuzhiyun static const char * const audio_uart2_utxd_grp2[] = {
1312*4882a593Smuzhiyun 				"audio_uart2_utxd_grp2", };
1313*4882a593Smuzhiyun static const char * const c_can_trnsvr_en_grp0[] = { "c_can_trnsvr_en_grp0", };
1314*4882a593Smuzhiyun static const char * const c_can_trnsvr_en_grp1[] = { "c_can_trnsvr_en_grp1", };
1315*4882a593Smuzhiyun static const char * const c_can_trnsvr_intr_grp[] = {
1316*4882a593Smuzhiyun 				"c_can_trnsvr_intr_grp", };
1317*4882a593Smuzhiyun static const char * const c_can_trnsvr_stb_n_grp[] = {
1318*4882a593Smuzhiyun 				"c_can_trnsvr_stb_n_grp", };
1319*4882a593Smuzhiyun static const char * const c0_can_rxd_trnsv0_grp[] = {
1320*4882a593Smuzhiyun 				"c0_can_rxd_trnsv0_grp", };
1321*4882a593Smuzhiyun static const char * const c0_can_rxd_trnsv1_grp[] = {
1322*4882a593Smuzhiyun 				"c0_can_rxd_trnsv1_grp", };
1323*4882a593Smuzhiyun static const char * const c0_can_txd_trnsv0_grp[] = {
1324*4882a593Smuzhiyun 				"c0_can_txd_trnsv0_grp", };
1325*4882a593Smuzhiyun static const char * const c0_can_txd_trnsv1_grp[] = {
1326*4882a593Smuzhiyun 				"c0_can_txd_trnsv1_grp", };
1327*4882a593Smuzhiyun static const char * const c1_can_rxd_grp0[] = { "c1_can_rxd_grp0", };
1328*4882a593Smuzhiyun static const char * const c1_can_rxd_grp1[] = { "c1_can_rxd_grp1", };
1329*4882a593Smuzhiyun static const char * const c1_can_rxd_grp2[] = { "c1_can_rxd_grp2", };
1330*4882a593Smuzhiyun static const char * const c1_can_rxd_grp3[] = { "c1_can_rxd_grp3", };
1331*4882a593Smuzhiyun static const char * const c1_can_txd_grp0[] = { "c1_can_txd_grp0", };
1332*4882a593Smuzhiyun static const char * const c1_can_txd_grp1[] = { "c1_can_txd_grp1", };
1333*4882a593Smuzhiyun static const char * const c1_can_txd_grp2[] = { "c1_can_txd_grp2", };
1334*4882a593Smuzhiyun static const char * const c1_can_txd_grp3[] = { "c1_can_txd_grp3", };
1335*4882a593Smuzhiyun static const char * const ca_audio_lpc_grp[] = { "ca_audio_lpc_grp", };
1336*4882a593Smuzhiyun static const char * const ca_bt_lpc_grp[] = { "ca_bt_lpc_grp", };
1337*4882a593Smuzhiyun static const char * const ca_coex_grp[] = { "ca_coex_grp", };
1338*4882a593Smuzhiyun static const char * const ca_curator_lpc_grp[] = { "ca_curator_lpc_grp", };
1339*4882a593Smuzhiyun static const char * const ca_pcm_debug_grp[] = { "ca_pcm_debug_grp", };
1340*4882a593Smuzhiyun static const char * const ca_pio_grp[] = { "ca_pio_grp", };
1341*4882a593Smuzhiyun static const char * const ca_sdio_debug_grp[] = { "ca_sdio_debug_grp", };
1342*4882a593Smuzhiyun static const char * const ca_spi_grp[] = { "ca_spi_grp", };
1343*4882a593Smuzhiyun static const char * const ca_trb_grp[] = { "ca_trb_grp", };
1344*4882a593Smuzhiyun static const char * const ca_uart_debug_grp[] = { "ca_uart_debug_grp", };
1345*4882a593Smuzhiyun static const char * const clkc_grp0[] = { "clkc_grp0", };
1346*4882a593Smuzhiyun static const char * const clkc_grp1[] = { "clkc_grp1", };
1347*4882a593Smuzhiyun static const char * const gn_gnss_i2c_grp[] = { "gn_gnss_i2c_grp", };
1348*4882a593Smuzhiyun static const char * const gn_gnss_uart_nopause_grp[] = {
1349*4882a593Smuzhiyun 				"gn_gnss_uart_nopause_grp", };
1350*4882a593Smuzhiyun static const char * const gn_gnss_uart_grp[] = { "gn_gnss_uart_grp", };
1351*4882a593Smuzhiyun static const char * const gn_trg_spi_grp0[] = { "gn_trg_spi_grp0", };
1352*4882a593Smuzhiyun static const char * const gn_trg_spi_grp1[] = { "gn_trg_spi_grp1", };
1353*4882a593Smuzhiyun static const char * const cvbs_dbg_grp[] = { "cvbs_dbg_grp", };
1354*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp0[] = { "cvbs_dbg_test_grp0", };
1355*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp1[] = { "cvbs_dbg_test_grp1", };
1356*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp2[] = { "cvbs_dbg_test_grp2", };
1357*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp3[] = { "cvbs_dbg_test_grp3", };
1358*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp4[] = { "cvbs_dbg_test_grp4", };
1359*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp5[] = { "cvbs_dbg_test_grp5", };
1360*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp6[] = { "cvbs_dbg_test_grp6", };
1361*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp7[] = { "cvbs_dbg_test_grp7", };
1362*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp8[] = { "cvbs_dbg_test_grp8", };
1363*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp9[] = { "cvbs_dbg_test_grp9", };
1364*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp10[] = { "cvbs_dbg_test_grp10", };
1365*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp11[] = { "cvbs_dbg_test_grp11", };
1366*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp12[] = { "cvbs_dbg_test_grp12", };
1367*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp13[] = { "cvbs_dbg_test_grp13", };
1368*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp14[] = { "cvbs_dbg_test_grp14", };
1369*4882a593Smuzhiyun static const char * const cvbs_dbg_test_grp15[] = { "cvbs_dbg_test_grp15", };
1370*4882a593Smuzhiyun static const char * const gn_gnss_power_grp[] = { "gn_gnss_power_grp", };
1371*4882a593Smuzhiyun static const char * const gn_gnss_sw_status_grp[] = {
1372*4882a593Smuzhiyun 				"gn_gnss_sw_status_grp", };
1373*4882a593Smuzhiyun static const char * const gn_gnss_eclk_grp[] = { "gn_gnss_eclk_grp", };
1374*4882a593Smuzhiyun static const char * const gn_gnss_irq1_grp0[] = { "gn_gnss_irq1_grp0", };
1375*4882a593Smuzhiyun static const char * const gn_gnss_irq2_grp0[] = { "gn_gnss_irq2_grp0", };
1376*4882a593Smuzhiyun static const char * const gn_gnss_tm_grp[] = { "gn_gnss_tm_grp", };
1377*4882a593Smuzhiyun static const char * const gn_gnss_tsync_grp[] = { "gn_gnss_tsync_grp", };
1378*4882a593Smuzhiyun static const char * const gn_io_gnsssys_sw_cfg_grp[] = {
1379*4882a593Smuzhiyun 				"gn_io_gnsssys_sw_cfg_grp", };
1380*4882a593Smuzhiyun static const char * const gn_trg_grp0[] = { "gn_trg_grp0", };
1381*4882a593Smuzhiyun static const char * const gn_trg_grp1[] = { "gn_trg_grp1", };
1382*4882a593Smuzhiyun static const char * const gn_trg_shutdown_grp0[] = { "gn_trg_shutdown_grp0", };
1383*4882a593Smuzhiyun static const char * const gn_trg_shutdown_grp1[] = { "gn_trg_shutdown_grp1", };
1384*4882a593Smuzhiyun static const char * const gn_trg_shutdown_grp2[] = { "gn_trg_shutdown_grp2", };
1385*4882a593Smuzhiyun static const char * const gn_trg_shutdown_grp3[] = { "gn_trg_shutdown_grp3", };
1386*4882a593Smuzhiyun static const char * const i2c0_grp[] = { "i2c0_grp", };
1387*4882a593Smuzhiyun static const char * const i2c1_grp[] = { "i2c1_grp", };
1388*4882a593Smuzhiyun static const char * const i2s0_grp[] = { "i2s0_grp", };
1389*4882a593Smuzhiyun static const char * const i2s1_basic_grp[] = { "i2s1_basic_grp", };
1390*4882a593Smuzhiyun static const char * const i2s1_rxd0_grp0[] = { "i2s1_rxd0_grp0", };
1391*4882a593Smuzhiyun static const char * const i2s1_rxd0_grp1[] = { "i2s1_rxd0_grp1", };
1392*4882a593Smuzhiyun static const char * const i2s1_rxd0_grp2[] = { "i2s1_rxd0_grp2", };
1393*4882a593Smuzhiyun static const char * const i2s1_rxd0_grp3[] = { "i2s1_rxd0_grp3", };
1394*4882a593Smuzhiyun static const char * const i2s1_rxd0_grp4[] = { "i2s1_rxd0_grp4", };
1395*4882a593Smuzhiyun static const char * const i2s1_rxd1_grp0[] = { "i2s1_rxd1_grp0", };
1396*4882a593Smuzhiyun static const char * const i2s1_rxd1_grp1[] = { "i2s1_rxd1_grp1", };
1397*4882a593Smuzhiyun static const char * const i2s1_rxd1_grp2[] = { "i2s1_rxd1_grp2", };
1398*4882a593Smuzhiyun static const char * const i2s1_rxd1_grp3[] = { "i2s1_rxd1_grp3", };
1399*4882a593Smuzhiyun static const char * const i2s1_rxd1_grp4[] = { "i2s1_rxd1_grp4", };
1400*4882a593Smuzhiyun static const char * const jtag_jt_dbg_nsrst_grp[] = {
1401*4882a593Smuzhiyun 				"jtag_jt_dbg_nsrst_grp", };
1402*4882a593Smuzhiyun static const char * const jtag_ntrst_grp0[] = { "jtag_ntrst_grp0", };
1403*4882a593Smuzhiyun static const char * const jtag_ntrst_grp1[] = { "jtag_ntrst_grp1", };
1404*4882a593Smuzhiyun static const char * const jtag_swdiotms_grp0[] = { "jtag_swdiotms_grp0", };
1405*4882a593Smuzhiyun static const char * const jtag_swdiotms_grp1[] = { "jtag_swdiotms_grp1", };
1406*4882a593Smuzhiyun static const char * const jtag_tck_grp0[] = { "jtag_tck_grp0", };
1407*4882a593Smuzhiyun static const char * const jtag_tck_grp1[] = { "jtag_tck_grp1", };
1408*4882a593Smuzhiyun static const char * const jtag_tdi_grp0[] = { "jtag_tdi_grp0", };
1409*4882a593Smuzhiyun static const char * const jtag_tdi_grp1[] = { "jtag_tdi_grp1", };
1410*4882a593Smuzhiyun static const char * const jtag_tdo_grp0[] = { "jtag_tdo_grp0", };
1411*4882a593Smuzhiyun static const char * const jtag_tdo_grp1[] = { "jtag_tdo_grp1", };
1412*4882a593Smuzhiyun static const char * const ks_kas_spi_grp0[] = { "ks_kas_spi_grp0", };
1413*4882a593Smuzhiyun static const char * const ld_ldd_grp[] = { "ld_ldd_grp", };
1414*4882a593Smuzhiyun static const char * const ld_ldd_16bit_grp[] = { "ld_ldd_16bit_grp", };
1415*4882a593Smuzhiyun static const char * const ld_ldd_fck_grp[] = { "ld_ldd_fck_grp", };
1416*4882a593Smuzhiyun static const char * const ld_ldd_lck_grp[] = { "ld_ldd_lck_grp", };
1417*4882a593Smuzhiyun static const char * const lr_lcdrom_grp[] = { "lr_lcdrom_grp", };
1418*4882a593Smuzhiyun static const char * const lvds_analog_grp[] = { "lvds_analog_grp", };
1419*4882a593Smuzhiyun static const char * const nd_df_basic_grp[] = { "nd_df_basic_grp", };
1420*4882a593Smuzhiyun static const char * const nd_df_wp_grp[] = { "nd_df_wp_grp", };
1421*4882a593Smuzhiyun static const char * const nd_df_cs_grp[] = { "nd_df_cs_grp", };
1422*4882a593Smuzhiyun static const char * const ps_grp[] = { "ps_grp", };
1423*4882a593Smuzhiyun static const char * const ps_no_dir_grp[] = { "ps_no_dir_grp", };
1424*4882a593Smuzhiyun static const char * const pwc_core_on_grp[] = { "pwc_core_on_grp", };
1425*4882a593Smuzhiyun static const char * const pwc_ext_on_grp[] = { "pwc_ext_on_grp", };
1426*4882a593Smuzhiyun static const char * const pwc_gpio3_clk_grp[] = { "pwc_gpio3_clk_grp", };
1427*4882a593Smuzhiyun static const char * const pwc_io_on_grp[] = { "pwc_io_on_grp", };
1428*4882a593Smuzhiyun static const char * const pwc_lowbatt_b_grp0[] = { "pwc_lowbatt_b_grp0", };
1429*4882a593Smuzhiyun static const char * const pwc_mem_on_grp[] = { "pwc_mem_on_grp", };
1430*4882a593Smuzhiyun static const char * const pwc_on_key_b_grp0[] = { "pwc_on_key_b_grp0", };
1431*4882a593Smuzhiyun static const char * const pwc_wakeup_src0_grp[] = { "pwc_wakeup_src0_grp", };
1432*4882a593Smuzhiyun static const char * const pwc_wakeup_src1_grp[] = { "pwc_wakeup_src1_grp", };
1433*4882a593Smuzhiyun static const char * const pwc_wakeup_src2_grp[] = { "pwc_wakeup_src2_grp", };
1434*4882a593Smuzhiyun static const char * const pwc_wakeup_src3_grp[] = { "pwc_wakeup_src3_grp", };
1435*4882a593Smuzhiyun static const char * const pw_cko0_grp0[] = { "pw_cko0_grp0", };
1436*4882a593Smuzhiyun static const char * const pw_cko0_grp1[] = { "pw_cko0_grp1", };
1437*4882a593Smuzhiyun static const char * const pw_cko0_grp2[] = { "pw_cko0_grp2", };
1438*4882a593Smuzhiyun static const char * const pw_cko0_grp3[] = { "pw_cko0_grp3", };
1439*4882a593Smuzhiyun static const char * const pw_cko1_grp0[] = { "pw_cko1_grp0", };
1440*4882a593Smuzhiyun static const char * const pw_cko1_grp1[] = { "pw_cko1_grp1", };
1441*4882a593Smuzhiyun static const char * const pw_cko1_grp2[] = { "pw_cko1_grp2", };
1442*4882a593Smuzhiyun static const char * const pw_i2s01_clk_grp0[] = { "pw_i2s01_clk_grp0", };
1443*4882a593Smuzhiyun static const char * const pw_i2s01_clk_grp1[] = { "pw_i2s01_clk_grp1", };
1444*4882a593Smuzhiyun static const char * const pw_i2s01_clk_grp2[] = { "pw_i2s01_clk_grp2", };
1445*4882a593Smuzhiyun static const char * const pw_pwm0_grp0[] = { "pw_pwm0_grp0", };
1446*4882a593Smuzhiyun static const char * const pw_pwm0_grp1[] = { "pw_pwm0_grp1", };
1447*4882a593Smuzhiyun static const char * const pw_pwm1_grp0[] = { "pw_pwm1_grp0", };
1448*4882a593Smuzhiyun static const char * const pw_pwm1_grp1[] = { "pw_pwm1_grp1", };
1449*4882a593Smuzhiyun static const char * const pw_pwm1_grp2[] = { "pw_pwm1_grp2", };
1450*4882a593Smuzhiyun static const char * const pw_pwm2_grp0[] = { "pw_pwm2_grp0", };
1451*4882a593Smuzhiyun static const char * const pw_pwm2_grp1[] = { "pw_pwm2_grp1", };
1452*4882a593Smuzhiyun static const char * const pw_pwm2_grp2[] = { "pw_pwm2_grp2", };
1453*4882a593Smuzhiyun static const char * const pw_pwm3_grp0[] = { "pw_pwm3_grp0", };
1454*4882a593Smuzhiyun static const char * const pw_pwm3_grp1[] = { "pw_pwm3_grp1", };
1455*4882a593Smuzhiyun static const char * const pw_pwm_cpu_vol_grp0[] = { "pw_pwm_cpu_vol_grp0", };
1456*4882a593Smuzhiyun static const char * const pw_pwm_cpu_vol_grp1[] = { "pw_pwm_cpu_vol_grp1", };
1457*4882a593Smuzhiyun static const char * const pw_pwm_cpu_vol_grp2[] = { "pw_pwm_cpu_vol_grp2", };
1458*4882a593Smuzhiyun static const char * const pw_backlight_grp0[] = { "pw_backlight_grp0", };
1459*4882a593Smuzhiyun static const char * const pw_backlight_grp1[] = { "pw_backlight_grp1", };
1460*4882a593Smuzhiyun static const char * const rg_eth_mac_grp[] = { "rg_eth_mac_grp", };
1461*4882a593Smuzhiyun static const char * const rg_gmac_phy_intr_n_grp[] = {
1462*4882a593Smuzhiyun 				"rg_gmac_phy_intr_n_grp", };
1463*4882a593Smuzhiyun static const char * const rg_rgmii_mac_grp[] = { "rg_rgmii_mac_grp", };
1464*4882a593Smuzhiyun static const char * const rg_rgmii_phy_ref_clk_grp0[] = {
1465*4882a593Smuzhiyun 				"rg_rgmii_phy_ref_clk_grp0", };
1466*4882a593Smuzhiyun static const char * const rg_rgmii_phy_ref_clk_grp1[] = {
1467*4882a593Smuzhiyun 				"rg_rgmii_phy_ref_clk_grp1", };
1468*4882a593Smuzhiyun static const char * const sd0_grp[] = { "sd0_grp", };
1469*4882a593Smuzhiyun static const char * const sd0_4bit_grp[] = { "sd0_4bit_grp", };
1470*4882a593Smuzhiyun static const char * const sd1_grp[] = { "sd1_grp", };
1471*4882a593Smuzhiyun static const char * const sd1_4bit_grp0[] = { "sd1_4bit_grp0", };
1472*4882a593Smuzhiyun static const char * const sd1_4bit_grp1[] = { "sd1_4bit_grp1", };
1473*4882a593Smuzhiyun static const char * const sd2_basic_grp[] = { "sd2_basic_grp", };
1474*4882a593Smuzhiyun static const char * const sd2_cdb_grp0[] = { "sd2_cdb_grp0", };
1475*4882a593Smuzhiyun static const char * const sd2_cdb_grp1[] = { "sd2_cdb_grp1", };
1476*4882a593Smuzhiyun static const char * const sd2_wpb_grp0[] = { "sd2_wpb_grp0", };
1477*4882a593Smuzhiyun static const char * const sd2_wpb_grp1[] = { "sd2_wpb_grp1", };
1478*4882a593Smuzhiyun static const char * const sd3_9_grp[] = { "sd3_9_grp", };
1479*4882a593Smuzhiyun static const char * const sd5_grp[] = { "sd5_grp", };
1480*4882a593Smuzhiyun static const char * const sd6_grp0[] = { "sd6_grp0", };
1481*4882a593Smuzhiyun static const char * const sd6_grp1[] = { "sd6_grp1", };
1482*4882a593Smuzhiyun static const char * const sp0_ext_ldo_on_grp[] = { "sp0_ext_ldo_on_grp", };
1483*4882a593Smuzhiyun static const char * const sp0_qspi_grp[] = { "sp0_qspi_grp", };
1484*4882a593Smuzhiyun static const char * const sp1_spi_grp[] = { "sp1_spi_grp", };
1485*4882a593Smuzhiyun static const char * const tpiu_trace_grp[] = { "tpiu_trace_grp", };
1486*4882a593Smuzhiyun static const char * const uart0_grp[] = { "uart0_grp", };
1487*4882a593Smuzhiyun static const char * const uart0_nopause_grp[] = { "uart0_nopause_grp", };
1488*4882a593Smuzhiyun static const char * const uart1_grp[] = { "uart1_grp", };
1489*4882a593Smuzhiyun static const char * const uart2_cts_grp0[] = { "uart2_cts_grp0", };
1490*4882a593Smuzhiyun static const char * const uart2_cts_grp1[] = { "uart2_cts_grp1", };
1491*4882a593Smuzhiyun static const char * const uart2_rts_grp0[] = { "uart2_rts_grp0", };
1492*4882a593Smuzhiyun static const char * const uart2_rts_grp1[] = { "uart2_rts_grp1", };
1493*4882a593Smuzhiyun static const char * const uart2_rxd_grp0[] = { "uart2_rxd_grp0", };
1494*4882a593Smuzhiyun static const char * const uart2_rxd_grp1[] = { "uart2_rxd_grp1", };
1495*4882a593Smuzhiyun static const char * const uart2_rxd_grp2[] = { "uart2_rxd_grp2", };
1496*4882a593Smuzhiyun static const char * const uart2_txd_grp0[] = { "uart2_txd_grp0", };
1497*4882a593Smuzhiyun static const char * const uart2_txd_grp1[] = { "uart2_txd_grp1", };
1498*4882a593Smuzhiyun static const char * const uart2_txd_grp2[] = { "uart2_txd_grp2", };
1499*4882a593Smuzhiyun static const char * const uart3_cts_grp0[] = { "uart3_cts_grp0", };
1500*4882a593Smuzhiyun static const char * const uart3_cts_grp1[] = { "uart3_cts_grp1", };
1501*4882a593Smuzhiyun static const char * const uart3_cts_grp2[] = { "uart3_cts_grp2", };
1502*4882a593Smuzhiyun static const char * const uart3_rts_grp0[] = { "uart3_rts_grp0", };
1503*4882a593Smuzhiyun static const char * const uart3_rts_grp1[] = { "uart3_rts_grp1", };
1504*4882a593Smuzhiyun static const char * const uart3_rts_grp2[] = { "uart3_rts_grp2", };
1505*4882a593Smuzhiyun static const char * const uart3_rxd_grp0[] = { "uart3_rxd_grp0", };
1506*4882a593Smuzhiyun static const char * const uart3_rxd_grp1[] = { "uart3_rxd_grp1", };
1507*4882a593Smuzhiyun static const char * const uart3_rxd_grp2[] = { "uart3_rxd_grp2", };
1508*4882a593Smuzhiyun static const char * const uart3_txd_grp0[] = { "uart3_txd_grp0", };
1509*4882a593Smuzhiyun static const char * const uart3_txd_grp1[] = { "uart3_txd_grp1", };
1510*4882a593Smuzhiyun static const char * const uart3_txd_grp2[] = { "uart3_txd_grp2", };
1511*4882a593Smuzhiyun static const char * const uart4_basic_grp[] = { "uart4_basic_grp", };
1512*4882a593Smuzhiyun static const char * const uart4_cts_grp0[] = { "uart4_cts_grp0", };
1513*4882a593Smuzhiyun static const char * const uart4_cts_grp1[] = { "uart4_cts_grp1", };
1514*4882a593Smuzhiyun static const char * const uart4_cts_grp2[] = { "uart4_cts_grp2", };
1515*4882a593Smuzhiyun static const char * const uart4_rts_grp0[] = { "uart4_rts_grp0", };
1516*4882a593Smuzhiyun static const char * const uart4_rts_grp1[] = { "uart4_rts_grp1", };
1517*4882a593Smuzhiyun static const char * const uart4_rts_grp2[] = { "uart4_rts_grp2", };
1518*4882a593Smuzhiyun static const char * const usb0_drvvbus_grp0[] = { "usb0_drvvbus_grp0", };
1519*4882a593Smuzhiyun static const char * const usb0_drvvbus_grp1[] = { "usb0_drvvbus_grp1", };
1520*4882a593Smuzhiyun static const char * const usb1_drvvbus_grp0[] = { "usb1_drvvbus_grp0", };
1521*4882a593Smuzhiyun static const char * const usb1_drvvbus_grp1[] = { "usb1_drvvbus_grp1", };
1522*4882a593Smuzhiyun static const char * const visbus_dout_grp[] = { "visbus_dout_grp", };
1523*4882a593Smuzhiyun static const char * const vi_vip1_grp[] = { "vi_vip1_grp", };
1524*4882a593Smuzhiyun static const char * const vi_vip1_ext_grp[] = { "vi_vip1_ext_grp", };
1525*4882a593Smuzhiyun static const char * const vi_vip1_low8bit_grp[] = { "vi_vip1_low8bit_grp", };
1526*4882a593Smuzhiyun static const char * const vi_vip1_high8bit_grp[] = { "vi_vip1_high8bit_grp", };
1527*4882a593Smuzhiyun 
1528*4882a593Smuzhiyun static struct atlas7_pad_mux gnss_gpio_grp_pad_mux[] = {
1529*4882a593Smuzhiyun 	MUX(1, 119, 0, N, N, N, N),
1530*4882a593Smuzhiyun 	MUX(1, 120, 0, N, N, N, N),
1531*4882a593Smuzhiyun 	MUX(1, 121, 0, N, N, N, N),
1532*4882a593Smuzhiyun 	MUX(1, 122, 0, N, N, N, N),
1533*4882a593Smuzhiyun 	MUX(1, 123, 0, N, N, N, N),
1534*4882a593Smuzhiyun 	MUX(1, 124, 0, N, N, N, N),
1535*4882a593Smuzhiyun 	MUX(1, 125, 0, N, N, N, N),
1536*4882a593Smuzhiyun 	MUX(1, 126, 0, N, N, N, N),
1537*4882a593Smuzhiyun 	MUX(1, 127, 0, N, N, N, N),
1538*4882a593Smuzhiyun 	MUX(1, 128, 0, N, N, N, N),
1539*4882a593Smuzhiyun 	MUX(1, 22, 0, N, N, N, N),
1540*4882a593Smuzhiyun 	MUX(1, 23, 0, N, N, N, N),
1541*4882a593Smuzhiyun 	MUX(1, 24, 0, N, N, N, N),
1542*4882a593Smuzhiyun 	MUX(1, 25, 0, N, N, N, N),
1543*4882a593Smuzhiyun 	MUX(1, 26, 0, N, N, N, N),
1544*4882a593Smuzhiyun 	MUX(1, 27, 0, N, N, N, N),
1545*4882a593Smuzhiyun 	MUX(1, 28, 0, N, N, N, N),
1546*4882a593Smuzhiyun 	MUX(1, 29, 0, N, N, N, N),
1547*4882a593Smuzhiyun 	MUX(1, 30, 0, N, N, N, N),
1548*4882a593Smuzhiyun };
1549*4882a593Smuzhiyun 
1550*4882a593Smuzhiyun static struct atlas7_grp_mux gnss_gpio_grp_mux = {
1551*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gnss_gpio_grp_pad_mux),
1552*4882a593Smuzhiyun 	.pad_mux_list = gnss_gpio_grp_pad_mux,
1553*4882a593Smuzhiyun };
1554*4882a593Smuzhiyun 
1555*4882a593Smuzhiyun static struct atlas7_pad_mux lcd_vip_gpio_grp_pad_mux[] = {
1556*4882a593Smuzhiyun 	MUX(1, 74, 0, N, N, N, N),
1557*4882a593Smuzhiyun 	MUX(1, 75, 0, N, N, N, N),
1558*4882a593Smuzhiyun 	MUX(1, 76, 0, N, N, N, N),
1559*4882a593Smuzhiyun 	MUX(1, 77, 0, N, N, N, N),
1560*4882a593Smuzhiyun 	MUX(1, 78, 0, N, N, N, N),
1561*4882a593Smuzhiyun 	MUX(1, 79, 0, N, N, N, N),
1562*4882a593Smuzhiyun 	MUX(1, 80, 0, N, N, N, N),
1563*4882a593Smuzhiyun 	MUX(1, 81, 0, N, N, N, N),
1564*4882a593Smuzhiyun 	MUX(1, 82, 0, N, N, N, N),
1565*4882a593Smuzhiyun 	MUX(1, 83, 0, N, N, N, N),
1566*4882a593Smuzhiyun 	MUX(1, 84, 0, N, N, N, N),
1567*4882a593Smuzhiyun 	MUX(1, 53, 0, N, N, N, N),
1568*4882a593Smuzhiyun 	MUX(1, 54, 0, N, N, N, N),
1569*4882a593Smuzhiyun 	MUX(1, 55, 0, N, N, N, N),
1570*4882a593Smuzhiyun 	MUX(1, 56, 0, N, N, N, N),
1571*4882a593Smuzhiyun 	MUX(1, 57, 0, N, N, N, N),
1572*4882a593Smuzhiyun 	MUX(1, 58, 0, N, N, N, N),
1573*4882a593Smuzhiyun 	MUX(1, 59, 0, N, N, N, N),
1574*4882a593Smuzhiyun 	MUX(1, 60, 0, N, N, N, N),
1575*4882a593Smuzhiyun 	MUX(1, 61, 0, N, N, N, N),
1576*4882a593Smuzhiyun 	MUX(1, 62, 0, N, N, N, N),
1577*4882a593Smuzhiyun 	MUX(1, 63, 0, N, N, N, N),
1578*4882a593Smuzhiyun 	MUX(1, 64, 0, N, N, N, N),
1579*4882a593Smuzhiyun 	MUX(1, 65, 0, N, N, N, N),
1580*4882a593Smuzhiyun 	MUX(1, 66, 0, N, N, N, N),
1581*4882a593Smuzhiyun 	MUX(1, 67, 0, N, N, N, N),
1582*4882a593Smuzhiyun 	MUX(1, 68, 0, N, N, N, N),
1583*4882a593Smuzhiyun 	MUX(1, 69, 0, N, N, N, N),
1584*4882a593Smuzhiyun 	MUX(1, 70, 0, N, N, N, N),
1585*4882a593Smuzhiyun 	MUX(1, 71, 0, N, N, N, N),
1586*4882a593Smuzhiyun 	MUX(1, 72, 0, N, N, N, N),
1587*4882a593Smuzhiyun 	MUX(1, 73, 0, N, N, N, N),
1588*4882a593Smuzhiyun };
1589*4882a593Smuzhiyun 
1590*4882a593Smuzhiyun static struct atlas7_grp_mux lcd_vip_gpio_grp_mux = {
1591*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(lcd_vip_gpio_grp_pad_mux),
1592*4882a593Smuzhiyun 	.pad_mux_list = lcd_vip_gpio_grp_pad_mux,
1593*4882a593Smuzhiyun };
1594*4882a593Smuzhiyun 
1595*4882a593Smuzhiyun static struct atlas7_pad_mux sdio_i2s_gpio_grp_pad_mux[] = {
1596*4882a593Smuzhiyun 	MUX(1, 31, 0, N, N, N, N),
1597*4882a593Smuzhiyun 	MUX(1, 32, 0, N, N, N, N),
1598*4882a593Smuzhiyun 	MUX(1, 33, 0, N, N, N, N),
1599*4882a593Smuzhiyun 	MUX(1, 34, 0, N, N, N, N),
1600*4882a593Smuzhiyun 	MUX(1, 35, 0, N, N, N, N),
1601*4882a593Smuzhiyun 	MUX(1, 36, 0, N, N, N, N),
1602*4882a593Smuzhiyun 	MUX(1, 85, 0, N, N, N, N),
1603*4882a593Smuzhiyun 	MUX(1, 86, 0, N, N, N, N),
1604*4882a593Smuzhiyun 	MUX(1, 87, 0, N, N, N, N),
1605*4882a593Smuzhiyun 	MUX(1, 88, 0, N, N, N, N),
1606*4882a593Smuzhiyun 	MUX(1, 89, 0, N, N, N, N),
1607*4882a593Smuzhiyun 	MUX(1, 90, 0, N, N, N, N),
1608*4882a593Smuzhiyun 	MUX(1, 129, 0, N, N, N, N),
1609*4882a593Smuzhiyun 	MUX(1, 130, 0, N, N, N, N),
1610*4882a593Smuzhiyun 	MUX(1, 131, 0, N, N, N, N),
1611*4882a593Smuzhiyun 	MUX(1, 132, 0, N, N, N, N),
1612*4882a593Smuzhiyun 	MUX(1, 91, 0, N, N, N, N),
1613*4882a593Smuzhiyun 	MUX(1, 92, 0, N, N, N, N),
1614*4882a593Smuzhiyun 	MUX(1, 93, 0, N, N, N, N),
1615*4882a593Smuzhiyun 	MUX(1, 94, 0, N, N, N, N),
1616*4882a593Smuzhiyun 	MUX(1, 95, 0, N, N, N, N),
1617*4882a593Smuzhiyun 	MUX(1, 96, 0, N, N, N, N),
1618*4882a593Smuzhiyun 	MUX(1, 112, 0, N, N, N, N),
1619*4882a593Smuzhiyun 	MUX(1, 113, 0, N, N, N, N),
1620*4882a593Smuzhiyun 	MUX(1, 114, 0, N, N, N, N),
1621*4882a593Smuzhiyun 	MUX(1, 115, 0, N, N, N, N),
1622*4882a593Smuzhiyun 	MUX(1, 116, 0, N, N, N, N),
1623*4882a593Smuzhiyun 	MUX(1, 117, 0, N, N, N, N),
1624*4882a593Smuzhiyun 	MUX(1, 118, 0, N, N, N, N),
1625*4882a593Smuzhiyun };
1626*4882a593Smuzhiyun 
1627*4882a593Smuzhiyun static struct atlas7_grp_mux sdio_i2s_gpio_grp_mux = {
1628*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sdio_i2s_gpio_grp_pad_mux),
1629*4882a593Smuzhiyun 	.pad_mux_list = sdio_i2s_gpio_grp_pad_mux,
1630*4882a593Smuzhiyun };
1631*4882a593Smuzhiyun 
1632*4882a593Smuzhiyun static struct atlas7_pad_mux sp_rgmii_gpio_grp_pad_mux[] = {
1633*4882a593Smuzhiyun 	MUX(1, 97, 0, N, N, N, N),
1634*4882a593Smuzhiyun 	MUX(1, 98, 0, N, N, N, N),
1635*4882a593Smuzhiyun 	MUX(1, 99, 0, N, N, N, N),
1636*4882a593Smuzhiyun 	MUX(1, 100, 0, N, N, N, N),
1637*4882a593Smuzhiyun 	MUX(1, 101, 0, N, N, N, N),
1638*4882a593Smuzhiyun 	MUX(1, 102, 0, N, N, N, N),
1639*4882a593Smuzhiyun 	MUX(1, 103, 0, N, N, N, N),
1640*4882a593Smuzhiyun 	MUX(1, 104, 0, N, N, N, N),
1641*4882a593Smuzhiyun 	MUX(1, 105, 0, N, N, N, N),
1642*4882a593Smuzhiyun 	MUX(1, 106, 0, N, N, N, N),
1643*4882a593Smuzhiyun 	MUX(1, 107, 0, N, N, N, N),
1644*4882a593Smuzhiyun 	MUX(1, 108, 0, N, N, N, N),
1645*4882a593Smuzhiyun 	MUX(1, 109, 0, N, N, N, N),
1646*4882a593Smuzhiyun 	MUX(1, 110, 0, N, N, N, N),
1647*4882a593Smuzhiyun 	MUX(1, 111, 0, N, N, N, N),
1648*4882a593Smuzhiyun 	MUX(1, 18, 0, N, N, N, N),
1649*4882a593Smuzhiyun 	MUX(1, 19, 0, N, N, N, N),
1650*4882a593Smuzhiyun 	MUX(1, 20, 0, N, N, N, N),
1651*4882a593Smuzhiyun 	MUX(1, 21, 0, N, N, N, N),
1652*4882a593Smuzhiyun 	MUX(1, 141, 0, N, N, N, N),
1653*4882a593Smuzhiyun 	MUX(1, 142, 0, N, N, N, N),
1654*4882a593Smuzhiyun 	MUX(1, 143, 0, N, N, N, N),
1655*4882a593Smuzhiyun 	MUX(1, 144, 0, N, N, N, N),
1656*4882a593Smuzhiyun 	MUX(1, 145, 0, N, N, N, N),
1657*4882a593Smuzhiyun 	MUX(1, 146, 0, N, N, N, N),
1658*4882a593Smuzhiyun 	MUX(1, 147, 0, N, N, N, N),
1659*4882a593Smuzhiyun 	MUX(1, 148, 0, N, N, N, N),
1660*4882a593Smuzhiyun };
1661*4882a593Smuzhiyun 
1662*4882a593Smuzhiyun static struct atlas7_grp_mux sp_rgmii_gpio_grp_mux = {
1663*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sp_rgmii_gpio_grp_pad_mux),
1664*4882a593Smuzhiyun 	.pad_mux_list = sp_rgmii_gpio_grp_pad_mux,
1665*4882a593Smuzhiyun };
1666*4882a593Smuzhiyun 
1667*4882a593Smuzhiyun static struct atlas7_pad_mux lvds_gpio_grp_pad_mux[] = {
1668*4882a593Smuzhiyun 	MUX(1, 157, 0, N, N, N, N),
1669*4882a593Smuzhiyun 	MUX(1, 158, 0, N, N, N, N),
1670*4882a593Smuzhiyun 	MUX(1, 155, 0, N, N, N, N),
1671*4882a593Smuzhiyun 	MUX(1, 156, 0, N, N, N, N),
1672*4882a593Smuzhiyun 	MUX(1, 153, 0, N, N, N, N),
1673*4882a593Smuzhiyun 	MUX(1, 154, 0, N, N, N, N),
1674*4882a593Smuzhiyun 	MUX(1, 151, 0, N, N, N, N),
1675*4882a593Smuzhiyun 	MUX(1, 152, 0, N, N, N, N),
1676*4882a593Smuzhiyun 	MUX(1, 149, 0, N, N, N, N),
1677*4882a593Smuzhiyun 	MUX(1, 150, 0, N, N, N, N),
1678*4882a593Smuzhiyun };
1679*4882a593Smuzhiyun 
1680*4882a593Smuzhiyun static struct atlas7_grp_mux lvds_gpio_grp_mux = {
1681*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(lvds_gpio_grp_pad_mux),
1682*4882a593Smuzhiyun 	.pad_mux_list = lvds_gpio_grp_pad_mux,
1683*4882a593Smuzhiyun };
1684*4882a593Smuzhiyun 
1685*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_uart_nand_gpio_grp_pad_mux[] = {
1686*4882a593Smuzhiyun 	MUX(1, 44, 0, N, N, N, N),
1687*4882a593Smuzhiyun 	MUX(1, 43, 0, N, N, N, N),
1688*4882a593Smuzhiyun 	MUX(1, 42, 0, N, N, N, N),
1689*4882a593Smuzhiyun 	MUX(1, 41, 0, N, N, N, N),
1690*4882a593Smuzhiyun 	MUX(1, 40, 0, N, N, N, N),
1691*4882a593Smuzhiyun 	MUX(1, 39, 0, N, N, N, N),
1692*4882a593Smuzhiyun 	MUX(1, 38, 0, N, N, N, N),
1693*4882a593Smuzhiyun 	MUX(1, 37, 0, N, N, N, N),
1694*4882a593Smuzhiyun 	MUX(1, 46, 0, N, N, N, N),
1695*4882a593Smuzhiyun 	MUX(1, 47, 0, N, N, N, N),
1696*4882a593Smuzhiyun 	MUX(1, 48, 0, N, N, N, N),
1697*4882a593Smuzhiyun 	MUX(1, 49, 0, N, N, N, N),
1698*4882a593Smuzhiyun 	MUX(1, 50, 0, N, N, N, N),
1699*4882a593Smuzhiyun 	MUX(1, 52, 0, N, N, N, N),
1700*4882a593Smuzhiyun 	MUX(1, 51, 0, N, N, N, N),
1701*4882a593Smuzhiyun 	MUX(1, 45, 0, N, N, N, N),
1702*4882a593Smuzhiyun 	MUX(1, 133, 0, N, N, N, N),
1703*4882a593Smuzhiyun 	MUX(1, 134, 0, N, N, N, N),
1704*4882a593Smuzhiyun 	MUX(1, 135, 0, N, N, N, N),
1705*4882a593Smuzhiyun 	MUX(1, 136, 0, N, N, N, N),
1706*4882a593Smuzhiyun 	MUX(1, 137, 0, N, N, N, N),
1707*4882a593Smuzhiyun 	MUX(1, 138, 0, N, N, N, N),
1708*4882a593Smuzhiyun 	MUX(1, 139, 0, N, N, N, N),
1709*4882a593Smuzhiyun 	MUX(1, 140, 0, N, N, N, N),
1710*4882a593Smuzhiyun 	MUX(1, 159, 0, N, N, N, N),
1711*4882a593Smuzhiyun 	MUX(1, 160, 0, N, N, N, N),
1712*4882a593Smuzhiyun 	MUX(1, 161, 0, N, N, N, N),
1713*4882a593Smuzhiyun 	MUX(1, 162, 0, N, N, N, N),
1714*4882a593Smuzhiyun 	MUX(1, 163, 0, N, N, N, N),
1715*4882a593Smuzhiyun };
1716*4882a593Smuzhiyun 
1717*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_uart_nand_gpio_grp_mux = {
1718*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_uart_nand_gpio_grp_pad_mux),
1719*4882a593Smuzhiyun 	.pad_mux_list = jtag_uart_nand_gpio_grp_pad_mux,
1720*4882a593Smuzhiyun };
1721*4882a593Smuzhiyun 
1722*4882a593Smuzhiyun static struct atlas7_pad_mux rtc_gpio_grp_pad_mux[] = {
1723*4882a593Smuzhiyun 	MUX(0, 0, 0, N, N, N, N),
1724*4882a593Smuzhiyun 	MUX(0, 1, 0, N, N, N, N),
1725*4882a593Smuzhiyun 	MUX(0, 2, 0, N, N, N, N),
1726*4882a593Smuzhiyun 	MUX(0, 3, 0, N, N, N, N),
1727*4882a593Smuzhiyun 	MUX(0, 4, 0, N, N, N, N),
1728*4882a593Smuzhiyun 	MUX(0, 10, 0, N, N, N, N),
1729*4882a593Smuzhiyun 	MUX(0, 11, 0, N, N, N, N),
1730*4882a593Smuzhiyun 	MUX(0, 12, 0, N, N, N, N),
1731*4882a593Smuzhiyun 	MUX(0, 13, 0, N, N, N, N),
1732*4882a593Smuzhiyun 	MUX(0, 14, 0, N, N, N, N),
1733*4882a593Smuzhiyun 	MUX(0, 15, 0, N, N, N, N),
1734*4882a593Smuzhiyun 	MUX(0, 16, 0, N, N, N, N),
1735*4882a593Smuzhiyun 	MUX(0, 17, 0, N, N, N, N),
1736*4882a593Smuzhiyun 	MUX(0, 9, 0, N, N, N, N),
1737*4882a593Smuzhiyun };
1738*4882a593Smuzhiyun 
1739*4882a593Smuzhiyun static struct atlas7_grp_mux rtc_gpio_grp_mux = {
1740*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rtc_gpio_grp_pad_mux),
1741*4882a593Smuzhiyun 	.pad_mux_list = rtc_gpio_grp_pad_mux,
1742*4882a593Smuzhiyun };
1743*4882a593Smuzhiyun 
1744*4882a593Smuzhiyun static struct atlas7_pad_mux audio_ac97_grp_pad_mux[] = {
1745*4882a593Smuzhiyun 	MUX(1, 113, 2, N, N, N, N),
1746*4882a593Smuzhiyun 	MUX(1, 118, 2, N, N, N, N),
1747*4882a593Smuzhiyun 	MUX(1, 115, 2, N, N, N, N),
1748*4882a593Smuzhiyun 	MUX(1, 114, 2, N, N, N, N),
1749*4882a593Smuzhiyun };
1750*4882a593Smuzhiyun 
1751*4882a593Smuzhiyun static struct atlas7_grp_mux audio_ac97_grp_mux = {
1752*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_ac97_grp_pad_mux),
1753*4882a593Smuzhiyun 	.pad_mux_list = audio_ac97_grp_pad_mux,
1754*4882a593Smuzhiyun };
1755*4882a593Smuzhiyun 
1756*4882a593Smuzhiyun static struct atlas7_pad_mux audio_digmic_grp0_pad_mux[] = {
1757*4882a593Smuzhiyun 	MUX(1, 51, 3, 0xa10, 20, 0xa90, 20),
1758*4882a593Smuzhiyun };
1759*4882a593Smuzhiyun 
1760*4882a593Smuzhiyun static struct atlas7_grp_mux audio_digmic_grp0_mux = {
1761*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_digmic_grp0_pad_mux),
1762*4882a593Smuzhiyun 	.pad_mux_list = audio_digmic_grp0_pad_mux,
1763*4882a593Smuzhiyun };
1764*4882a593Smuzhiyun 
1765*4882a593Smuzhiyun static struct atlas7_pad_mux audio_digmic_grp1_pad_mux[] = {
1766*4882a593Smuzhiyun 	MUX(1, 122, 5, 0xa10, 20, 0xa90, 20),
1767*4882a593Smuzhiyun };
1768*4882a593Smuzhiyun 
1769*4882a593Smuzhiyun static struct atlas7_grp_mux audio_digmic_grp1_mux = {
1770*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_digmic_grp1_pad_mux),
1771*4882a593Smuzhiyun 	.pad_mux_list = audio_digmic_grp1_pad_mux,
1772*4882a593Smuzhiyun };
1773*4882a593Smuzhiyun 
1774*4882a593Smuzhiyun static struct atlas7_pad_mux audio_digmic_grp2_pad_mux[] = {
1775*4882a593Smuzhiyun 	MUX(1, 161, 7, 0xa10, 20, 0xa90, 20),
1776*4882a593Smuzhiyun };
1777*4882a593Smuzhiyun 
1778*4882a593Smuzhiyun static struct atlas7_grp_mux audio_digmic_grp2_mux = {
1779*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_digmic_grp2_pad_mux),
1780*4882a593Smuzhiyun 	.pad_mux_list = audio_digmic_grp2_pad_mux,
1781*4882a593Smuzhiyun };
1782*4882a593Smuzhiyun 
1783*4882a593Smuzhiyun static struct atlas7_pad_mux audio_func_dbg_grp_pad_mux[] = {
1784*4882a593Smuzhiyun 	MUX(1, 141, 4, N, N, N, N),
1785*4882a593Smuzhiyun 	MUX(1, 144, 4, N, N, N, N),
1786*4882a593Smuzhiyun 	MUX(1, 44, 6, N, N, N, N),
1787*4882a593Smuzhiyun 	MUX(1, 43, 6, N, N, N, N),
1788*4882a593Smuzhiyun 	MUX(1, 42, 6, N, N, N, N),
1789*4882a593Smuzhiyun 	MUX(1, 41, 6, N, N, N, N),
1790*4882a593Smuzhiyun 	MUX(1, 40, 6, N, N, N, N),
1791*4882a593Smuzhiyun 	MUX(1, 39, 6, N, N, N, N),
1792*4882a593Smuzhiyun 	MUX(1, 38, 6, N, N, N, N),
1793*4882a593Smuzhiyun 	MUX(1, 37, 6, N, N, N, N),
1794*4882a593Smuzhiyun 	MUX(1, 74, 6, N, N, N, N),
1795*4882a593Smuzhiyun 	MUX(1, 75, 6, N, N, N, N),
1796*4882a593Smuzhiyun 	MUX(1, 76, 6, N, N, N, N),
1797*4882a593Smuzhiyun 	MUX(1, 77, 6, N, N, N, N),
1798*4882a593Smuzhiyun 	MUX(1, 78, 6, N, N, N, N),
1799*4882a593Smuzhiyun 	MUX(1, 79, 6, N, N, N, N),
1800*4882a593Smuzhiyun 	MUX(1, 81, 6, N, N, N, N),
1801*4882a593Smuzhiyun 	MUX(1, 113, 6, N, N, N, N),
1802*4882a593Smuzhiyun 	MUX(1, 114, 6, N, N, N, N),
1803*4882a593Smuzhiyun 	MUX(1, 118, 6, N, N, N, N),
1804*4882a593Smuzhiyun 	MUX(1, 115, 6, N, N, N, N),
1805*4882a593Smuzhiyun 	MUX(1, 49, 6, N, N, N, N),
1806*4882a593Smuzhiyun 	MUX(1, 50, 6, N, N, N, N),
1807*4882a593Smuzhiyun 	MUX(1, 142, 4, N, N, N, N),
1808*4882a593Smuzhiyun 	MUX(1, 143, 4, N, N, N, N),
1809*4882a593Smuzhiyun 	MUX(1, 80, 6, N, N, N, N),
1810*4882a593Smuzhiyun };
1811*4882a593Smuzhiyun 
1812*4882a593Smuzhiyun static struct atlas7_grp_mux audio_func_dbg_grp_mux = {
1813*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_func_dbg_grp_pad_mux),
1814*4882a593Smuzhiyun 	.pad_mux_list = audio_func_dbg_grp_pad_mux,
1815*4882a593Smuzhiyun };
1816*4882a593Smuzhiyun 
1817*4882a593Smuzhiyun static struct atlas7_pad_mux audio_i2s_grp_pad_mux[] = {
1818*4882a593Smuzhiyun 	MUX(1, 118, 1, N, N, N, N),
1819*4882a593Smuzhiyun 	MUX(1, 115, 1, N, N, N, N),
1820*4882a593Smuzhiyun 	MUX(1, 116, 1, N, N, N, N),
1821*4882a593Smuzhiyun 	MUX(1, 117, 1, N, N, N, N),
1822*4882a593Smuzhiyun 	MUX(1, 112, 1, N, N, N, N),
1823*4882a593Smuzhiyun 	MUX(1, 113, 1, N, N, N, N),
1824*4882a593Smuzhiyun 	MUX(1, 114, 1, N, N, N, N),
1825*4882a593Smuzhiyun };
1826*4882a593Smuzhiyun 
1827*4882a593Smuzhiyun static struct atlas7_grp_mux audio_i2s_grp_mux = {
1828*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_i2s_grp_pad_mux),
1829*4882a593Smuzhiyun 	.pad_mux_list = audio_i2s_grp_pad_mux,
1830*4882a593Smuzhiyun };
1831*4882a593Smuzhiyun 
1832*4882a593Smuzhiyun static struct atlas7_pad_mux audio_i2s_2ch_grp_pad_mux[] = {
1833*4882a593Smuzhiyun 	MUX(1, 118, 1, N, N, N, N),
1834*4882a593Smuzhiyun 	MUX(1, 115, 1, N, N, N, N),
1835*4882a593Smuzhiyun 	MUX(1, 112, 1, N, N, N, N),
1836*4882a593Smuzhiyun 	MUX(1, 113, 1, N, N, N, N),
1837*4882a593Smuzhiyun 	MUX(1, 114, 1, N, N, N, N),
1838*4882a593Smuzhiyun };
1839*4882a593Smuzhiyun 
1840*4882a593Smuzhiyun static struct atlas7_grp_mux audio_i2s_2ch_grp_mux = {
1841*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_i2s_2ch_grp_pad_mux),
1842*4882a593Smuzhiyun 	.pad_mux_list = audio_i2s_2ch_grp_pad_mux,
1843*4882a593Smuzhiyun };
1844*4882a593Smuzhiyun 
1845*4882a593Smuzhiyun static struct atlas7_pad_mux audio_i2s_extclk_grp_pad_mux[] = {
1846*4882a593Smuzhiyun 	MUX(1, 112, 2, N, N, N, N),
1847*4882a593Smuzhiyun };
1848*4882a593Smuzhiyun 
1849*4882a593Smuzhiyun static struct atlas7_grp_mux audio_i2s_extclk_grp_mux = {
1850*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_i2s_extclk_grp_pad_mux),
1851*4882a593Smuzhiyun 	.pad_mux_list = audio_i2s_extclk_grp_pad_mux,
1852*4882a593Smuzhiyun };
1853*4882a593Smuzhiyun 
1854*4882a593Smuzhiyun static struct atlas7_pad_mux audio_spdif_out_grp0_pad_mux[] = {
1855*4882a593Smuzhiyun 	MUX(1, 112, 3, N, N, N, N),
1856*4882a593Smuzhiyun };
1857*4882a593Smuzhiyun 
1858*4882a593Smuzhiyun static struct atlas7_grp_mux audio_spdif_out_grp0_mux = {
1859*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_spdif_out_grp0_pad_mux),
1860*4882a593Smuzhiyun 	.pad_mux_list = audio_spdif_out_grp0_pad_mux,
1861*4882a593Smuzhiyun };
1862*4882a593Smuzhiyun 
1863*4882a593Smuzhiyun static struct atlas7_pad_mux audio_spdif_out_grp1_pad_mux[] = {
1864*4882a593Smuzhiyun 	MUX(1, 116, 3, N, N, N, N),
1865*4882a593Smuzhiyun };
1866*4882a593Smuzhiyun 
1867*4882a593Smuzhiyun static struct atlas7_grp_mux audio_spdif_out_grp1_mux = {
1868*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_spdif_out_grp1_pad_mux),
1869*4882a593Smuzhiyun 	.pad_mux_list = audio_spdif_out_grp1_pad_mux,
1870*4882a593Smuzhiyun };
1871*4882a593Smuzhiyun 
1872*4882a593Smuzhiyun static struct atlas7_pad_mux audio_spdif_out_grp2_pad_mux[] = {
1873*4882a593Smuzhiyun 	MUX(1, 142, 3, N, N, N, N),
1874*4882a593Smuzhiyun };
1875*4882a593Smuzhiyun 
1876*4882a593Smuzhiyun static struct atlas7_grp_mux audio_spdif_out_grp2_mux = {
1877*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_spdif_out_grp2_pad_mux),
1878*4882a593Smuzhiyun 	.pad_mux_list = audio_spdif_out_grp2_pad_mux,
1879*4882a593Smuzhiyun };
1880*4882a593Smuzhiyun 
1881*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart0_basic_grp_pad_mux[] = {
1882*4882a593Smuzhiyun 	MUX(1, 143, 1, N, N, N, N),
1883*4882a593Smuzhiyun 	MUX(1, 142, 1, N, N, N, N),
1884*4882a593Smuzhiyun 	MUX(1, 141, 1, N, N, N, N),
1885*4882a593Smuzhiyun 	MUX(1, 144, 1, N, N, N, N),
1886*4882a593Smuzhiyun };
1887*4882a593Smuzhiyun 
1888*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart0_basic_grp_mux = {
1889*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart0_basic_grp_pad_mux),
1890*4882a593Smuzhiyun 	.pad_mux_list = audio_uart0_basic_grp_pad_mux,
1891*4882a593Smuzhiyun };
1892*4882a593Smuzhiyun 
1893*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart0_urfs_grp0_pad_mux[] = {
1894*4882a593Smuzhiyun 	MUX(1, 117, 5, 0xa10, 28, 0xa90, 28),
1895*4882a593Smuzhiyun };
1896*4882a593Smuzhiyun 
1897*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart0_urfs_grp0_mux = {
1898*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart0_urfs_grp0_pad_mux),
1899*4882a593Smuzhiyun 	.pad_mux_list = audio_uart0_urfs_grp0_pad_mux,
1900*4882a593Smuzhiyun };
1901*4882a593Smuzhiyun 
1902*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart0_urfs_grp1_pad_mux[] = {
1903*4882a593Smuzhiyun 	MUX(1, 139, 3, 0xa10, 28, 0xa90, 28),
1904*4882a593Smuzhiyun };
1905*4882a593Smuzhiyun 
1906*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart0_urfs_grp1_mux = {
1907*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart0_urfs_grp1_pad_mux),
1908*4882a593Smuzhiyun 	.pad_mux_list = audio_uart0_urfs_grp1_pad_mux,
1909*4882a593Smuzhiyun };
1910*4882a593Smuzhiyun 
1911*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart0_urfs_grp2_pad_mux[] = {
1912*4882a593Smuzhiyun 	MUX(1, 163, 3, 0xa10, 28, 0xa90, 28),
1913*4882a593Smuzhiyun };
1914*4882a593Smuzhiyun 
1915*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart0_urfs_grp2_mux = {
1916*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart0_urfs_grp2_pad_mux),
1917*4882a593Smuzhiyun 	.pad_mux_list = audio_uart0_urfs_grp2_pad_mux,
1918*4882a593Smuzhiyun };
1919*4882a593Smuzhiyun 
1920*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart0_urfs_grp3_pad_mux[] = {
1921*4882a593Smuzhiyun 	MUX(1, 162, 6, 0xa10, 28, 0xa90, 28),
1922*4882a593Smuzhiyun };
1923*4882a593Smuzhiyun 
1924*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart0_urfs_grp3_mux = {
1925*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart0_urfs_grp3_pad_mux),
1926*4882a593Smuzhiyun 	.pad_mux_list = audio_uart0_urfs_grp3_pad_mux,
1927*4882a593Smuzhiyun };
1928*4882a593Smuzhiyun 
1929*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart1_basic_grp_pad_mux[] = {
1930*4882a593Smuzhiyun 	MUX(1, 147, 1, 0xa10, 24, 0xa90, 24),
1931*4882a593Smuzhiyun 	MUX(1, 146, 1, 0xa10, 25, 0xa90, 25),
1932*4882a593Smuzhiyun 	MUX(1, 145, 1, 0xa10, 23, 0xa90, 23),
1933*4882a593Smuzhiyun 	MUX(1, 148, 1, 0xa10, 22, 0xa90, 22),
1934*4882a593Smuzhiyun };
1935*4882a593Smuzhiyun 
1936*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart1_basic_grp_mux = {
1937*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart1_basic_grp_pad_mux),
1938*4882a593Smuzhiyun 	.pad_mux_list = audio_uart1_basic_grp_pad_mux,
1939*4882a593Smuzhiyun };
1940*4882a593Smuzhiyun 
1941*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart1_urfs_grp0_pad_mux[] = {
1942*4882a593Smuzhiyun 	MUX(1, 117, 6, 0xa10, 29, 0xa90, 29),
1943*4882a593Smuzhiyun };
1944*4882a593Smuzhiyun 
1945*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart1_urfs_grp0_mux = {
1946*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart1_urfs_grp0_pad_mux),
1947*4882a593Smuzhiyun 	.pad_mux_list = audio_uart1_urfs_grp0_pad_mux,
1948*4882a593Smuzhiyun };
1949*4882a593Smuzhiyun 
1950*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart1_urfs_grp1_pad_mux[] = {
1951*4882a593Smuzhiyun 	MUX(1, 140, 3, 0xa10, 29, 0xa90, 29),
1952*4882a593Smuzhiyun };
1953*4882a593Smuzhiyun 
1954*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart1_urfs_grp1_mux = {
1955*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart1_urfs_grp1_pad_mux),
1956*4882a593Smuzhiyun 	.pad_mux_list = audio_uart1_urfs_grp1_pad_mux,
1957*4882a593Smuzhiyun };
1958*4882a593Smuzhiyun 
1959*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart1_urfs_grp2_pad_mux[] = {
1960*4882a593Smuzhiyun 	MUX(1, 163, 4, 0xa10, 29, 0xa90, 29),
1961*4882a593Smuzhiyun };
1962*4882a593Smuzhiyun 
1963*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart1_urfs_grp2_mux = {
1964*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart1_urfs_grp2_pad_mux),
1965*4882a593Smuzhiyun 	.pad_mux_list = audio_uart1_urfs_grp2_pad_mux,
1966*4882a593Smuzhiyun };
1967*4882a593Smuzhiyun 
1968*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urfs_grp0_pad_mux[] = {
1969*4882a593Smuzhiyun 	MUX(1, 139, 4, 0xa10, 30, 0xa90, 30),
1970*4882a593Smuzhiyun };
1971*4882a593Smuzhiyun 
1972*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urfs_grp0_mux = {
1973*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urfs_grp0_pad_mux),
1974*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urfs_grp0_pad_mux,
1975*4882a593Smuzhiyun };
1976*4882a593Smuzhiyun 
1977*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urfs_grp1_pad_mux[] = {
1978*4882a593Smuzhiyun 	MUX(1, 163, 6, 0xa10, 30, 0xa90, 30),
1979*4882a593Smuzhiyun };
1980*4882a593Smuzhiyun 
1981*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urfs_grp1_mux = {
1982*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urfs_grp1_pad_mux),
1983*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urfs_grp1_pad_mux,
1984*4882a593Smuzhiyun };
1985*4882a593Smuzhiyun 
1986*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urfs_grp2_pad_mux[] = {
1987*4882a593Smuzhiyun 	MUX(1, 96, 3, 0xa10, 30, 0xa90, 30),
1988*4882a593Smuzhiyun };
1989*4882a593Smuzhiyun 
1990*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urfs_grp2_mux = {
1991*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urfs_grp2_pad_mux),
1992*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urfs_grp2_pad_mux,
1993*4882a593Smuzhiyun };
1994*4882a593Smuzhiyun 
1995*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urxd_grp0_pad_mux[] = {
1996*4882a593Smuzhiyun 	MUX(1, 20, 2, 0xa00, 24, 0xa80, 24),
1997*4882a593Smuzhiyun };
1998*4882a593Smuzhiyun 
1999*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urxd_grp0_mux = {
2000*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urxd_grp0_pad_mux),
2001*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urxd_grp0_pad_mux,
2002*4882a593Smuzhiyun };
2003*4882a593Smuzhiyun 
2004*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urxd_grp1_pad_mux[] = {
2005*4882a593Smuzhiyun 	MUX(1, 109, 2, 0xa00, 24, 0xa80, 24),
2006*4882a593Smuzhiyun };
2007*4882a593Smuzhiyun 
2008*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urxd_grp1_mux = {
2009*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urxd_grp1_pad_mux),
2010*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urxd_grp1_pad_mux,
2011*4882a593Smuzhiyun };
2012*4882a593Smuzhiyun 
2013*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_urxd_grp2_pad_mux[] = {
2014*4882a593Smuzhiyun 	MUX(1, 93, 3, 0xa00, 24, 0xa80, 24),
2015*4882a593Smuzhiyun };
2016*4882a593Smuzhiyun 
2017*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_urxd_grp2_mux = {
2018*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_urxd_grp2_pad_mux),
2019*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_urxd_grp2_pad_mux,
2020*4882a593Smuzhiyun };
2021*4882a593Smuzhiyun 
2022*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_usclk_grp0_pad_mux[] = {
2023*4882a593Smuzhiyun 	MUX(1, 19, 2, 0xa00, 23, 0xa80, 23),
2024*4882a593Smuzhiyun };
2025*4882a593Smuzhiyun 
2026*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_usclk_grp0_mux = {
2027*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_usclk_grp0_pad_mux),
2028*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_usclk_grp0_pad_mux,
2029*4882a593Smuzhiyun };
2030*4882a593Smuzhiyun 
2031*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_usclk_grp1_pad_mux[] = {
2032*4882a593Smuzhiyun 	MUX(1, 101, 2, 0xa00, 23, 0xa80, 23),
2033*4882a593Smuzhiyun };
2034*4882a593Smuzhiyun 
2035*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_usclk_grp1_mux = {
2036*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_usclk_grp1_pad_mux),
2037*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_usclk_grp1_pad_mux,
2038*4882a593Smuzhiyun };
2039*4882a593Smuzhiyun 
2040*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_usclk_grp2_pad_mux[] = {
2041*4882a593Smuzhiyun 	MUX(1, 91, 3, 0xa00, 23, 0xa80, 23),
2042*4882a593Smuzhiyun };
2043*4882a593Smuzhiyun 
2044*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_usclk_grp2_mux = {
2045*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_usclk_grp2_pad_mux),
2046*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_usclk_grp2_pad_mux,
2047*4882a593Smuzhiyun };
2048*4882a593Smuzhiyun 
2049*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utfs_grp0_pad_mux[] = {
2050*4882a593Smuzhiyun 	MUX(1, 18, 2, 0xa00, 22, 0xa80, 22),
2051*4882a593Smuzhiyun };
2052*4882a593Smuzhiyun 
2053*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utfs_grp0_mux = {
2054*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utfs_grp0_pad_mux),
2055*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utfs_grp0_pad_mux,
2056*4882a593Smuzhiyun };
2057*4882a593Smuzhiyun 
2058*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utfs_grp1_pad_mux[] = {
2059*4882a593Smuzhiyun 	MUX(1, 111, 2, 0xa00, 22, 0xa80, 22),
2060*4882a593Smuzhiyun };
2061*4882a593Smuzhiyun 
2062*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utfs_grp1_mux = {
2063*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utfs_grp1_pad_mux),
2064*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utfs_grp1_pad_mux,
2065*4882a593Smuzhiyun };
2066*4882a593Smuzhiyun 
2067*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utfs_grp2_pad_mux[] = {
2068*4882a593Smuzhiyun 	MUX(1, 94, 3, 0xa00, 22, 0xa80, 22),
2069*4882a593Smuzhiyun };
2070*4882a593Smuzhiyun 
2071*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utfs_grp2_mux = {
2072*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utfs_grp2_pad_mux),
2073*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utfs_grp2_pad_mux,
2074*4882a593Smuzhiyun };
2075*4882a593Smuzhiyun 
2076*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utxd_grp0_pad_mux[] = {
2077*4882a593Smuzhiyun 	MUX(1, 21, 2, 0xa00, 25, 0xa80, 25),
2078*4882a593Smuzhiyun };
2079*4882a593Smuzhiyun 
2080*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utxd_grp0_mux = {
2081*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utxd_grp0_pad_mux),
2082*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utxd_grp0_pad_mux,
2083*4882a593Smuzhiyun };
2084*4882a593Smuzhiyun 
2085*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utxd_grp1_pad_mux[] = {
2086*4882a593Smuzhiyun 	MUX(1, 110, 2, 0xa00, 25, 0xa80, 25),
2087*4882a593Smuzhiyun };
2088*4882a593Smuzhiyun 
2089*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utxd_grp1_mux = {
2090*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utxd_grp1_pad_mux),
2091*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utxd_grp1_pad_mux,
2092*4882a593Smuzhiyun };
2093*4882a593Smuzhiyun 
2094*4882a593Smuzhiyun static struct atlas7_pad_mux audio_uart2_utxd_grp2_pad_mux[] = {
2095*4882a593Smuzhiyun 	MUX(1, 92, 3, 0xa00, 25, 0xa80, 25),
2096*4882a593Smuzhiyun };
2097*4882a593Smuzhiyun 
2098*4882a593Smuzhiyun static struct atlas7_grp_mux audio_uart2_utxd_grp2_mux = {
2099*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(audio_uart2_utxd_grp2_pad_mux),
2100*4882a593Smuzhiyun 	.pad_mux_list = audio_uart2_utxd_grp2_pad_mux,
2101*4882a593Smuzhiyun };
2102*4882a593Smuzhiyun 
2103*4882a593Smuzhiyun static struct atlas7_pad_mux c_can_trnsvr_en_grp0_pad_mux[] = {
2104*4882a593Smuzhiyun 	MUX(0, 2, 6, N, N, N, N),
2105*4882a593Smuzhiyun };
2106*4882a593Smuzhiyun 
2107*4882a593Smuzhiyun static struct atlas7_grp_mux c_can_trnsvr_en_grp0_mux = {
2108*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c_can_trnsvr_en_grp0_pad_mux),
2109*4882a593Smuzhiyun 	.pad_mux_list = c_can_trnsvr_en_grp0_pad_mux,
2110*4882a593Smuzhiyun };
2111*4882a593Smuzhiyun 
2112*4882a593Smuzhiyun static struct atlas7_pad_mux c_can_trnsvr_en_grp1_pad_mux[] = {
2113*4882a593Smuzhiyun 	MUX(0, 0, 2, N, N, N, N),
2114*4882a593Smuzhiyun };
2115*4882a593Smuzhiyun 
2116*4882a593Smuzhiyun static struct atlas7_grp_mux c_can_trnsvr_en_grp1_mux = {
2117*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c_can_trnsvr_en_grp1_pad_mux),
2118*4882a593Smuzhiyun 	.pad_mux_list = c_can_trnsvr_en_grp1_pad_mux,
2119*4882a593Smuzhiyun };
2120*4882a593Smuzhiyun 
2121*4882a593Smuzhiyun static struct atlas7_pad_mux c_can_trnsvr_intr_grp_pad_mux[] = {
2122*4882a593Smuzhiyun 	MUX(0, 1, 2, N, N, N, N),
2123*4882a593Smuzhiyun };
2124*4882a593Smuzhiyun 
2125*4882a593Smuzhiyun static struct atlas7_grp_mux c_can_trnsvr_intr_grp_mux = {
2126*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c_can_trnsvr_intr_grp_pad_mux),
2127*4882a593Smuzhiyun 	.pad_mux_list = c_can_trnsvr_intr_grp_pad_mux,
2128*4882a593Smuzhiyun };
2129*4882a593Smuzhiyun 
2130*4882a593Smuzhiyun static struct atlas7_pad_mux c_can_trnsvr_stb_n_grp_pad_mux[] = {
2131*4882a593Smuzhiyun 	MUX(0, 3, 6, N, N, N, N),
2132*4882a593Smuzhiyun };
2133*4882a593Smuzhiyun 
2134*4882a593Smuzhiyun static struct atlas7_grp_mux c_can_trnsvr_stb_n_grp_mux = {
2135*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c_can_trnsvr_stb_n_grp_pad_mux),
2136*4882a593Smuzhiyun 	.pad_mux_list = c_can_trnsvr_stb_n_grp_pad_mux,
2137*4882a593Smuzhiyun };
2138*4882a593Smuzhiyun 
2139*4882a593Smuzhiyun static struct atlas7_pad_mux c0_can_rxd_trnsv0_grp_pad_mux[] = {
2140*4882a593Smuzhiyun 	MUX(0, 11, 1, 0xa08, 9, 0xa88, 9),
2141*4882a593Smuzhiyun };
2142*4882a593Smuzhiyun 
2143*4882a593Smuzhiyun static struct atlas7_grp_mux c0_can_rxd_trnsv0_grp_mux = {
2144*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c0_can_rxd_trnsv0_grp_pad_mux),
2145*4882a593Smuzhiyun 	.pad_mux_list = c0_can_rxd_trnsv0_grp_pad_mux,
2146*4882a593Smuzhiyun };
2147*4882a593Smuzhiyun 
2148*4882a593Smuzhiyun static struct atlas7_pad_mux c0_can_rxd_trnsv1_grp_pad_mux[] = {
2149*4882a593Smuzhiyun 	MUX(0, 2, 5, 0xa10, 9, 0xa90, 9),
2150*4882a593Smuzhiyun };
2151*4882a593Smuzhiyun 
2152*4882a593Smuzhiyun static struct atlas7_grp_mux c0_can_rxd_trnsv1_grp_mux = {
2153*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c0_can_rxd_trnsv1_grp_pad_mux),
2154*4882a593Smuzhiyun 	.pad_mux_list = c0_can_rxd_trnsv1_grp_pad_mux,
2155*4882a593Smuzhiyun };
2156*4882a593Smuzhiyun 
2157*4882a593Smuzhiyun static struct atlas7_pad_mux c0_can_txd_trnsv0_grp_pad_mux[] = {
2158*4882a593Smuzhiyun 	MUX(0, 10, 1, N, N, N, N),
2159*4882a593Smuzhiyun };
2160*4882a593Smuzhiyun 
2161*4882a593Smuzhiyun static struct atlas7_grp_mux c0_can_txd_trnsv0_grp_mux = {
2162*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c0_can_txd_trnsv0_grp_pad_mux),
2163*4882a593Smuzhiyun 	.pad_mux_list = c0_can_txd_trnsv0_grp_pad_mux,
2164*4882a593Smuzhiyun };
2165*4882a593Smuzhiyun 
2166*4882a593Smuzhiyun static struct atlas7_pad_mux c0_can_txd_trnsv1_grp_pad_mux[] = {
2167*4882a593Smuzhiyun 	MUX(0, 3, 5, N, N, N, N),
2168*4882a593Smuzhiyun };
2169*4882a593Smuzhiyun 
2170*4882a593Smuzhiyun static struct atlas7_grp_mux c0_can_txd_trnsv1_grp_mux = {
2171*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c0_can_txd_trnsv1_grp_pad_mux),
2172*4882a593Smuzhiyun 	.pad_mux_list = c0_can_txd_trnsv1_grp_pad_mux,
2173*4882a593Smuzhiyun };
2174*4882a593Smuzhiyun 
2175*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_rxd_grp0_pad_mux[] = {
2176*4882a593Smuzhiyun 	MUX(1, 138, 2, 0xa00, 4, 0xa80, 4),
2177*4882a593Smuzhiyun };
2178*4882a593Smuzhiyun 
2179*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_rxd_grp0_mux = {
2180*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_rxd_grp0_pad_mux),
2181*4882a593Smuzhiyun 	.pad_mux_list = c1_can_rxd_grp0_pad_mux,
2182*4882a593Smuzhiyun };
2183*4882a593Smuzhiyun 
2184*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_rxd_grp1_pad_mux[] = {
2185*4882a593Smuzhiyun 	MUX(1, 147, 2, 0xa00, 4, 0xa80, 4),
2186*4882a593Smuzhiyun };
2187*4882a593Smuzhiyun 
2188*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_rxd_grp1_mux = {
2189*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_rxd_grp1_pad_mux),
2190*4882a593Smuzhiyun 	.pad_mux_list = c1_can_rxd_grp1_pad_mux,
2191*4882a593Smuzhiyun };
2192*4882a593Smuzhiyun 
2193*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_rxd_grp2_pad_mux[] = {
2194*4882a593Smuzhiyun 	MUX(0, 2, 2, 0xa00, 4, 0xa80, 4),
2195*4882a593Smuzhiyun };
2196*4882a593Smuzhiyun 
2197*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_rxd_grp2_mux = {
2198*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_rxd_grp2_pad_mux),
2199*4882a593Smuzhiyun 	.pad_mux_list = c1_can_rxd_grp2_pad_mux,
2200*4882a593Smuzhiyun };
2201*4882a593Smuzhiyun 
2202*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_rxd_grp3_pad_mux[] = {
2203*4882a593Smuzhiyun 	MUX(1, 162, 4, 0xa00, 4, 0xa80, 4),
2204*4882a593Smuzhiyun };
2205*4882a593Smuzhiyun 
2206*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_rxd_grp3_mux = {
2207*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_rxd_grp3_pad_mux),
2208*4882a593Smuzhiyun 	.pad_mux_list = c1_can_rxd_grp3_pad_mux,
2209*4882a593Smuzhiyun };
2210*4882a593Smuzhiyun 
2211*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_txd_grp0_pad_mux[] = {
2212*4882a593Smuzhiyun 	MUX(1, 137, 2, N, N, N, N),
2213*4882a593Smuzhiyun };
2214*4882a593Smuzhiyun 
2215*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_txd_grp0_mux = {
2216*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_txd_grp0_pad_mux),
2217*4882a593Smuzhiyun 	.pad_mux_list = c1_can_txd_grp0_pad_mux,
2218*4882a593Smuzhiyun };
2219*4882a593Smuzhiyun 
2220*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_txd_grp1_pad_mux[] = {
2221*4882a593Smuzhiyun 	MUX(1, 146, 2, N, N, N, N),
2222*4882a593Smuzhiyun };
2223*4882a593Smuzhiyun 
2224*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_txd_grp1_mux = {
2225*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_txd_grp1_pad_mux),
2226*4882a593Smuzhiyun 	.pad_mux_list = c1_can_txd_grp1_pad_mux,
2227*4882a593Smuzhiyun };
2228*4882a593Smuzhiyun 
2229*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_txd_grp2_pad_mux[] = {
2230*4882a593Smuzhiyun 	MUX(0, 3, 2, N, N, N, N),
2231*4882a593Smuzhiyun };
2232*4882a593Smuzhiyun 
2233*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_txd_grp2_mux = {
2234*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_txd_grp2_pad_mux),
2235*4882a593Smuzhiyun 	.pad_mux_list = c1_can_txd_grp2_pad_mux,
2236*4882a593Smuzhiyun };
2237*4882a593Smuzhiyun 
2238*4882a593Smuzhiyun static struct atlas7_pad_mux c1_can_txd_grp3_pad_mux[] = {
2239*4882a593Smuzhiyun 	MUX(1, 161, 4, N, N, N, N),
2240*4882a593Smuzhiyun };
2241*4882a593Smuzhiyun 
2242*4882a593Smuzhiyun static struct atlas7_grp_mux c1_can_txd_grp3_mux = {
2243*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(c1_can_txd_grp3_pad_mux),
2244*4882a593Smuzhiyun 	.pad_mux_list = c1_can_txd_grp3_pad_mux,
2245*4882a593Smuzhiyun };
2246*4882a593Smuzhiyun 
2247*4882a593Smuzhiyun static struct atlas7_pad_mux ca_audio_lpc_grp_pad_mux[] = {
2248*4882a593Smuzhiyun 	MUX(1, 62, 4, N, N, N, N),
2249*4882a593Smuzhiyun 	MUX(1, 63, 4, N, N, N, N),
2250*4882a593Smuzhiyun 	MUX(1, 64, 4, N, N, N, N),
2251*4882a593Smuzhiyun 	MUX(1, 65, 4, N, N, N, N),
2252*4882a593Smuzhiyun 	MUX(1, 66, 4, N, N, N, N),
2253*4882a593Smuzhiyun 	MUX(1, 67, 4, N, N, N, N),
2254*4882a593Smuzhiyun 	MUX(1, 68, 4, N, N, N, N),
2255*4882a593Smuzhiyun 	MUX(1, 69, 4, N, N, N, N),
2256*4882a593Smuzhiyun 	MUX(1, 70, 4, N, N, N, N),
2257*4882a593Smuzhiyun 	MUX(1, 71, 4, N, N, N, N),
2258*4882a593Smuzhiyun };
2259*4882a593Smuzhiyun 
2260*4882a593Smuzhiyun static struct atlas7_grp_mux ca_audio_lpc_grp_mux = {
2261*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_audio_lpc_grp_pad_mux),
2262*4882a593Smuzhiyun 	.pad_mux_list = ca_audio_lpc_grp_pad_mux,
2263*4882a593Smuzhiyun };
2264*4882a593Smuzhiyun 
2265*4882a593Smuzhiyun static struct atlas7_pad_mux ca_bt_lpc_grp_pad_mux[] = {
2266*4882a593Smuzhiyun 	MUX(1, 85, 5, N, N, N, N),
2267*4882a593Smuzhiyun 	MUX(1, 86, 5, N, N, N, N),
2268*4882a593Smuzhiyun 	MUX(1, 87, 5, N, N, N, N),
2269*4882a593Smuzhiyun 	MUX(1, 88, 5, N, N, N, N),
2270*4882a593Smuzhiyun 	MUX(1, 89, 5, N, N, N, N),
2271*4882a593Smuzhiyun 	MUX(1, 90, 5, N, N, N, N),
2272*4882a593Smuzhiyun };
2273*4882a593Smuzhiyun 
2274*4882a593Smuzhiyun static struct atlas7_grp_mux ca_bt_lpc_grp_mux = {
2275*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_bt_lpc_grp_pad_mux),
2276*4882a593Smuzhiyun 	.pad_mux_list = ca_bt_lpc_grp_pad_mux,
2277*4882a593Smuzhiyun };
2278*4882a593Smuzhiyun 
2279*4882a593Smuzhiyun static struct atlas7_pad_mux ca_coex_grp_pad_mux[] = {
2280*4882a593Smuzhiyun 	MUX(1, 129, 1, N, N, N, N),
2281*4882a593Smuzhiyun 	MUX(1, 130, 1, N, N, N, N),
2282*4882a593Smuzhiyun 	MUX(1, 131, 1, N, N, N, N),
2283*4882a593Smuzhiyun 	MUX(1, 132, 1, N, N, N, N),
2284*4882a593Smuzhiyun };
2285*4882a593Smuzhiyun 
2286*4882a593Smuzhiyun static struct atlas7_grp_mux ca_coex_grp_mux = {
2287*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_coex_grp_pad_mux),
2288*4882a593Smuzhiyun 	.pad_mux_list = ca_coex_grp_pad_mux,
2289*4882a593Smuzhiyun };
2290*4882a593Smuzhiyun 
2291*4882a593Smuzhiyun static struct atlas7_pad_mux ca_curator_lpc_grp_pad_mux[] = {
2292*4882a593Smuzhiyun 	MUX(1, 57, 4, N, N, N, N),
2293*4882a593Smuzhiyun 	MUX(1, 58, 4, N, N, N, N),
2294*4882a593Smuzhiyun 	MUX(1, 59, 4, N, N, N, N),
2295*4882a593Smuzhiyun 	MUX(1, 60, 4, N, N, N, N),
2296*4882a593Smuzhiyun };
2297*4882a593Smuzhiyun 
2298*4882a593Smuzhiyun static struct atlas7_grp_mux ca_curator_lpc_grp_mux = {
2299*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_curator_lpc_grp_pad_mux),
2300*4882a593Smuzhiyun 	.pad_mux_list = ca_curator_lpc_grp_pad_mux,
2301*4882a593Smuzhiyun };
2302*4882a593Smuzhiyun 
2303*4882a593Smuzhiyun static struct atlas7_pad_mux ca_pcm_debug_grp_pad_mux[] = {
2304*4882a593Smuzhiyun 	MUX(1, 91, 5, N, N, N, N),
2305*4882a593Smuzhiyun 	MUX(1, 93, 5, N, N, N, N),
2306*4882a593Smuzhiyun 	MUX(1, 94, 5, N, N, N, N),
2307*4882a593Smuzhiyun 	MUX(1, 92, 5, N, N, N, N),
2308*4882a593Smuzhiyun };
2309*4882a593Smuzhiyun 
2310*4882a593Smuzhiyun static struct atlas7_grp_mux ca_pcm_debug_grp_mux = {
2311*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_pcm_debug_grp_pad_mux),
2312*4882a593Smuzhiyun 	.pad_mux_list = ca_pcm_debug_grp_pad_mux,
2313*4882a593Smuzhiyun };
2314*4882a593Smuzhiyun 
2315*4882a593Smuzhiyun static struct atlas7_pad_mux ca_pio_grp_pad_mux[] = {
2316*4882a593Smuzhiyun 	MUX(1, 121, 2, N, N, N, N),
2317*4882a593Smuzhiyun 	MUX(1, 122, 2, N, N, N, N),
2318*4882a593Smuzhiyun 	MUX(1, 125, 6, N, N, N, N),
2319*4882a593Smuzhiyun 	MUX(1, 126, 6, N, N, N, N),
2320*4882a593Smuzhiyun 	MUX(1, 38, 5, N, N, N, N),
2321*4882a593Smuzhiyun 	MUX(1, 37, 5, N, N, N, N),
2322*4882a593Smuzhiyun 	MUX(1, 47, 5, N, N, N, N),
2323*4882a593Smuzhiyun 	MUX(1, 49, 5, N, N, N, N),
2324*4882a593Smuzhiyun 	MUX(1, 50, 5, N, N, N, N),
2325*4882a593Smuzhiyun 	MUX(1, 54, 4, N, N, N, N),
2326*4882a593Smuzhiyun 	MUX(1, 55, 4, N, N, N, N),
2327*4882a593Smuzhiyun 	MUX(1, 56, 4, N, N, N, N),
2328*4882a593Smuzhiyun };
2329*4882a593Smuzhiyun 
2330*4882a593Smuzhiyun static struct atlas7_grp_mux ca_pio_grp_mux = {
2331*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_pio_grp_pad_mux),
2332*4882a593Smuzhiyun 	.pad_mux_list = ca_pio_grp_pad_mux,
2333*4882a593Smuzhiyun };
2334*4882a593Smuzhiyun 
2335*4882a593Smuzhiyun static struct atlas7_pad_mux ca_sdio_debug_grp_pad_mux[] = {
2336*4882a593Smuzhiyun 	MUX(1, 40, 5, N, N, N, N),
2337*4882a593Smuzhiyun 	MUX(1, 39, 5, N, N, N, N),
2338*4882a593Smuzhiyun 	MUX(1, 44, 5, N, N, N, N),
2339*4882a593Smuzhiyun 	MUX(1, 43, 5, N, N, N, N),
2340*4882a593Smuzhiyun 	MUX(1, 42, 5, N, N, N, N),
2341*4882a593Smuzhiyun 	MUX(1, 41, 5, N, N, N, N),
2342*4882a593Smuzhiyun };
2343*4882a593Smuzhiyun 
2344*4882a593Smuzhiyun static struct atlas7_grp_mux ca_sdio_debug_grp_mux = {
2345*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_sdio_debug_grp_pad_mux),
2346*4882a593Smuzhiyun 	.pad_mux_list = ca_sdio_debug_grp_pad_mux,
2347*4882a593Smuzhiyun };
2348*4882a593Smuzhiyun 
2349*4882a593Smuzhiyun static struct atlas7_pad_mux ca_spi_grp_pad_mux[] = {
2350*4882a593Smuzhiyun 	MUX(1, 82, 5, N, N, N, N),
2351*4882a593Smuzhiyun 	MUX(1, 79, 5, 0xa08, 6, 0xa88, 6),
2352*4882a593Smuzhiyun 	MUX(1, 80, 5, N, N, N, N),
2353*4882a593Smuzhiyun 	MUX(1, 81, 5, N, N, N, N),
2354*4882a593Smuzhiyun };
2355*4882a593Smuzhiyun 
2356*4882a593Smuzhiyun static struct atlas7_grp_mux ca_spi_grp_mux = {
2357*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_spi_grp_pad_mux),
2358*4882a593Smuzhiyun 	.pad_mux_list = ca_spi_grp_pad_mux,
2359*4882a593Smuzhiyun };
2360*4882a593Smuzhiyun 
2361*4882a593Smuzhiyun static struct atlas7_pad_mux ca_trb_grp_pad_mux[] = {
2362*4882a593Smuzhiyun 	MUX(1, 91, 4, N, N, N, N),
2363*4882a593Smuzhiyun 	MUX(1, 93, 4, N, N, N, N),
2364*4882a593Smuzhiyun 	MUX(1, 94, 4, N, N, N, N),
2365*4882a593Smuzhiyun 	MUX(1, 95, 4, N, N, N, N),
2366*4882a593Smuzhiyun 	MUX(1, 96, 4, N, N, N, N),
2367*4882a593Smuzhiyun 	MUX(1, 78, 5, N, N, N, N),
2368*4882a593Smuzhiyun 	MUX(1, 74, 5, N, N, N, N),
2369*4882a593Smuzhiyun 	MUX(1, 75, 5, N, N, N, N),
2370*4882a593Smuzhiyun 	MUX(1, 76, 5, N, N, N, N),
2371*4882a593Smuzhiyun 	MUX(1, 77, 5, N, N, N, N),
2372*4882a593Smuzhiyun };
2373*4882a593Smuzhiyun 
2374*4882a593Smuzhiyun static struct atlas7_grp_mux ca_trb_grp_mux = {
2375*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_trb_grp_pad_mux),
2376*4882a593Smuzhiyun 	.pad_mux_list = ca_trb_grp_pad_mux,
2377*4882a593Smuzhiyun };
2378*4882a593Smuzhiyun 
2379*4882a593Smuzhiyun static struct atlas7_pad_mux ca_uart_debug_grp_pad_mux[] = {
2380*4882a593Smuzhiyun 	MUX(1, 136, 3, N, N, N, N),
2381*4882a593Smuzhiyun 	MUX(1, 135, 3, N, N, N, N),
2382*4882a593Smuzhiyun 	MUX(1, 134, 3, N, N, N, N),
2383*4882a593Smuzhiyun 	MUX(1, 133, 3, N, N, N, N),
2384*4882a593Smuzhiyun };
2385*4882a593Smuzhiyun 
2386*4882a593Smuzhiyun static struct atlas7_grp_mux ca_uart_debug_grp_mux = {
2387*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ca_uart_debug_grp_pad_mux),
2388*4882a593Smuzhiyun 	.pad_mux_list = ca_uart_debug_grp_pad_mux,
2389*4882a593Smuzhiyun };
2390*4882a593Smuzhiyun 
2391*4882a593Smuzhiyun static struct atlas7_pad_mux clkc_grp0_pad_mux[] = {
2392*4882a593Smuzhiyun 	MUX(1, 30, 2, 0xa08, 14, 0xa88, 14),
2393*4882a593Smuzhiyun 	MUX(1, 47, 6, N, N, N, N),
2394*4882a593Smuzhiyun };
2395*4882a593Smuzhiyun 
2396*4882a593Smuzhiyun static struct atlas7_grp_mux clkc_grp0_mux = {
2397*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(clkc_grp0_pad_mux),
2398*4882a593Smuzhiyun 	.pad_mux_list = clkc_grp0_pad_mux,
2399*4882a593Smuzhiyun };
2400*4882a593Smuzhiyun 
2401*4882a593Smuzhiyun static struct atlas7_pad_mux clkc_grp1_pad_mux[] = {
2402*4882a593Smuzhiyun 	MUX(1, 78, 3, 0xa08, 14, 0xa88, 14),
2403*4882a593Smuzhiyun 	MUX(1, 54, 5, N, N, N, N),
2404*4882a593Smuzhiyun };
2405*4882a593Smuzhiyun 
2406*4882a593Smuzhiyun static struct atlas7_grp_mux clkc_grp1_mux = {
2407*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(clkc_grp1_pad_mux),
2408*4882a593Smuzhiyun 	.pad_mux_list = clkc_grp1_pad_mux,
2409*4882a593Smuzhiyun };
2410*4882a593Smuzhiyun 
2411*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_i2c_grp_pad_mux[] = {
2412*4882a593Smuzhiyun 	MUX(1, 128, 2, N, N, N, N),
2413*4882a593Smuzhiyun 	MUX(1, 127, 2, N, N, N, N),
2414*4882a593Smuzhiyun };
2415*4882a593Smuzhiyun 
2416*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_i2c_grp_mux = {
2417*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_i2c_grp_pad_mux),
2418*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_i2c_grp_pad_mux,
2419*4882a593Smuzhiyun };
2420*4882a593Smuzhiyun 
2421*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_uart_nopause_grp_pad_mux[] = {
2422*4882a593Smuzhiyun 	MUX(1, 134, 4, N, N, N, N),
2423*4882a593Smuzhiyun 	MUX(1, 133, 4, N, N, N, N),
2424*4882a593Smuzhiyun };
2425*4882a593Smuzhiyun 
2426*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_uart_nopause_grp_mux = {
2427*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_uart_nopause_grp_pad_mux),
2428*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_uart_nopause_grp_pad_mux,
2429*4882a593Smuzhiyun };
2430*4882a593Smuzhiyun 
2431*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_uart_grp_pad_mux[] = {
2432*4882a593Smuzhiyun 	MUX(1, 134, 4, N, N, N, N),
2433*4882a593Smuzhiyun 	MUX(1, 133, 4, N, N, N, N),
2434*4882a593Smuzhiyun 	MUX(1, 136, 4, N, N, N, N),
2435*4882a593Smuzhiyun 	MUX(1, 135, 4, N, N, N, N),
2436*4882a593Smuzhiyun };
2437*4882a593Smuzhiyun 
2438*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_uart_grp_mux = {
2439*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_uart_grp_pad_mux),
2440*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_uart_grp_pad_mux,
2441*4882a593Smuzhiyun };
2442*4882a593Smuzhiyun 
2443*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_spi_grp0_pad_mux[] = {
2444*4882a593Smuzhiyun 	MUX(1, 22, 1, N, N, N, N),
2445*4882a593Smuzhiyun 	MUX(1, 25, 1, N, N, N, N),
2446*4882a593Smuzhiyun 	MUX(1, 23, 1, 0xa00, 10, 0xa80, 10),
2447*4882a593Smuzhiyun 	MUX(1, 24, 1, N, N, N, N),
2448*4882a593Smuzhiyun };
2449*4882a593Smuzhiyun 
2450*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_spi_grp0_mux = {
2451*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_spi_grp0_pad_mux),
2452*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_spi_grp0_pad_mux,
2453*4882a593Smuzhiyun };
2454*4882a593Smuzhiyun 
2455*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_spi_grp1_pad_mux[] = {
2456*4882a593Smuzhiyun 	MUX(1, 82, 3, N, N, N, N),
2457*4882a593Smuzhiyun 	MUX(1, 79, 3, N, N, N, N),
2458*4882a593Smuzhiyun 	MUX(1, 80, 3, 0xa00, 10, 0xa80, 10),
2459*4882a593Smuzhiyun 	MUX(1, 81, 3, N, N, N, N),
2460*4882a593Smuzhiyun };
2461*4882a593Smuzhiyun 
2462*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_spi_grp1_mux = {
2463*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_spi_grp1_pad_mux),
2464*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_spi_grp1_pad_mux,
2465*4882a593Smuzhiyun };
2466*4882a593Smuzhiyun 
2467*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_grp_pad_mux[] = {
2468*4882a593Smuzhiyun 	MUX(1, 54, 3, N, N, N, N),
2469*4882a593Smuzhiyun 	MUX(1, 53, 3, N, N, N, N),
2470*4882a593Smuzhiyun 	MUX(1, 82, 7, N, N, N, N),
2471*4882a593Smuzhiyun 	MUX(1, 74, 7, N, N, N, N),
2472*4882a593Smuzhiyun 	MUX(1, 75, 7, N, N, N, N),
2473*4882a593Smuzhiyun 	MUX(1, 76, 7, N, N, N, N),
2474*4882a593Smuzhiyun 	MUX(1, 77, 7, N, N, N, N),
2475*4882a593Smuzhiyun 	MUX(1, 78, 7, N, N, N, N),
2476*4882a593Smuzhiyun 	MUX(1, 79, 7, N, N, N, N),
2477*4882a593Smuzhiyun 	MUX(1, 80, 7, N, N, N, N),
2478*4882a593Smuzhiyun 	MUX(1, 81, 7, N, N, N, N),
2479*4882a593Smuzhiyun 	MUX(1, 83, 7, N, N, N, N),
2480*4882a593Smuzhiyun 	MUX(1, 84, 7, N, N, N, N),
2481*4882a593Smuzhiyun 	MUX(1, 73, 3, N, N, N, N),
2482*4882a593Smuzhiyun 	MUX(1, 55, 3, N, N, N, N),
2483*4882a593Smuzhiyun 	MUX(1, 56, 3, N, N, N, N),
2484*4882a593Smuzhiyun };
2485*4882a593Smuzhiyun 
2486*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_grp_mux = {
2487*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_grp_pad_mux),
2488*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_grp_pad_mux,
2489*4882a593Smuzhiyun };
2490*4882a593Smuzhiyun 
2491*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp0_pad_mux[] = {
2492*4882a593Smuzhiyun 	MUX(1, 57, 3, N, N, N, N),
2493*4882a593Smuzhiyun };
2494*4882a593Smuzhiyun 
2495*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp0_mux = {
2496*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp0_pad_mux),
2497*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp0_pad_mux,
2498*4882a593Smuzhiyun };
2499*4882a593Smuzhiyun 
2500*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp1_pad_mux[] = {
2501*4882a593Smuzhiyun 	MUX(1, 58, 3, N, N, N, N),
2502*4882a593Smuzhiyun };
2503*4882a593Smuzhiyun 
2504*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp1_mux = {
2505*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp1_pad_mux),
2506*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp1_pad_mux,
2507*4882a593Smuzhiyun };
2508*4882a593Smuzhiyun 
2509*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp2_pad_mux[] = {
2510*4882a593Smuzhiyun 	MUX(1, 59, 3, N, N, N, N),
2511*4882a593Smuzhiyun };
2512*4882a593Smuzhiyun 
2513*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp2_mux = {
2514*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp2_pad_mux),
2515*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp2_pad_mux,
2516*4882a593Smuzhiyun };
2517*4882a593Smuzhiyun 
2518*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp3_pad_mux[] = {
2519*4882a593Smuzhiyun 	MUX(1, 60, 3, N, N, N, N),
2520*4882a593Smuzhiyun };
2521*4882a593Smuzhiyun 
2522*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp3_mux = {
2523*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp3_pad_mux),
2524*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp3_pad_mux,
2525*4882a593Smuzhiyun };
2526*4882a593Smuzhiyun 
2527*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp4_pad_mux[] = {
2528*4882a593Smuzhiyun 	MUX(1, 61, 3, N, N, N, N),
2529*4882a593Smuzhiyun };
2530*4882a593Smuzhiyun 
2531*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp4_mux = {
2532*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp4_pad_mux),
2533*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp4_pad_mux,
2534*4882a593Smuzhiyun };
2535*4882a593Smuzhiyun 
2536*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp5_pad_mux[] = {
2537*4882a593Smuzhiyun 	MUX(1, 62, 3, N, N, N, N),
2538*4882a593Smuzhiyun };
2539*4882a593Smuzhiyun 
2540*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp5_mux = {
2541*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp5_pad_mux),
2542*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp5_pad_mux,
2543*4882a593Smuzhiyun };
2544*4882a593Smuzhiyun 
2545*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp6_pad_mux[] = {
2546*4882a593Smuzhiyun 	MUX(1, 63, 3, N, N, N, N),
2547*4882a593Smuzhiyun };
2548*4882a593Smuzhiyun 
2549*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp6_mux = {
2550*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp6_pad_mux),
2551*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp6_pad_mux,
2552*4882a593Smuzhiyun };
2553*4882a593Smuzhiyun 
2554*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp7_pad_mux[] = {
2555*4882a593Smuzhiyun 	MUX(1, 64, 3, N, N, N, N),
2556*4882a593Smuzhiyun };
2557*4882a593Smuzhiyun 
2558*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp7_mux = {
2559*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp7_pad_mux),
2560*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp7_pad_mux,
2561*4882a593Smuzhiyun };
2562*4882a593Smuzhiyun 
2563*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp8_pad_mux[] = {
2564*4882a593Smuzhiyun 	MUX(1, 65, 3, N, N, N, N),
2565*4882a593Smuzhiyun };
2566*4882a593Smuzhiyun 
2567*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp8_mux = {
2568*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp8_pad_mux),
2569*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp8_pad_mux,
2570*4882a593Smuzhiyun };
2571*4882a593Smuzhiyun 
2572*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp9_pad_mux[] = {
2573*4882a593Smuzhiyun 	MUX(1, 66, 3, N, N, N, N),
2574*4882a593Smuzhiyun };
2575*4882a593Smuzhiyun 
2576*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp9_mux = {
2577*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp9_pad_mux),
2578*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp9_pad_mux,
2579*4882a593Smuzhiyun };
2580*4882a593Smuzhiyun 
2581*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp10_pad_mux[] = {
2582*4882a593Smuzhiyun 	MUX(1, 67, 3, N, N, N, N),
2583*4882a593Smuzhiyun };
2584*4882a593Smuzhiyun 
2585*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp10_mux = {
2586*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp10_pad_mux),
2587*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp10_pad_mux,
2588*4882a593Smuzhiyun };
2589*4882a593Smuzhiyun 
2590*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp11_pad_mux[] = {
2591*4882a593Smuzhiyun 	MUX(1, 68, 3, N, N, N, N),
2592*4882a593Smuzhiyun };
2593*4882a593Smuzhiyun 
2594*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp11_mux = {
2595*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp11_pad_mux),
2596*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp11_pad_mux,
2597*4882a593Smuzhiyun };
2598*4882a593Smuzhiyun 
2599*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp12_pad_mux[] = {
2600*4882a593Smuzhiyun 	MUX(1, 69, 3, N, N, N, N),
2601*4882a593Smuzhiyun };
2602*4882a593Smuzhiyun 
2603*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp12_mux = {
2604*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp12_pad_mux),
2605*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp12_pad_mux,
2606*4882a593Smuzhiyun };
2607*4882a593Smuzhiyun 
2608*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp13_pad_mux[] = {
2609*4882a593Smuzhiyun 	MUX(1, 70, 3, N, N, N, N),
2610*4882a593Smuzhiyun };
2611*4882a593Smuzhiyun 
2612*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp13_mux = {
2613*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp13_pad_mux),
2614*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp13_pad_mux,
2615*4882a593Smuzhiyun };
2616*4882a593Smuzhiyun 
2617*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp14_pad_mux[] = {
2618*4882a593Smuzhiyun 	MUX(1, 71, 3, N, N, N, N),
2619*4882a593Smuzhiyun };
2620*4882a593Smuzhiyun 
2621*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp14_mux = {
2622*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp14_pad_mux),
2623*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp14_pad_mux,
2624*4882a593Smuzhiyun };
2625*4882a593Smuzhiyun 
2626*4882a593Smuzhiyun static struct atlas7_pad_mux cvbs_dbg_test_grp15_pad_mux[] = {
2627*4882a593Smuzhiyun 	MUX(1, 72, 3, N, N, N, N),
2628*4882a593Smuzhiyun };
2629*4882a593Smuzhiyun 
2630*4882a593Smuzhiyun static struct atlas7_grp_mux cvbs_dbg_test_grp15_mux = {
2631*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp15_pad_mux),
2632*4882a593Smuzhiyun 	.pad_mux_list = cvbs_dbg_test_grp15_pad_mux,
2633*4882a593Smuzhiyun };
2634*4882a593Smuzhiyun 
2635*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_power_grp_pad_mux[] = {
2636*4882a593Smuzhiyun 	MUX(1, 123, 7, N, N, N, N),
2637*4882a593Smuzhiyun 	MUX(1, 124, 7, N, N, N, N),
2638*4882a593Smuzhiyun 	MUX(1, 121, 7, N, N, N, N),
2639*4882a593Smuzhiyun 	MUX(1, 122, 7, N, N, N, N),
2640*4882a593Smuzhiyun 	MUX(1, 125, 7, N, N, N, N),
2641*4882a593Smuzhiyun 	MUX(1, 120, 7, N, N, N, N),
2642*4882a593Smuzhiyun };
2643*4882a593Smuzhiyun 
2644*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_power_grp_mux = {
2645*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_power_grp_pad_mux),
2646*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_power_grp_pad_mux,
2647*4882a593Smuzhiyun };
2648*4882a593Smuzhiyun 
2649*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_sw_status_grp_pad_mux[] = {
2650*4882a593Smuzhiyun 	MUX(1, 57, 7, N, N, N, N),
2651*4882a593Smuzhiyun 	MUX(1, 58, 7, N, N, N, N),
2652*4882a593Smuzhiyun 	MUX(1, 59, 7, N, N, N, N),
2653*4882a593Smuzhiyun 	MUX(1, 60, 7, N, N, N, N),
2654*4882a593Smuzhiyun 	MUX(1, 61, 7, N, N, N, N),
2655*4882a593Smuzhiyun 	MUX(1, 62, 7, N, N, N, N),
2656*4882a593Smuzhiyun 	MUX(1, 63, 7, N, N, N, N),
2657*4882a593Smuzhiyun 	MUX(1, 64, 7, N, N, N, N),
2658*4882a593Smuzhiyun 	MUX(1, 65, 7, N, N, N, N),
2659*4882a593Smuzhiyun 	MUX(1, 66, 7, N, N, N, N),
2660*4882a593Smuzhiyun 	MUX(1, 67, 7, N, N, N, N),
2661*4882a593Smuzhiyun 	MUX(1, 68, 7, N, N, N, N),
2662*4882a593Smuzhiyun 	MUX(1, 69, 7, N, N, N, N),
2663*4882a593Smuzhiyun 	MUX(1, 70, 7, N, N, N, N),
2664*4882a593Smuzhiyun 	MUX(1, 71, 7, N, N, N, N),
2665*4882a593Smuzhiyun 	MUX(1, 72, 7, N, N, N, N),
2666*4882a593Smuzhiyun 	MUX(1, 53, 7, N, N, N, N),
2667*4882a593Smuzhiyun 	MUX(1, 55, 7, N, N, N, N),
2668*4882a593Smuzhiyun 	MUX(1, 56, 7, 0xa08, 12, 0xa88, 12),
2669*4882a593Smuzhiyun 	MUX(1, 54, 7, N, N, N, N),
2670*4882a593Smuzhiyun };
2671*4882a593Smuzhiyun 
2672*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_sw_status_grp_mux = {
2673*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_sw_status_grp_pad_mux),
2674*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_sw_status_grp_pad_mux,
2675*4882a593Smuzhiyun };
2676*4882a593Smuzhiyun 
2677*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_eclk_grp_pad_mux[] = {
2678*4882a593Smuzhiyun 	MUX(1, 113, 4, N, N, N, N),
2679*4882a593Smuzhiyun };
2680*4882a593Smuzhiyun 
2681*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_eclk_grp_mux = {
2682*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_eclk_grp_pad_mux),
2683*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_eclk_grp_pad_mux,
2684*4882a593Smuzhiyun };
2685*4882a593Smuzhiyun 
2686*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_irq1_grp0_pad_mux[] = {
2687*4882a593Smuzhiyun 	MUX(1, 112, 4, 0xa08, 10, 0xa88, 10),
2688*4882a593Smuzhiyun };
2689*4882a593Smuzhiyun 
2690*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_irq1_grp0_mux = {
2691*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_irq1_grp0_pad_mux),
2692*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_irq1_grp0_pad_mux,
2693*4882a593Smuzhiyun };
2694*4882a593Smuzhiyun 
2695*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_irq2_grp0_pad_mux[] = {
2696*4882a593Smuzhiyun 	MUX(1, 118, 4, 0xa08, 11, 0xa88, 11),
2697*4882a593Smuzhiyun };
2698*4882a593Smuzhiyun 
2699*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_irq2_grp0_mux = {
2700*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_irq2_grp0_pad_mux),
2701*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_irq2_grp0_pad_mux,
2702*4882a593Smuzhiyun };
2703*4882a593Smuzhiyun 
2704*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_tm_grp_pad_mux[] = {
2705*4882a593Smuzhiyun 	MUX(1, 115, 4, N, N, N, N),
2706*4882a593Smuzhiyun };
2707*4882a593Smuzhiyun 
2708*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_tm_grp_mux = {
2709*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_tm_grp_pad_mux),
2710*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_tm_grp_pad_mux,
2711*4882a593Smuzhiyun };
2712*4882a593Smuzhiyun 
2713*4882a593Smuzhiyun static struct atlas7_pad_mux gn_gnss_tsync_grp_pad_mux[] = {
2714*4882a593Smuzhiyun 	MUX(1, 114, 4, N, N, N, N),
2715*4882a593Smuzhiyun };
2716*4882a593Smuzhiyun 
2717*4882a593Smuzhiyun static struct atlas7_grp_mux gn_gnss_tsync_grp_mux = {
2718*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_gnss_tsync_grp_pad_mux),
2719*4882a593Smuzhiyun 	.pad_mux_list = gn_gnss_tsync_grp_pad_mux,
2720*4882a593Smuzhiyun };
2721*4882a593Smuzhiyun 
2722*4882a593Smuzhiyun static struct atlas7_pad_mux gn_io_gnsssys_sw_cfg_grp_pad_mux[] = {
2723*4882a593Smuzhiyun 	MUX(1, 44, 7, N, N, N, N),
2724*4882a593Smuzhiyun 	MUX(1, 43, 7, N, N, N, N),
2725*4882a593Smuzhiyun 	MUX(1, 42, 7, N, N, N, N),
2726*4882a593Smuzhiyun 	MUX(1, 41, 7, N, N, N, N),
2727*4882a593Smuzhiyun 	MUX(1, 40, 7, N, N, N, N),
2728*4882a593Smuzhiyun 	MUX(1, 39, 7, N, N, N, N),
2729*4882a593Smuzhiyun 	MUX(1, 38, 7, N, N, N, N),
2730*4882a593Smuzhiyun 	MUX(1, 37, 7, N, N, N, N),
2731*4882a593Smuzhiyun 	MUX(1, 49, 7, N, N, N, N),
2732*4882a593Smuzhiyun 	MUX(1, 50, 7, N, N, N, N),
2733*4882a593Smuzhiyun 	MUX(1, 91, 7, N, N, N, N),
2734*4882a593Smuzhiyun 	MUX(1, 92, 7, N, N, N, N),
2735*4882a593Smuzhiyun 	MUX(1, 93, 7, N, N, N, N),
2736*4882a593Smuzhiyun 	MUX(1, 94, 7, N, N, N, N),
2737*4882a593Smuzhiyun 	MUX(1, 95, 7, N, N, N, N),
2738*4882a593Smuzhiyun 	MUX(1, 96, 7, N, N, N, N),
2739*4882a593Smuzhiyun };
2740*4882a593Smuzhiyun 
2741*4882a593Smuzhiyun static struct atlas7_grp_mux gn_io_gnsssys_sw_cfg_grp_mux = {
2742*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_io_gnsssys_sw_cfg_grp_pad_mux),
2743*4882a593Smuzhiyun 	.pad_mux_list = gn_io_gnsssys_sw_cfg_grp_pad_mux,
2744*4882a593Smuzhiyun };
2745*4882a593Smuzhiyun 
2746*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_grp0_pad_mux[] = {
2747*4882a593Smuzhiyun 	MUX(1, 29, 1, 0xa00, 6, 0xa80, 6),
2748*4882a593Smuzhiyun 	MUX(1, 28, 1, 0xa00, 7, 0xa80, 7),
2749*4882a593Smuzhiyun 	MUX(1, 26, 1, 0xa00, 8, 0xa80, 8),
2750*4882a593Smuzhiyun 	MUX(1, 27, 1, 0xa00, 9, 0xa80, 9),
2751*4882a593Smuzhiyun };
2752*4882a593Smuzhiyun 
2753*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_grp0_mux = {
2754*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_grp0_pad_mux),
2755*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_grp0_pad_mux,
2756*4882a593Smuzhiyun };
2757*4882a593Smuzhiyun 
2758*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_grp1_pad_mux[] = {
2759*4882a593Smuzhiyun 	MUX(1, 77, 3, 0xa00, 6, 0xa80, 6),
2760*4882a593Smuzhiyun 	MUX(1, 76, 3, 0xa00, 7, 0xa80, 7),
2761*4882a593Smuzhiyun 	MUX(1, 74, 3, 0xa00, 8, 0xa80, 8),
2762*4882a593Smuzhiyun 	MUX(1, 75, 3, 0xa00, 9, 0xa80, 9),
2763*4882a593Smuzhiyun };
2764*4882a593Smuzhiyun 
2765*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_grp1_mux = {
2766*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_grp1_pad_mux),
2767*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_grp1_pad_mux,
2768*4882a593Smuzhiyun };
2769*4882a593Smuzhiyun 
2770*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_shutdown_grp0_pad_mux[] = {
2771*4882a593Smuzhiyun 	MUX(1, 30, 1, N, N, N, N),
2772*4882a593Smuzhiyun };
2773*4882a593Smuzhiyun 
2774*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_shutdown_grp0_mux = {
2775*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp0_pad_mux),
2776*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_shutdown_grp0_pad_mux,
2777*4882a593Smuzhiyun };
2778*4882a593Smuzhiyun 
2779*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_shutdown_grp1_pad_mux[] = {
2780*4882a593Smuzhiyun 	MUX(1, 83, 3, N, N, N, N),
2781*4882a593Smuzhiyun };
2782*4882a593Smuzhiyun 
2783*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_shutdown_grp1_mux = {
2784*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp1_pad_mux),
2785*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_shutdown_grp1_pad_mux,
2786*4882a593Smuzhiyun };
2787*4882a593Smuzhiyun 
2788*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_shutdown_grp2_pad_mux[] = {
2789*4882a593Smuzhiyun 	MUX(1, 117, 4, N, N, N, N),
2790*4882a593Smuzhiyun };
2791*4882a593Smuzhiyun 
2792*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_shutdown_grp2_mux = {
2793*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp2_pad_mux),
2794*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_shutdown_grp2_pad_mux,
2795*4882a593Smuzhiyun };
2796*4882a593Smuzhiyun 
2797*4882a593Smuzhiyun static struct atlas7_pad_mux gn_trg_shutdown_grp3_pad_mux[] = {
2798*4882a593Smuzhiyun 	MUX(1, 123, 5, N, N, N, N),
2799*4882a593Smuzhiyun };
2800*4882a593Smuzhiyun 
2801*4882a593Smuzhiyun static struct atlas7_grp_mux gn_trg_shutdown_grp3_mux = {
2802*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp3_pad_mux),
2803*4882a593Smuzhiyun 	.pad_mux_list = gn_trg_shutdown_grp3_pad_mux,
2804*4882a593Smuzhiyun };
2805*4882a593Smuzhiyun 
2806*4882a593Smuzhiyun static struct atlas7_pad_mux i2c0_grp_pad_mux[] = {
2807*4882a593Smuzhiyun 	MUX(1, 128, 1, N, N, N, N),
2808*4882a593Smuzhiyun 	MUX(1, 127, 1, N, N, N, N),
2809*4882a593Smuzhiyun };
2810*4882a593Smuzhiyun 
2811*4882a593Smuzhiyun static struct atlas7_grp_mux i2c0_grp_mux = {
2812*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2c0_grp_pad_mux),
2813*4882a593Smuzhiyun 	.pad_mux_list = i2c0_grp_pad_mux,
2814*4882a593Smuzhiyun };
2815*4882a593Smuzhiyun 
2816*4882a593Smuzhiyun static struct atlas7_pad_mux i2c1_grp_pad_mux[] = {
2817*4882a593Smuzhiyun 	MUX(1, 126, 4, N, N, N, N),
2818*4882a593Smuzhiyun 	MUX(1, 125, 4, N, N, N, N),
2819*4882a593Smuzhiyun };
2820*4882a593Smuzhiyun 
2821*4882a593Smuzhiyun static struct atlas7_grp_mux i2c1_grp_mux = {
2822*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2c1_grp_pad_mux),
2823*4882a593Smuzhiyun 	.pad_mux_list = i2c1_grp_pad_mux,
2824*4882a593Smuzhiyun };
2825*4882a593Smuzhiyun 
2826*4882a593Smuzhiyun static struct atlas7_pad_mux i2s0_grp_pad_mux[] = {
2827*4882a593Smuzhiyun 	MUX(1, 91, 2, 0xa10, 12, 0xa90, 12),
2828*4882a593Smuzhiyun 	MUX(1, 93, 2, 0xa10, 13, 0xa90, 13),
2829*4882a593Smuzhiyun 	MUX(1, 94, 2, 0xa10, 14, 0xa90, 14),
2830*4882a593Smuzhiyun 	MUX(1, 92, 2, 0xa10, 15, 0xa90, 15),
2831*4882a593Smuzhiyun };
2832*4882a593Smuzhiyun 
2833*4882a593Smuzhiyun static struct atlas7_grp_mux i2s0_grp_mux = {
2834*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s0_grp_pad_mux),
2835*4882a593Smuzhiyun 	.pad_mux_list = i2s0_grp_pad_mux,
2836*4882a593Smuzhiyun };
2837*4882a593Smuzhiyun 
2838*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_basic_grp_pad_mux[] = {
2839*4882a593Smuzhiyun 	MUX(1, 95, 2, 0xa10, 16, 0xa90, 16),
2840*4882a593Smuzhiyun 	MUX(1, 96, 2, 0xa10, 19, 0xa90, 19),
2841*4882a593Smuzhiyun };
2842*4882a593Smuzhiyun 
2843*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_basic_grp_mux = {
2844*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_basic_grp_pad_mux),
2845*4882a593Smuzhiyun 	.pad_mux_list = i2s1_basic_grp_pad_mux,
2846*4882a593Smuzhiyun };
2847*4882a593Smuzhiyun 
2848*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd0_grp0_pad_mux[] = {
2849*4882a593Smuzhiyun 	MUX(1, 61, 4, 0xa10, 17, 0xa90, 17),
2850*4882a593Smuzhiyun };
2851*4882a593Smuzhiyun 
2852*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd0_grp0_mux = {
2853*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd0_grp0_pad_mux),
2854*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd0_grp0_pad_mux,
2855*4882a593Smuzhiyun };
2856*4882a593Smuzhiyun 
2857*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd0_grp1_pad_mux[] = {
2858*4882a593Smuzhiyun 	MUX(1, 131, 4, 0xa10, 17, 0xa90, 17),
2859*4882a593Smuzhiyun };
2860*4882a593Smuzhiyun 
2861*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd0_grp1_mux = {
2862*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd0_grp1_pad_mux),
2863*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd0_grp1_pad_mux,
2864*4882a593Smuzhiyun };
2865*4882a593Smuzhiyun 
2866*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd0_grp2_pad_mux[] = {
2867*4882a593Smuzhiyun 	MUX(1, 129, 2, 0xa10, 17, 0xa90, 17),
2868*4882a593Smuzhiyun };
2869*4882a593Smuzhiyun 
2870*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd0_grp2_mux = {
2871*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd0_grp2_pad_mux),
2872*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd0_grp2_pad_mux,
2873*4882a593Smuzhiyun };
2874*4882a593Smuzhiyun 
2875*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd0_grp3_pad_mux[] = {
2876*4882a593Smuzhiyun 	MUX(1, 117, 7, 0xa10, 17, 0xa90, 17),
2877*4882a593Smuzhiyun };
2878*4882a593Smuzhiyun 
2879*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd0_grp3_mux = {
2880*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd0_grp3_pad_mux),
2881*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd0_grp3_pad_mux,
2882*4882a593Smuzhiyun };
2883*4882a593Smuzhiyun 
2884*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd0_grp4_pad_mux[] = {
2885*4882a593Smuzhiyun 	MUX(1, 83, 4, 0xa10, 17, 0xa90, 17),
2886*4882a593Smuzhiyun };
2887*4882a593Smuzhiyun 
2888*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd0_grp4_mux = {
2889*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd0_grp4_pad_mux),
2890*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd0_grp4_pad_mux,
2891*4882a593Smuzhiyun };
2892*4882a593Smuzhiyun 
2893*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd1_grp0_pad_mux[] = {
2894*4882a593Smuzhiyun 	MUX(1, 72, 4, 0xa10, 18, 0xa90, 18),
2895*4882a593Smuzhiyun };
2896*4882a593Smuzhiyun 
2897*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd1_grp0_mux = {
2898*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd1_grp0_pad_mux),
2899*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd1_grp0_pad_mux,
2900*4882a593Smuzhiyun };
2901*4882a593Smuzhiyun 
2902*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd1_grp1_pad_mux[] = {
2903*4882a593Smuzhiyun 	MUX(1, 132, 4, 0xa10, 18, 0xa90, 18),
2904*4882a593Smuzhiyun };
2905*4882a593Smuzhiyun 
2906*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd1_grp1_mux = {
2907*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd1_grp1_pad_mux),
2908*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd1_grp1_pad_mux,
2909*4882a593Smuzhiyun };
2910*4882a593Smuzhiyun 
2911*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd1_grp2_pad_mux[] = {
2912*4882a593Smuzhiyun 	MUX(1, 130, 2, 0xa10, 18, 0xa90, 18),
2913*4882a593Smuzhiyun };
2914*4882a593Smuzhiyun 
2915*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd1_grp2_mux = {
2916*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd1_grp2_pad_mux),
2917*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd1_grp2_pad_mux,
2918*4882a593Smuzhiyun };
2919*4882a593Smuzhiyun 
2920*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd1_grp3_pad_mux[] = {
2921*4882a593Smuzhiyun 	MUX(1, 118, 7, 0xa10, 18, 0xa90, 18),
2922*4882a593Smuzhiyun };
2923*4882a593Smuzhiyun 
2924*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd1_grp3_mux = {
2925*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd1_grp3_pad_mux),
2926*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd1_grp3_pad_mux,
2927*4882a593Smuzhiyun };
2928*4882a593Smuzhiyun 
2929*4882a593Smuzhiyun static struct atlas7_pad_mux i2s1_rxd1_grp4_pad_mux[] = {
2930*4882a593Smuzhiyun 	MUX(1, 84, 4, 0xa10, 18, 0xa90, 18),
2931*4882a593Smuzhiyun };
2932*4882a593Smuzhiyun 
2933*4882a593Smuzhiyun static struct atlas7_grp_mux i2s1_rxd1_grp4_mux = {
2934*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(i2s1_rxd1_grp4_pad_mux),
2935*4882a593Smuzhiyun 	.pad_mux_list = i2s1_rxd1_grp4_pad_mux,
2936*4882a593Smuzhiyun };
2937*4882a593Smuzhiyun 
2938*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_jt_dbg_nsrst_grp_pad_mux[] = {
2939*4882a593Smuzhiyun 	MUX(1, 125, 5, 0xa08, 2, 0xa88, 2),
2940*4882a593Smuzhiyun };
2941*4882a593Smuzhiyun 
2942*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_jt_dbg_nsrst_grp_mux = {
2943*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_jt_dbg_nsrst_grp_pad_mux),
2944*4882a593Smuzhiyun 	.pad_mux_list = jtag_jt_dbg_nsrst_grp_pad_mux,
2945*4882a593Smuzhiyun };
2946*4882a593Smuzhiyun 
2947*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_ntrst_grp0_pad_mux[] = {
2948*4882a593Smuzhiyun 	MUX(0, 4, 3, 0xa08, 3, 0xa88, 3),
2949*4882a593Smuzhiyun };
2950*4882a593Smuzhiyun 
2951*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_ntrst_grp0_mux = {
2952*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_ntrst_grp0_pad_mux),
2953*4882a593Smuzhiyun 	.pad_mux_list = jtag_ntrst_grp0_pad_mux,
2954*4882a593Smuzhiyun };
2955*4882a593Smuzhiyun 
2956*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_ntrst_grp1_pad_mux[] = {
2957*4882a593Smuzhiyun 	MUX(1, 163, 1, 0xa08, 3, 0xa88, 3),
2958*4882a593Smuzhiyun };
2959*4882a593Smuzhiyun 
2960*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_ntrst_grp1_mux = {
2961*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_ntrst_grp1_pad_mux),
2962*4882a593Smuzhiyun 	.pad_mux_list = jtag_ntrst_grp1_pad_mux,
2963*4882a593Smuzhiyun };
2964*4882a593Smuzhiyun 
2965*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_swdiotms_grp0_pad_mux[] = {
2966*4882a593Smuzhiyun 	MUX(0, 2, 3, 0xa10, 10, 0xa90, 10),
2967*4882a593Smuzhiyun };
2968*4882a593Smuzhiyun 
2969*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_swdiotms_grp0_mux = {
2970*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_swdiotms_grp0_pad_mux),
2971*4882a593Smuzhiyun 	.pad_mux_list = jtag_swdiotms_grp0_pad_mux,
2972*4882a593Smuzhiyun };
2973*4882a593Smuzhiyun 
2974*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_swdiotms_grp1_pad_mux[] = {
2975*4882a593Smuzhiyun 	MUX(1, 160, 1, 0xa10, 10, 0xa90, 10),
2976*4882a593Smuzhiyun };
2977*4882a593Smuzhiyun 
2978*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_swdiotms_grp1_mux = {
2979*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_swdiotms_grp1_pad_mux),
2980*4882a593Smuzhiyun 	.pad_mux_list = jtag_swdiotms_grp1_pad_mux,
2981*4882a593Smuzhiyun };
2982*4882a593Smuzhiyun 
2983*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tck_grp0_pad_mux[] = {
2984*4882a593Smuzhiyun 	MUX(0, 0, 3, 0xa10, 11, 0xa90, 11),
2985*4882a593Smuzhiyun };
2986*4882a593Smuzhiyun 
2987*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tck_grp0_mux = {
2988*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tck_grp0_pad_mux),
2989*4882a593Smuzhiyun 	.pad_mux_list = jtag_tck_grp0_pad_mux,
2990*4882a593Smuzhiyun };
2991*4882a593Smuzhiyun 
2992*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tck_grp1_pad_mux[] = {
2993*4882a593Smuzhiyun 	MUX(1, 161, 1, 0xa10, 11, 0xa90, 11),
2994*4882a593Smuzhiyun };
2995*4882a593Smuzhiyun 
2996*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tck_grp1_mux = {
2997*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tck_grp1_pad_mux),
2998*4882a593Smuzhiyun 	.pad_mux_list = jtag_tck_grp1_pad_mux,
2999*4882a593Smuzhiyun };
3000*4882a593Smuzhiyun 
3001*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tdi_grp0_pad_mux[] = {
3002*4882a593Smuzhiyun 	MUX(0, 1, 3, 0xa10, 31, 0xa90, 31),
3003*4882a593Smuzhiyun };
3004*4882a593Smuzhiyun 
3005*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tdi_grp0_mux = {
3006*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tdi_grp0_pad_mux),
3007*4882a593Smuzhiyun 	.pad_mux_list = jtag_tdi_grp0_pad_mux,
3008*4882a593Smuzhiyun };
3009*4882a593Smuzhiyun 
3010*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tdi_grp1_pad_mux[] = {
3011*4882a593Smuzhiyun 	MUX(1, 162, 1, 0xa10, 31, 0xa90, 31),
3012*4882a593Smuzhiyun };
3013*4882a593Smuzhiyun 
3014*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tdi_grp1_mux = {
3015*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tdi_grp1_pad_mux),
3016*4882a593Smuzhiyun 	.pad_mux_list = jtag_tdi_grp1_pad_mux,
3017*4882a593Smuzhiyun };
3018*4882a593Smuzhiyun 
3019*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tdo_grp0_pad_mux[] = {
3020*4882a593Smuzhiyun 	MUX(0, 3, 3, N, N, N, N),
3021*4882a593Smuzhiyun };
3022*4882a593Smuzhiyun 
3023*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tdo_grp0_mux = {
3024*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tdo_grp0_pad_mux),
3025*4882a593Smuzhiyun 	.pad_mux_list = jtag_tdo_grp0_pad_mux,
3026*4882a593Smuzhiyun };
3027*4882a593Smuzhiyun 
3028*4882a593Smuzhiyun static struct atlas7_pad_mux jtag_tdo_grp1_pad_mux[] = {
3029*4882a593Smuzhiyun 	MUX(1, 159, 1, N, N, N, N),
3030*4882a593Smuzhiyun };
3031*4882a593Smuzhiyun 
3032*4882a593Smuzhiyun static struct atlas7_grp_mux jtag_tdo_grp1_mux = {
3033*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(jtag_tdo_grp1_pad_mux),
3034*4882a593Smuzhiyun 	.pad_mux_list = jtag_tdo_grp1_pad_mux,
3035*4882a593Smuzhiyun };
3036*4882a593Smuzhiyun 
3037*4882a593Smuzhiyun static struct atlas7_pad_mux ks_kas_spi_grp0_pad_mux[] = {
3038*4882a593Smuzhiyun 	MUX(1, 141, 2, N, N, N, N),
3039*4882a593Smuzhiyun 	MUX(1, 144, 2, 0xa08, 8, 0xa88, 8),
3040*4882a593Smuzhiyun 	MUX(1, 143, 2, N, N, N, N),
3041*4882a593Smuzhiyun 	MUX(1, 142, 2, N, N, N, N),
3042*4882a593Smuzhiyun };
3043*4882a593Smuzhiyun 
3044*4882a593Smuzhiyun static struct atlas7_grp_mux ks_kas_spi_grp0_mux = {
3045*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ks_kas_spi_grp0_pad_mux),
3046*4882a593Smuzhiyun 	.pad_mux_list = ks_kas_spi_grp0_pad_mux,
3047*4882a593Smuzhiyun };
3048*4882a593Smuzhiyun 
3049*4882a593Smuzhiyun static struct atlas7_pad_mux ld_ldd_grp_pad_mux[] = {
3050*4882a593Smuzhiyun 	MUX(1, 57, 1, N, N, N, N),
3051*4882a593Smuzhiyun 	MUX(1, 58, 1, N, N, N, N),
3052*4882a593Smuzhiyun 	MUX(1, 59, 1, N, N, N, N),
3053*4882a593Smuzhiyun 	MUX(1, 60, 1, N, N, N, N),
3054*4882a593Smuzhiyun 	MUX(1, 61, 1, N, N, N, N),
3055*4882a593Smuzhiyun 	MUX(1, 62, 1, N, N, N, N),
3056*4882a593Smuzhiyun 	MUX(1, 63, 1, N, N, N, N),
3057*4882a593Smuzhiyun 	MUX(1, 64, 1, N, N, N, N),
3058*4882a593Smuzhiyun 	MUX(1, 65, 1, N, N, N, N),
3059*4882a593Smuzhiyun 	MUX(1, 66, 1, N, N, N, N),
3060*4882a593Smuzhiyun 	MUX(1, 67, 1, N, N, N, N),
3061*4882a593Smuzhiyun 	MUX(1, 68, 1, N, N, N, N),
3062*4882a593Smuzhiyun 	MUX(1, 69, 1, N, N, N, N),
3063*4882a593Smuzhiyun 	MUX(1, 70, 1, N, N, N, N),
3064*4882a593Smuzhiyun 	MUX(1, 71, 1, N, N, N, N),
3065*4882a593Smuzhiyun 	MUX(1, 72, 1, N, N, N, N),
3066*4882a593Smuzhiyun 	MUX(1, 74, 2, N, N, N, N),
3067*4882a593Smuzhiyun 	MUX(1, 75, 2, N, N, N, N),
3068*4882a593Smuzhiyun 	MUX(1, 76, 2, N, N, N, N),
3069*4882a593Smuzhiyun 	MUX(1, 77, 2, N, N, N, N),
3070*4882a593Smuzhiyun 	MUX(1, 78, 2, N, N, N, N),
3071*4882a593Smuzhiyun 	MUX(1, 79, 2, N, N, N, N),
3072*4882a593Smuzhiyun 	MUX(1, 80, 2, N, N, N, N),
3073*4882a593Smuzhiyun 	MUX(1, 81, 2, N, N, N, N),
3074*4882a593Smuzhiyun 	MUX(1, 56, 1, N, N, N, N),
3075*4882a593Smuzhiyun 	MUX(1, 53, 1, N, N, N, N),
3076*4882a593Smuzhiyun };
3077*4882a593Smuzhiyun 
3078*4882a593Smuzhiyun static struct atlas7_grp_mux ld_ldd_grp_mux = {
3079*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ld_ldd_grp_pad_mux),
3080*4882a593Smuzhiyun 	.pad_mux_list = ld_ldd_grp_pad_mux,
3081*4882a593Smuzhiyun };
3082*4882a593Smuzhiyun 
3083*4882a593Smuzhiyun static struct atlas7_pad_mux ld_ldd_16bit_grp_pad_mux[] = {
3084*4882a593Smuzhiyun 	MUX(1, 57, 1, N, N, N, N),
3085*4882a593Smuzhiyun 	MUX(1, 58, 1, N, N, N, N),
3086*4882a593Smuzhiyun 	MUX(1, 59, 1, N, N, N, N),
3087*4882a593Smuzhiyun 	MUX(1, 60, 1, N, N, N, N),
3088*4882a593Smuzhiyun 	MUX(1, 61, 1, N, N, N, N),
3089*4882a593Smuzhiyun 	MUX(1, 62, 1, N, N, N, N),
3090*4882a593Smuzhiyun 	MUX(1, 63, 1, N, N, N, N),
3091*4882a593Smuzhiyun 	MUX(1, 64, 1, N, N, N, N),
3092*4882a593Smuzhiyun 	MUX(1, 65, 1, N, N, N, N),
3093*4882a593Smuzhiyun 	MUX(1, 66, 1, N, N, N, N),
3094*4882a593Smuzhiyun 	MUX(1, 67, 1, N, N, N, N),
3095*4882a593Smuzhiyun 	MUX(1, 68, 1, N, N, N, N),
3096*4882a593Smuzhiyun 	MUX(1, 69, 1, N, N, N, N),
3097*4882a593Smuzhiyun 	MUX(1, 70, 1, N, N, N, N),
3098*4882a593Smuzhiyun 	MUX(1, 71, 1, N, N, N, N),
3099*4882a593Smuzhiyun 	MUX(1, 72, 1, N, N, N, N),
3100*4882a593Smuzhiyun 	MUX(1, 56, 1, N, N, N, N),
3101*4882a593Smuzhiyun 	MUX(1, 53, 1, N, N, N, N),
3102*4882a593Smuzhiyun };
3103*4882a593Smuzhiyun 
3104*4882a593Smuzhiyun static struct atlas7_grp_mux ld_ldd_16bit_grp_mux = {
3105*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ld_ldd_16bit_grp_pad_mux),
3106*4882a593Smuzhiyun 	.pad_mux_list = ld_ldd_16bit_grp_pad_mux,
3107*4882a593Smuzhiyun };
3108*4882a593Smuzhiyun 
3109*4882a593Smuzhiyun static struct atlas7_pad_mux ld_ldd_fck_grp_pad_mux[] = {
3110*4882a593Smuzhiyun 	MUX(1, 55, 1, N, N, N, N),
3111*4882a593Smuzhiyun };
3112*4882a593Smuzhiyun 
3113*4882a593Smuzhiyun static struct atlas7_grp_mux ld_ldd_fck_grp_mux = {
3114*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ld_ldd_fck_grp_pad_mux),
3115*4882a593Smuzhiyun 	.pad_mux_list = ld_ldd_fck_grp_pad_mux,
3116*4882a593Smuzhiyun };
3117*4882a593Smuzhiyun 
3118*4882a593Smuzhiyun static struct atlas7_pad_mux ld_ldd_lck_grp_pad_mux[] = {
3119*4882a593Smuzhiyun 	MUX(1, 54, 1, N, N, N, N),
3120*4882a593Smuzhiyun };
3121*4882a593Smuzhiyun 
3122*4882a593Smuzhiyun static struct atlas7_grp_mux ld_ldd_lck_grp_mux = {
3123*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ld_ldd_lck_grp_pad_mux),
3124*4882a593Smuzhiyun 	.pad_mux_list = ld_ldd_lck_grp_pad_mux,
3125*4882a593Smuzhiyun };
3126*4882a593Smuzhiyun 
3127*4882a593Smuzhiyun static struct atlas7_pad_mux lr_lcdrom_grp_pad_mux[] = {
3128*4882a593Smuzhiyun 	MUX(1, 73, 2, N, N, N, N),
3129*4882a593Smuzhiyun 	MUX(1, 54, 2, N, N, N, N),
3130*4882a593Smuzhiyun 	MUX(1, 57, 2, N, N, N, N),
3131*4882a593Smuzhiyun 	MUX(1, 58, 2, N, N, N, N),
3132*4882a593Smuzhiyun 	MUX(1, 59, 2, N, N, N, N),
3133*4882a593Smuzhiyun 	MUX(1, 60, 2, N, N, N, N),
3134*4882a593Smuzhiyun 	MUX(1, 61, 2, N, N, N, N),
3135*4882a593Smuzhiyun 	MUX(1, 62, 2, N, N, N, N),
3136*4882a593Smuzhiyun 	MUX(1, 63, 2, N, N, N, N),
3137*4882a593Smuzhiyun 	MUX(1, 64, 2, N, N, N, N),
3138*4882a593Smuzhiyun 	MUX(1, 65, 2, N, N, N, N),
3139*4882a593Smuzhiyun 	MUX(1, 66, 2, N, N, N, N),
3140*4882a593Smuzhiyun 	MUX(1, 67, 2, N, N, N, N),
3141*4882a593Smuzhiyun 	MUX(1, 68, 2, N, N, N, N),
3142*4882a593Smuzhiyun 	MUX(1, 69, 2, N, N, N, N),
3143*4882a593Smuzhiyun 	MUX(1, 70, 2, N, N, N, N),
3144*4882a593Smuzhiyun 	MUX(1, 71, 2, N, N, N, N),
3145*4882a593Smuzhiyun 	MUX(1, 72, 2, N, N, N, N),
3146*4882a593Smuzhiyun 	MUX(1, 56, 2, N, N, N, N),
3147*4882a593Smuzhiyun 	MUX(1, 53, 2, N, N, N, N),
3148*4882a593Smuzhiyun 	MUX(1, 55, 2, N, N, N, N),
3149*4882a593Smuzhiyun };
3150*4882a593Smuzhiyun 
3151*4882a593Smuzhiyun static struct atlas7_grp_mux lr_lcdrom_grp_mux = {
3152*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(lr_lcdrom_grp_pad_mux),
3153*4882a593Smuzhiyun 	.pad_mux_list = lr_lcdrom_grp_pad_mux,
3154*4882a593Smuzhiyun };
3155*4882a593Smuzhiyun 
3156*4882a593Smuzhiyun static struct atlas7_pad_mux lvds_analog_grp_pad_mux[] = {
3157*4882a593Smuzhiyun 	MUX(1, 149, 8, N, N, N, N),
3158*4882a593Smuzhiyun 	MUX(1, 150, 8, N, N, N, N),
3159*4882a593Smuzhiyun 	MUX(1, 151, 8, N, N, N, N),
3160*4882a593Smuzhiyun 	MUX(1, 152, 8, N, N, N, N),
3161*4882a593Smuzhiyun 	MUX(1, 153, 8, N, N, N, N),
3162*4882a593Smuzhiyun 	MUX(1, 154, 8, N, N, N, N),
3163*4882a593Smuzhiyun 	MUX(1, 155, 8, N, N, N, N),
3164*4882a593Smuzhiyun 	MUX(1, 156, 8, N, N, N, N),
3165*4882a593Smuzhiyun 	MUX(1, 157, 8, N, N, N, N),
3166*4882a593Smuzhiyun 	MUX(1, 158, 8, N, N, N, N),
3167*4882a593Smuzhiyun };
3168*4882a593Smuzhiyun 
3169*4882a593Smuzhiyun static struct atlas7_grp_mux lvds_analog_grp_mux = {
3170*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(lvds_analog_grp_pad_mux),
3171*4882a593Smuzhiyun 	.pad_mux_list = lvds_analog_grp_pad_mux,
3172*4882a593Smuzhiyun };
3173*4882a593Smuzhiyun 
3174*4882a593Smuzhiyun static struct atlas7_pad_mux nd_df_basic_grp_pad_mux[] = {
3175*4882a593Smuzhiyun 	MUX(1, 44, 1, N, N, N, N),
3176*4882a593Smuzhiyun 	MUX(1, 43, 1, N, N, N, N),
3177*4882a593Smuzhiyun 	MUX(1, 42, 1, N, N, N, N),
3178*4882a593Smuzhiyun 	MUX(1, 41, 1, N, N, N, N),
3179*4882a593Smuzhiyun 	MUX(1, 40, 1, N, N, N, N),
3180*4882a593Smuzhiyun 	MUX(1, 39, 1, N, N, N, N),
3181*4882a593Smuzhiyun 	MUX(1, 38, 1, N, N, N, N),
3182*4882a593Smuzhiyun 	MUX(1, 37, 1, N, N, N, N),
3183*4882a593Smuzhiyun 	MUX(1, 47, 1, N, N, N, N),
3184*4882a593Smuzhiyun 	MUX(1, 46, 1, N, N, N, N),
3185*4882a593Smuzhiyun 	MUX(1, 52, 1, N, N, N, N),
3186*4882a593Smuzhiyun 	MUX(1, 45, 1, N, N, N, N),
3187*4882a593Smuzhiyun 	MUX(1, 49, 1, N, N, N, N),
3188*4882a593Smuzhiyun 	MUX(1, 50, 1, N, N, N, N),
3189*4882a593Smuzhiyun 	MUX(1, 48, 1, N, N, N, N),
3190*4882a593Smuzhiyun };
3191*4882a593Smuzhiyun 
3192*4882a593Smuzhiyun static struct atlas7_grp_mux nd_df_basic_grp_mux = {
3193*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(nd_df_basic_grp_pad_mux),
3194*4882a593Smuzhiyun 	.pad_mux_list = nd_df_basic_grp_pad_mux,
3195*4882a593Smuzhiyun };
3196*4882a593Smuzhiyun 
3197*4882a593Smuzhiyun static struct atlas7_pad_mux nd_df_wp_grp_pad_mux[] = {
3198*4882a593Smuzhiyun 	MUX(1, 124, 4, N, N, N, N),
3199*4882a593Smuzhiyun };
3200*4882a593Smuzhiyun 
3201*4882a593Smuzhiyun static struct atlas7_grp_mux nd_df_wp_grp_mux = {
3202*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(nd_df_wp_grp_pad_mux),
3203*4882a593Smuzhiyun 	.pad_mux_list = nd_df_wp_grp_pad_mux,
3204*4882a593Smuzhiyun };
3205*4882a593Smuzhiyun 
3206*4882a593Smuzhiyun static struct atlas7_pad_mux nd_df_cs_grp_pad_mux[] = {
3207*4882a593Smuzhiyun 	MUX(1, 51, 1, N, N, N, N),
3208*4882a593Smuzhiyun };
3209*4882a593Smuzhiyun 
3210*4882a593Smuzhiyun static struct atlas7_grp_mux nd_df_cs_grp_mux = {
3211*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(nd_df_cs_grp_pad_mux),
3212*4882a593Smuzhiyun 	.pad_mux_list = nd_df_cs_grp_pad_mux,
3213*4882a593Smuzhiyun };
3214*4882a593Smuzhiyun 
3215*4882a593Smuzhiyun static struct atlas7_pad_mux ps_grp_pad_mux[] = {
3216*4882a593Smuzhiyun 	MUX(1, 120, 2, N, N, N, N),
3217*4882a593Smuzhiyun 	MUX(1, 119, 2, N, N, N, N),
3218*4882a593Smuzhiyun 	MUX(1, 121, 5, N, N, N, N),
3219*4882a593Smuzhiyun };
3220*4882a593Smuzhiyun 
3221*4882a593Smuzhiyun static struct atlas7_grp_mux ps_grp_mux = {
3222*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ps_grp_pad_mux),
3223*4882a593Smuzhiyun 	.pad_mux_list = ps_grp_pad_mux,
3224*4882a593Smuzhiyun };
3225*4882a593Smuzhiyun 
3226*4882a593Smuzhiyun static struct atlas7_pad_mux ps_no_dir_grp_pad_mux[] = {
3227*4882a593Smuzhiyun 	MUX(1, 119, 2, N, N, N, N),
3228*4882a593Smuzhiyun };
3229*4882a593Smuzhiyun 
3230*4882a593Smuzhiyun static struct atlas7_grp_mux ps_no_dir_grp_mux = {
3231*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(ps_no_dir_grp_pad_mux),
3232*4882a593Smuzhiyun 	.pad_mux_list = ps_no_dir_grp_pad_mux,
3233*4882a593Smuzhiyun };
3234*4882a593Smuzhiyun 
3235*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_core_on_grp_pad_mux[] = {
3236*4882a593Smuzhiyun 	MUX(0, 8, 1, N, N, N, N),
3237*4882a593Smuzhiyun };
3238*4882a593Smuzhiyun 
3239*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_core_on_grp_mux = {
3240*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_core_on_grp_pad_mux),
3241*4882a593Smuzhiyun 	.pad_mux_list = pwc_core_on_grp_pad_mux,
3242*4882a593Smuzhiyun };
3243*4882a593Smuzhiyun 
3244*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_ext_on_grp_pad_mux[] = {
3245*4882a593Smuzhiyun 	MUX(0, 6, 1, N, N, N, N),
3246*4882a593Smuzhiyun };
3247*4882a593Smuzhiyun 
3248*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_ext_on_grp_mux = {
3249*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_ext_on_grp_pad_mux),
3250*4882a593Smuzhiyun 	.pad_mux_list = pwc_ext_on_grp_pad_mux,
3251*4882a593Smuzhiyun };
3252*4882a593Smuzhiyun 
3253*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_gpio3_clk_grp_pad_mux[] = {
3254*4882a593Smuzhiyun 	MUX(0, 3, 4, N, N, N, N),
3255*4882a593Smuzhiyun };
3256*4882a593Smuzhiyun 
3257*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_gpio3_clk_grp_mux = {
3258*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_gpio3_clk_grp_pad_mux),
3259*4882a593Smuzhiyun 	.pad_mux_list = pwc_gpio3_clk_grp_pad_mux,
3260*4882a593Smuzhiyun };
3261*4882a593Smuzhiyun 
3262*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_io_on_grp_pad_mux[] = {
3263*4882a593Smuzhiyun 	MUX(0, 9, 1, N, N, N, N),
3264*4882a593Smuzhiyun };
3265*4882a593Smuzhiyun 
3266*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_io_on_grp_mux = {
3267*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_io_on_grp_pad_mux),
3268*4882a593Smuzhiyun 	.pad_mux_list = pwc_io_on_grp_pad_mux,
3269*4882a593Smuzhiyun };
3270*4882a593Smuzhiyun 
3271*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_lowbatt_b_grp0_pad_mux[] = {
3272*4882a593Smuzhiyun 	MUX(0, 4, 1, 0xa08, 4, 0xa88, 4),
3273*4882a593Smuzhiyun };
3274*4882a593Smuzhiyun 
3275*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_lowbatt_b_grp0_mux = {
3276*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_lowbatt_b_grp0_pad_mux),
3277*4882a593Smuzhiyun 	.pad_mux_list = pwc_lowbatt_b_grp0_pad_mux,
3278*4882a593Smuzhiyun };
3279*4882a593Smuzhiyun 
3280*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_mem_on_grp_pad_mux[] = {
3281*4882a593Smuzhiyun 	MUX(0, 7, 1, N, N, N, N),
3282*4882a593Smuzhiyun };
3283*4882a593Smuzhiyun 
3284*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_mem_on_grp_mux = {
3285*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_mem_on_grp_pad_mux),
3286*4882a593Smuzhiyun 	.pad_mux_list = pwc_mem_on_grp_pad_mux,
3287*4882a593Smuzhiyun };
3288*4882a593Smuzhiyun 
3289*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_on_key_b_grp0_pad_mux[] = {
3290*4882a593Smuzhiyun 	MUX(0, 5, 1, 0xa08, 5, 0xa88, 5),
3291*4882a593Smuzhiyun };
3292*4882a593Smuzhiyun 
3293*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_on_key_b_grp0_mux = {
3294*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_on_key_b_grp0_pad_mux),
3295*4882a593Smuzhiyun 	.pad_mux_list = pwc_on_key_b_grp0_pad_mux,
3296*4882a593Smuzhiyun };
3297*4882a593Smuzhiyun 
3298*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_wakeup_src0_grp_pad_mux[] = {
3299*4882a593Smuzhiyun 	MUX(0, 0, 1, N, N, N, N),
3300*4882a593Smuzhiyun };
3301*4882a593Smuzhiyun 
3302*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_wakeup_src0_grp_mux = {
3303*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_wakeup_src0_grp_pad_mux),
3304*4882a593Smuzhiyun 	.pad_mux_list = pwc_wakeup_src0_grp_pad_mux,
3305*4882a593Smuzhiyun };
3306*4882a593Smuzhiyun 
3307*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_wakeup_src1_grp_pad_mux[] = {
3308*4882a593Smuzhiyun 	MUX(0, 1, 1, N, N, N, N),
3309*4882a593Smuzhiyun };
3310*4882a593Smuzhiyun 
3311*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_wakeup_src1_grp_mux = {
3312*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_wakeup_src1_grp_pad_mux),
3313*4882a593Smuzhiyun 	.pad_mux_list = pwc_wakeup_src1_grp_pad_mux,
3314*4882a593Smuzhiyun };
3315*4882a593Smuzhiyun 
3316*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_wakeup_src2_grp_pad_mux[] = {
3317*4882a593Smuzhiyun 	MUX(0, 2, 1, N, N, N, N),
3318*4882a593Smuzhiyun };
3319*4882a593Smuzhiyun 
3320*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_wakeup_src2_grp_mux = {
3321*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_wakeup_src2_grp_pad_mux),
3322*4882a593Smuzhiyun 	.pad_mux_list = pwc_wakeup_src2_grp_pad_mux,
3323*4882a593Smuzhiyun };
3324*4882a593Smuzhiyun 
3325*4882a593Smuzhiyun static struct atlas7_pad_mux pwc_wakeup_src3_grp_pad_mux[] = {
3326*4882a593Smuzhiyun 	MUX(0, 3, 1, N, N, N, N),
3327*4882a593Smuzhiyun };
3328*4882a593Smuzhiyun 
3329*4882a593Smuzhiyun static struct atlas7_grp_mux pwc_wakeup_src3_grp_mux = {
3330*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pwc_wakeup_src3_grp_pad_mux),
3331*4882a593Smuzhiyun 	.pad_mux_list = pwc_wakeup_src3_grp_pad_mux,
3332*4882a593Smuzhiyun };
3333*4882a593Smuzhiyun 
3334*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko0_grp0_pad_mux[] = {
3335*4882a593Smuzhiyun 	MUX(1, 123, 3, N, N, N, N),
3336*4882a593Smuzhiyun };
3337*4882a593Smuzhiyun 
3338*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko0_grp0_mux = {
3339*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko0_grp0_pad_mux),
3340*4882a593Smuzhiyun 	.pad_mux_list = pw_cko0_grp0_pad_mux,
3341*4882a593Smuzhiyun };
3342*4882a593Smuzhiyun 
3343*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko0_grp1_pad_mux[] = {
3344*4882a593Smuzhiyun 	MUX(1, 101, 4, N, N, N, N),
3345*4882a593Smuzhiyun };
3346*4882a593Smuzhiyun 
3347*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko0_grp1_mux = {
3348*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko0_grp1_pad_mux),
3349*4882a593Smuzhiyun 	.pad_mux_list = pw_cko0_grp1_pad_mux,
3350*4882a593Smuzhiyun };
3351*4882a593Smuzhiyun 
3352*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko0_grp2_pad_mux[] = {
3353*4882a593Smuzhiyun 	MUX(1, 82, 2, N, N, N, N),
3354*4882a593Smuzhiyun };
3355*4882a593Smuzhiyun 
3356*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko0_grp2_mux = {
3357*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko0_grp2_pad_mux),
3358*4882a593Smuzhiyun 	.pad_mux_list = pw_cko0_grp2_pad_mux,
3359*4882a593Smuzhiyun };
3360*4882a593Smuzhiyun 
3361*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko0_grp3_pad_mux[] = {
3362*4882a593Smuzhiyun 	MUX(1, 162, 5, N, N, N, N),
3363*4882a593Smuzhiyun };
3364*4882a593Smuzhiyun 
3365*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko0_grp3_mux = {
3366*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko0_grp3_pad_mux),
3367*4882a593Smuzhiyun 	.pad_mux_list = pw_cko0_grp3_pad_mux,
3368*4882a593Smuzhiyun };
3369*4882a593Smuzhiyun 
3370*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko1_grp0_pad_mux[] = {
3371*4882a593Smuzhiyun 	MUX(1, 124, 3, N, N, N, N),
3372*4882a593Smuzhiyun };
3373*4882a593Smuzhiyun 
3374*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko1_grp0_mux = {
3375*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko1_grp0_pad_mux),
3376*4882a593Smuzhiyun 	.pad_mux_list = pw_cko1_grp0_pad_mux,
3377*4882a593Smuzhiyun };
3378*4882a593Smuzhiyun 
3379*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko1_grp1_pad_mux[] = {
3380*4882a593Smuzhiyun 	MUX(1, 110, 4, N, N, N, N),
3381*4882a593Smuzhiyun };
3382*4882a593Smuzhiyun 
3383*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko1_grp1_mux = {
3384*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko1_grp1_pad_mux),
3385*4882a593Smuzhiyun 	.pad_mux_list = pw_cko1_grp1_pad_mux,
3386*4882a593Smuzhiyun };
3387*4882a593Smuzhiyun 
3388*4882a593Smuzhiyun static struct atlas7_pad_mux pw_cko1_grp2_pad_mux[] = {
3389*4882a593Smuzhiyun 	MUX(1, 163, 5, N, N, N, N),
3390*4882a593Smuzhiyun };
3391*4882a593Smuzhiyun 
3392*4882a593Smuzhiyun static struct atlas7_grp_mux pw_cko1_grp2_mux = {
3393*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_cko1_grp2_pad_mux),
3394*4882a593Smuzhiyun 	.pad_mux_list = pw_cko1_grp2_pad_mux,
3395*4882a593Smuzhiyun };
3396*4882a593Smuzhiyun 
3397*4882a593Smuzhiyun static struct atlas7_pad_mux pw_i2s01_clk_grp0_pad_mux[] = {
3398*4882a593Smuzhiyun 	MUX(1, 125, 3, N, N, N, N),
3399*4882a593Smuzhiyun };
3400*4882a593Smuzhiyun 
3401*4882a593Smuzhiyun static struct atlas7_grp_mux pw_i2s01_clk_grp0_mux = {
3402*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_i2s01_clk_grp0_pad_mux),
3403*4882a593Smuzhiyun 	.pad_mux_list = pw_i2s01_clk_grp0_pad_mux,
3404*4882a593Smuzhiyun };
3405*4882a593Smuzhiyun 
3406*4882a593Smuzhiyun static struct atlas7_pad_mux pw_i2s01_clk_grp1_pad_mux[] = {
3407*4882a593Smuzhiyun 	MUX(1, 117, 3, N, N, N, N),
3408*4882a593Smuzhiyun };
3409*4882a593Smuzhiyun 
3410*4882a593Smuzhiyun static struct atlas7_grp_mux pw_i2s01_clk_grp1_mux = {
3411*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_i2s01_clk_grp1_pad_mux),
3412*4882a593Smuzhiyun 	.pad_mux_list = pw_i2s01_clk_grp1_pad_mux,
3413*4882a593Smuzhiyun };
3414*4882a593Smuzhiyun 
3415*4882a593Smuzhiyun static struct atlas7_pad_mux pw_i2s01_clk_grp2_pad_mux[] = {
3416*4882a593Smuzhiyun 	MUX(1, 132, 2, N, N, N, N),
3417*4882a593Smuzhiyun };
3418*4882a593Smuzhiyun 
3419*4882a593Smuzhiyun static struct atlas7_grp_mux pw_i2s01_clk_grp2_mux = {
3420*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_i2s01_clk_grp2_pad_mux),
3421*4882a593Smuzhiyun 	.pad_mux_list = pw_i2s01_clk_grp2_pad_mux,
3422*4882a593Smuzhiyun };
3423*4882a593Smuzhiyun 
3424*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm0_grp0_pad_mux[] = {
3425*4882a593Smuzhiyun 	MUX(1, 119, 3, N, N, N, N),
3426*4882a593Smuzhiyun };
3427*4882a593Smuzhiyun 
3428*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm0_grp0_mux = {
3429*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm0_grp0_pad_mux),
3430*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm0_grp0_pad_mux,
3431*4882a593Smuzhiyun };
3432*4882a593Smuzhiyun 
3433*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm0_grp1_pad_mux[] = {
3434*4882a593Smuzhiyun 	MUX(1, 159, 5, N, N, N, N),
3435*4882a593Smuzhiyun };
3436*4882a593Smuzhiyun 
3437*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm0_grp1_mux = {
3438*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm0_grp1_pad_mux),
3439*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm0_grp1_pad_mux,
3440*4882a593Smuzhiyun };
3441*4882a593Smuzhiyun 
3442*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm1_grp0_pad_mux[] = {
3443*4882a593Smuzhiyun 	MUX(1, 120, 3, N, N, N, N),
3444*4882a593Smuzhiyun };
3445*4882a593Smuzhiyun 
3446*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm1_grp0_mux = {
3447*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm1_grp0_pad_mux),
3448*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm1_grp0_pad_mux,
3449*4882a593Smuzhiyun };
3450*4882a593Smuzhiyun 
3451*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm1_grp1_pad_mux[] = {
3452*4882a593Smuzhiyun 	MUX(1, 160, 5, N, N, N, N),
3453*4882a593Smuzhiyun };
3454*4882a593Smuzhiyun 
3455*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm1_grp1_mux = {
3456*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm1_grp1_pad_mux),
3457*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm1_grp1_pad_mux,
3458*4882a593Smuzhiyun };
3459*4882a593Smuzhiyun 
3460*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm1_grp2_pad_mux[] = {
3461*4882a593Smuzhiyun 	MUX(1, 131, 2, N, N, N, N),
3462*4882a593Smuzhiyun };
3463*4882a593Smuzhiyun 
3464*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm1_grp2_mux = {
3465*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm1_grp2_pad_mux),
3466*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm1_grp2_pad_mux,
3467*4882a593Smuzhiyun };
3468*4882a593Smuzhiyun 
3469*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm2_grp0_pad_mux[] = {
3470*4882a593Smuzhiyun 	MUX(1, 121, 3, N, N, N, N),
3471*4882a593Smuzhiyun };
3472*4882a593Smuzhiyun 
3473*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm2_grp0_mux = {
3474*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm2_grp0_pad_mux),
3475*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm2_grp0_pad_mux,
3476*4882a593Smuzhiyun };
3477*4882a593Smuzhiyun 
3478*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm2_grp1_pad_mux[] = {
3479*4882a593Smuzhiyun 	MUX(1, 98, 3, N, N, N, N),
3480*4882a593Smuzhiyun };
3481*4882a593Smuzhiyun 
3482*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm2_grp1_mux = {
3483*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm2_grp1_pad_mux),
3484*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm2_grp1_pad_mux,
3485*4882a593Smuzhiyun };
3486*4882a593Smuzhiyun 
3487*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm2_grp2_pad_mux[] = {
3488*4882a593Smuzhiyun 	MUX(1, 161, 5, N, N, N, N),
3489*4882a593Smuzhiyun };
3490*4882a593Smuzhiyun 
3491*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm2_grp2_mux = {
3492*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm2_grp2_pad_mux),
3493*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm2_grp2_pad_mux,
3494*4882a593Smuzhiyun };
3495*4882a593Smuzhiyun 
3496*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm3_grp0_pad_mux[] = {
3497*4882a593Smuzhiyun 	MUX(1, 122, 3, N, N, N, N),
3498*4882a593Smuzhiyun };
3499*4882a593Smuzhiyun 
3500*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm3_grp0_mux = {
3501*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm3_grp0_pad_mux),
3502*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm3_grp0_pad_mux,
3503*4882a593Smuzhiyun };
3504*4882a593Smuzhiyun 
3505*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm3_grp1_pad_mux[] = {
3506*4882a593Smuzhiyun 	MUX(1, 73, 4, N, N, N, N),
3507*4882a593Smuzhiyun };
3508*4882a593Smuzhiyun 
3509*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm3_grp1_mux = {
3510*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm3_grp1_pad_mux),
3511*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm3_grp1_pad_mux,
3512*4882a593Smuzhiyun };
3513*4882a593Smuzhiyun 
3514*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm_cpu_vol_grp0_pad_mux[] = {
3515*4882a593Smuzhiyun 	MUX(1, 121, 3, N, N, N, N),
3516*4882a593Smuzhiyun };
3517*4882a593Smuzhiyun 
3518*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm_cpu_vol_grp0_mux = {
3519*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm_cpu_vol_grp0_pad_mux),
3520*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm_cpu_vol_grp0_pad_mux,
3521*4882a593Smuzhiyun };
3522*4882a593Smuzhiyun 
3523*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm_cpu_vol_grp1_pad_mux[] = {
3524*4882a593Smuzhiyun 	MUX(1, 98, 3, N, N, N, N),
3525*4882a593Smuzhiyun };
3526*4882a593Smuzhiyun 
3527*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm_cpu_vol_grp1_mux = {
3528*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm_cpu_vol_grp1_pad_mux),
3529*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm_cpu_vol_grp1_pad_mux,
3530*4882a593Smuzhiyun };
3531*4882a593Smuzhiyun 
3532*4882a593Smuzhiyun static struct atlas7_pad_mux pw_pwm_cpu_vol_grp2_pad_mux[] = {
3533*4882a593Smuzhiyun 	MUX(1, 161, 5, N, N, N, N),
3534*4882a593Smuzhiyun };
3535*4882a593Smuzhiyun 
3536*4882a593Smuzhiyun static struct atlas7_grp_mux pw_pwm_cpu_vol_grp2_mux = {
3537*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_pwm_cpu_vol_grp2_pad_mux),
3538*4882a593Smuzhiyun 	.pad_mux_list = pw_pwm_cpu_vol_grp2_pad_mux,
3539*4882a593Smuzhiyun };
3540*4882a593Smuzhiyun 
3541*4882a593Smuzhiyun static struct atlas7_pad_mux pw_backlight_grp0_pad_mux[] = {
3542*4882a593Smuzhiyun 	MUX(1, 122, 3, N, N, N, N),
3543*4882a593Smuzhiyun };
3544*4882a593Smuzhiyun 
3545*4882a593Smuzhiyun static struct atlas7_grp_mux pw_backlight_grp0_mux = {
3546*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_backlight_grp0_pad_mux),
3547*4882a593Smuzhiyun 	.pad_mux_list = pw_backlight_grp0_pad_mux,
3548*4882a593Smuzhiyun };
3549*4882a593Smuzhiyun 
3550*4882a593Smuzhiyun static struct atlas7_pad_mux pw_backlight_grp1_pad_mux[] = {
3551*4882a593Smuzhiyun 	MUX(1, 73, 4, N, N, N, N),
3552*4882a593Smuzhiyun };
3553*4882a593Smuzhiyun 
3554*4882a593Smuzhiyun static struct atlas7_grp_mux pw_backlight_grp1_mux = {
3555*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(pw_backlight_grp1_pad_mux),
3556*4882a593Smuzhiyun 	.pad_mux_list = pw_backlight_grp1_pad_mux,
3557*4882a593Smuzhiyun };
3558*4882a593Smuzhiyun 
3559*4882a593Smuzhiyun static struct atlas7_pad_mux rg_eth_mac_grp_pad_mux[] = {
3560*4882a593Smuzhiyun 	MUX(1, 108, 1, N, N, N, N),
3561*4882a593Smuzhiyun 	MUX(1, 103, 1, N, N, N, N),
3562*4882a593Smuzhiyun 	MUX(1, 104, 1, N, N, N, N),
3563*4882a593Smuzhiyun 	MUX(1, 105, 1, N, N, N, N),
3564*4882a593Smuzhiyun 	MUX(1, 106, 1, N, N, N, N),
3565*4882a593Smuzhiyun 	MUX(1, 107, 1, N, N, N, N),
3566*4882a593Smuzhiyun 	MUX(1, 102, 1, N, N, N, N),
3567*4882a593Smuzhiyun 	MUX(1, 97, 1, N, N, N, N),
3568*4882a593Smuzhiyun 	MUX(1, 98, 1, N, N, N, N),
3569*4882a593Smuzhiyun 	MUX(1, 99, 1, N, N, N, N),
3570*4882a593Smuzhiyun 	MUX(1, 100, 1, N, N, N, N),
3571*4882a593Smuzhiyun 	MUX(1, 101, 1, N, N, N, N),
3572*4882a593Smuzhiyun };
3573*4882a593Smuzhiyun 
3574*4882a593Smuzhiyun static struct atlas7_grp_mux rg_eth_mac_grp_mux = {
3575*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rg_eth_mac_grp_pad_mux),
3576*4882a593Smuzhiyun 	.pad_mux_list = rg_eth_mac_grp_pad_mux,
3577*4882a593Smuzhiyun };
3578*4882a593Smuzhiyun 
3579*4882a593Smuzhiyun static struct atlas7_pad_mux rg_gmac_phy_intr_n_grp_pad_mux[] = {
3580*4882a593Smuzhiyun 	MUX(1, 111, 1, 0xa08, 13, 0xa88, 13),
3581*4882a593Smuzhiyun };
3582*4882a593Smuzhiyun 
3583*4882a593Smuzhiyun static struct atlas7_grp_mux rg_gmac_phy_intr_n_grp_mux = {
3584*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rg_gmac_phy_intr_n_grp_pad_mux),
3585*4882a593Smuzhiyun 	.pad_mux_list = rg_gmac_phy_intr_n_grp_pad_mux,
3586*4882a593Smuzhiyun };
3587*4882a593Smuzhiyun 
3588*4882a593Smuzhiyun static struct atlas7_pad_mux rg_rgmii_mac_grp_pad_mux[] = {
3589*4882a593Smuzhiyun 	MUX(1, 109, 1, N, N, N, N),
3590*4882a593Smuzhiyun 	MUX(1, 110, 1, N, N, N, N),
3591*4882a593Smuzhiyun };
3592*4882a593Smuzhiyun 
3593*4882a593Smuzhiyun static struct atlas7_grp_mux rg_rgmii_mac_grp_mux = {
3594*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rg_rgmii_mac_grp_pad_mux),
3595*4882a593Smuzhiyun 	.pad_mux_list = rg_rgmii_mac_grp_pad_mux,
3596*4882a593Smuzhiyun };
3597*4882a593Smuzhiyun 
3598*4882a593Smuzhiyun static struct atlas7_pad_mux rg_rgmii_phy_ref_clk_grp0_pad_mux[] = {
3599*4882a593Smuzhiyun 	MUX(1, 111, 5, N, N, N, N),
3600*4882a593Smuzhiyun };
3601*4882a593Smuzhiyun 
3602*4882a593Smuzhiyun static struct atlas7_grp_mux rg_rgmii_phy_ref_clk_grp0_mux = {
3603*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rg_rgmii_phy_ref_clk_grp0_pad_mux),
3604*4882a593Smuzhiyun 	.pad_mux_list = rg_rgmii_phy_ref_clk_grp0_pad_mux,
3605*4882a593Smuzhiyun };
3606*4882a593Smuzhiyun 
3607*4882a593Smuzhiyun static struct atlas7_pad_mux rg_rgmii_phy_ref_clk_grp1_pad_mux[] = {
3608*4882a593Smuzhiyun 	MUX(1, 53, 4, N, N, N, N),
3609*4882a593Smuzhiyun };
3610*4882a593Smuzhiyun 
3611*4882a593Smuzhiyun static struct atlas7_grp_mux rg_rgmii_phy_ref_clk_grp1_mux = {
3612*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(rg_rgmii_phy_ref_clk_grp1_pad_mux),
3613*4882a593Smuzhiyun 	.pad_mux_list = rg_rgmii_phy_ref_clk_grp1_pad_mux,
3614*4882a593Smuzhiyun };
3615*4882a593Smuzhiyun 
3616*4882a593Smuzhiyun static struct atlas7_pad_mux sd0_grp_pad_mux[] = {
3617*4882a593Smuzhiyun 	MUX(1, 46, 2, N, N, N, N),
3618*4882a593Smuzhiyun 	MUX(1, 47, 2, N, N, N, N),
3619*4882a593Smuzhiyun 	MUX(1, 44, 2, N, N, N, N),
3620*4882a593Smuzhiyun 	MUX(1, 43, 2, N, N, N, N),
3621*4882a593Smuzhiyun 	MUX(1, 42, 2, N, N, N, N),
3622*4882a593Smuzhiyun 	MUX(1, 41, 2, N, N, N, N),
3623*4882a593Smuzhiyun 	MUX(1, 40, 2, N, N, N, N),
3624*4882a593Smuzhiyun 	MUX(1, 39, 2, N, N, N, N),
3625*4882a593Smuzhiyun 	MUX(1, 38, 2, N, N, N, N),
3626*4882a593Smuzhiyun 	MUX(1, 37, 2, N, N, N, N),
3627*4882a593Smuzhiyun };
3628*4882a593Smuzhiyun 
3629*4882a593Smuzhiyun static struct atlas7_grp_mux sd0_grp_mux = {
3630*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd0_grp_pad_mux),
3631*4882a593Smuzhiyun 	.pad_mux_list = sd0_grp_pad_mux,
3632*4882a593Smuzhiyun };
3633*4882a593Smuzhiyun 
3634*4882a593Smuzhiyun static struct atlas7_pad_mux sd0_4bit_grp_pad_mux[] = {
3635*4882a593Smuzhiyun 	MUX(1, 46, 2, N, N, N, N),
3636*4882a593Smuzhiyun 	MUX(1, 47, 2, N, N, N, N),
3637*4882a593Smuzhiyun 	MUX(1, 44, 2, N, N, N, N),
3638*4882a593Smuzhiyun 	MUX(1, 43, 2, N, N, N, N),
3639*4882a593Smuzhiyun 	MUX(1, 42, 2, N, N, N, N),
3640*4882a593Smuzhiyun 	MUX(1, 41, 2, N, N, N, N),
3641*4882a593Smuzhiyun };
3642*4882a593Smuzhiyun 
3643*4882a593Smuzhiyun static struct atlas7_grp_mux sd0_4bit_grp_mux = {
3644*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd0_4bit_grp_pad_mux),
3645*4882a593Smuzhiyun 	.pad_mux_list = sd0_4bit_grp_pad_mux,
3646*4882a593Smuzhiyun };
3647*4882a593Smuzhiyun 
3648*4882a593Smuzhiyun static struct atlas7_pad_mux sd1_grp_pad_mux[] = {
3649*4882a593Smuzhiyun 	MUX(1, 48, 3, N, N, N, N),
3650*4882a593Smuzhiyun 	MUX(1, 49, 3, N, N, N, N),
3651*4882a593Smuzhiyun 	MUX(1, 44, 3, 0xa00, 0, 0xa80, 0),
3652*4882a593Smuzhiyun 	MUX(1, 43, 3, 0xa00, 1, 0xa80, 1),
3653*4882a593Smuzhiyun 	MUX(1, 42, 3, 0xa00, 2, 0xa80, 2),
3654*4882a593Smuzhiyun 	MUX(1, 41, 3, 0xa00, 3, 0xa80, 3),
3655*4882a593Smuzhiyun 	MUX(1, 40, 3, N, N, N, N),
3656*4882a593Smuzhiyun 	MUX(1, 39, 3, N, N, N, N),
3657*4882a593Smuzhiyun 	MUX(1, 38, 3, N, N, N, N),
3658*4882a593Smuzhiyun 	MUX(1, 37, 3, N, N, N, N),
3659*4882a593Smuzhiyun };
3660*4882a593Smuzhiyun 
3661*4882a593Smuzhiyun static struct atlas7_grp_mux sd1_grp_mux = {
3662*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd1_grp_pad_mux),
3663*4882a593Smuzhiyun 	.pad_mux_list = sd1_grp_pad_mux,
3664*4882a593Smuzhiyun };
3665*4882a593Smuzhiyun 
3666*4882a593Smuzhiyun static struct atlas7_pad_mux sd1_4bit_grp0_pad_mux[] = {
3667*4882a593Smuzhiyun 	MUX(1, 48, 3, N, N, N, N),
3668*4882a593Smuzhiyun 	MUX(1, 49, 3, N, N, N, N),
3669*4882a593Smuzhiyun 	MUX(1, 44, 3, 0xa00, 0, 0xa80, 0),
3670*4882a593Smuzhiyun 	MUX(1, 43, 3, 0xa00, 1, 0xa80, 1),
3671*4882a593Smuzhiyun 	MUX(1, 42, 3, 0xa00, 2, 0xa80, 2),
3672*4882a593Smuzhiyun 	MUX(1, 41, 3, 0xa00, 3, 0xa80, 3),
3673*4882a593Smuzhiyun };
3674*4882a593Smuzhiyun 
3675*4882a593Smuzhiyun static struct atlas7_grp_mux sd1_4bit_grp0_mux = {
3676*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd1_4bit_grp0_pad_mux),
3677*4882a593Smuzhiyun 	.pad_mux_list = sd1_4bit_grp0_pad_mux,
3678*4882a593Smuzhiyun };
3679*4882a593Smuzhiyun 
3680*4882a593Smuzhiyun static struct atlas7_pad_mux sd1_4bit_grp1_pad_mux[] = {
3681*4882a593Smuzhiyun 	MUX(1, 48, 3, N, N, N, N),
3682*4882a593Smuzhiyun 	MUX(1, 49, 3, N, N, N, N),
3683*4882a593Smuzhiyun 	MUX(1, 40, 4, 0xa00, 0, 0xa80, 0),
3684*4882a593Smuzhiyun 	MUX(1, 39, 4, 0xa00, 1, 0xa80, 1),
3685*4882a593Smuzhiyun 	MUX(1, 38, 4, 0xa00, 2, 0xa80, 2),
3686*4882a593Smuzhiyun 	MUX(1, 37, 4, 0xa00, 3, 0xa80, 3),
3687*4882a593Smuzhiyun };
3688*4882a593Smuzhiyun 
3689*4882a593Smuzhiyun static struct atlas7_grp_mux sd1_4bit_grp1_mux = {
3690*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd1_4bit_grp1_pad_mux),
3691*4882a593Smuzhiyun 	.pad_mux_list = sd1_4bit_grp1_pad_mux,
3692*4882a593Smuzhiyun };
3693*4882a593Smuzhiyun 
3694*4882a593Smuzhiyun static struct atlas7_pad_mux sd2_basic_grp_pad_mux[] = {
3695*4882a593Smuzhiyun 	MUX(1, 31, 1, N, N, N, N),
3696*4882a593Smuzhiyun 	MUX(1, 32, 1, N, N, N, N),
3697*4882a593Smuzhiyun 	MUX(1, 33, 1, N, N, N, N),
3698*4882a593Smuzhiyun 	MUX(1, 34, 1, N, N, N, N),
3699*4882a593Smuzhiyun 	MUX(1, 35, 1, N, N, N, N),
3700*4882a593Smuzhiyun 	MUX(1, 36, 1, N, N, N, N),
3701*4882a593Smuzhiyun };
3702*4882a593Smuzhiyun 
3703*4882a593Smuzhiyun static struct atlas7_grp_mux sd2_basic_grp_mux = {
3704*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd2_basic_grp_pad_mux),
3705*4882a593Smuzhiyun 	.pad_mux_list = sd2_basic_grp_pad_mux,
3706*4882a593Smuzhiyun };
3707*4882a593Smuzhiyun 
3708*4882a593Smuzhiyun static struct atlas7_pad_mux sd2_cdb_grp0_pad_mux[] = {
3709*4882a593Smuzhiyun 	MUX(1, 124, 2, 0xa08, 7, 0xa88, 7),
3710*4882a593Smuzhiyun };
3711*4882a593Smuzhiyun 
3712*4882a593Smuzhiyun static struct atlas7_grp_mux sd2_cdb_grp0_mux = {
3713*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd2_cdb_grp0_pad_mux),
3714*4882a593Smuzhiyun 	.pad_mux_list = sd2_cdb_grp0_pad_mux,
3715*4882a593Smuzhiyun };
3716*4882a593Smuzhiyun 
3717*4882a593Smuzhiyun static struct atlas7_pad_mux sd2_cdb_grp1_pad_mux[] = {
3718*4882a593Smuzhiyun 	MUX(1, 161, 6, 0xa08, 7, 0xa88, 7),
3719*4882a593Smuzhiyun };
3720*4882a593Smuzhiyun 
3721*4882a593Smuzhiyun static struct atlas7_grp_mux sd2_cdb_grp1_mux = {
3722*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd2_cdb_grp1_pad_mux),
3723*4882a593Smuzhiyun 	.pad_mux_list = sd2_cdb_grp1_pad_mux,
3724*4882a593Smuzhiyun };
3725*4882a593Smuzhiyun 
3726*4882a593Smuzhiyun static struct atlas7_pad_mux sd2_wpb_grp0_pad_mux[] = {
3727*4882a593Smuzhiyun 	MUX(1, 123, 2, 0xa10, 6, 0xa90, 6),
3728*4882a593Smuzhiyun };
3729*4882a593Smuzhiyun 
3730*4882a593Smuzhiyun static struct atlas7_grp_mux sd2_wpb_grp0_mux = {
3731*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd2_wpb_grp0_pad_mux),
3732*4882a593Smuzhiyun 	.pad_mux_list = sd2_wpb_grp0_pad_mux,
3733*4882a593Smuzhiyun };
3734*4882a593Smuzhiyun 
3735*4882a593Smuzhiyun static struct atlas7_pad_mux sd2_wpb_grp1_pad_mux[] = {
3736*4882a593Smuzhiyun 	MUX(1, 163, 7, 0xa10, 6, 0xa90, 6),
3737*4882a593Smuzhiyun };
3738*4882a593Smuzhiyun 
3739*4882a593Smuzhiyun static struct atlas7_grp_mux sd2_wpb_grp1_mux = {
3740*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd2_wpb_grp1_pad_mux),
3741*4882a593Smuzhiyun 	.pad_mux_list = sd2_wpb_grp1_pad_mux,
3742*4882a593Smuzhiyun };
3743*4882a593Smuzhiyun 
3744*4882a593Smuzhiyun static struct atlas7_pad_mux sd3_9_grp_pad_mux[] = {
3745*4882a593Smuzhiyun 	MUX(1, 85, 1, N, N, N, N),
3746*4882a593Smuzhiyun 	MUX(1, 86, 1, N, N, N, N),
3747*4882a593Smuzhiyun 	MUX(1, 87, 1, N, N, N, N),
3748*4882a593Smuzhiyun 	MUX(1, 88, 1, N, N, N, N),
3749*4882a593Smuzhiyun 	MUX(1, 89, 1, N, N, N, N),
3750*4882a593Smuzhiyun 	MUX(1, 90, 1, N, N, N, N),
3751*4882a593Smuzhiyun };
3752*4882a593Smuzhiyun 
3753*4882a593Smuzhiyun static struct atlas7_grp_mux sd3_9_grp_mux = {
3754*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd3_9_grp_pad_mux),
3755*4882a593Smuzhiyun 	.pad_mux_list = sd3_9_grp_pad_mux,
3756*4882a593Smuzhiyun };
3757*4882a593Smuzhiyun 
3758*4882a593Smuzhiyun static struct atlas7_pad_mux sd5_grp_pad_mux[] = {
3759*4882a593Smuzhiyun 	MUX(1, 91, 1, N, N, N, N),
3760*4882a593Smuzhiyun 	MUX(1, 92, 1, N, N, N, N),
3761*4882a593Smuzhiyun 	MUX(1, 93, 1, N, N, N, N),
3762*4882a593Smuzhiyun 	MUX(1, 94, 1, N, N, N, N),
3763*4882a593Smuzhiyun 	MUX(1, 95, 1, N, N, N, N),
3764*4882a593Smuzhiyun 	MUX(1, 96, 1, N, N, N, N),
3765*4882a593Smuzhiyun };
3766*4882a593Smuzhiyun 
3767*4882a593Smuzhiyun static struct atlas7_grp_mux sd5_grp_mux = {
3768*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd5_grp_pad_mux),
3769*4882a593Smuzhiyun 	.pad_mux_list = sd5_grp_pad_mux,
3770*4882a593Smuzhiyun };
3771*4882a593Smuzhiyun 
3772*4882a593Smuzhiyun static struct atlas7_pad_mux sd6_grp0_pad_mux[] = {
3773*4882a593Smuzhiyun 	MUX(1, 79, 4, 0xa00, 27, 0xa80, 27),
3774*4882a593Smuzhiyun 	MUX(1, 78, 4, 0xa00, 26, 0xa80, 26),
3775*4882a593Smuzhiyun 	MUX(1, 74, 4, 0xa00, 28, 0xa80, 28),
3776*4882a593Smuzhiyun 	MUX(1, 75, 4, 0xa00, 29, 0xa80, 29),
3777*4882a593Smuzhiyun 	MUX(1, 76, 4, 0xa00, 30, 0xa80, 30),
3778*4882a593Smuzhiyun 	MUX(1, 77, 4, 0xa00, 31, 0xa80, 31),
3779*4882a593Smuzhiyun };
3780*4882a593Smuzhiyun 
3781*4882a593Smuzhiyun static struct atlas7_grp_mux sd6_grp0_mux = {
3782*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd6_grp0_pad_mux),
3783*4882a593Smuzhiyun 	.pad_mux_list = sd6_grp0_pad_mux,
3784*4882a593Smuzhiyun };
3785*4882a593Smuzhiyun 
3786*4882a593Smuzhiyun static struct atlas7_pad_mux sd6_grp1_pad_mux[] = {
3787*4882a593Smuzhiyun 	MUX(1, 101, 3, 0xa00, 27, 0xa80, 27),
3788*4882a593Smuzhiyun 	MUX(1, 99, 3, 0xa00, 26, 0xa80, 26),
3789*4882a593Smuzhiyun 	MUX(1, 100, 3, 0xa00, 28, 0xa80, 28),
3790*4882a593Smuzhiyun 	MUX(1, 110, 3, 0xa00, 29, 0xa80, 29),
3791*4882a593Smuzhiyun 	MUX(1, 109, 3, 0xa00, 30, 0xa80, 30),
3792*4882a593Smuzhiyun 	MUX(1, 111, 3, 0xa00, 31, 0xa80, 31),
3793*4882a593Smuzhiyun };
3794*4882a593Smuzhiyun 
3795*4882a593Smuzhiyun static struct atlas7_grp_mux sd6_grp1_mux = {
3796*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sd6_grp1_pad_mux),
3797*4882a593Smuzhiyun 	.pad_mux_list = sd6_grp1_pad_mux,
3798*4882a593Smuzhiyun };
3799*4882a593Smuzhiyun 
3800*4882a593Smuzhiyun static struct atlas7_pad_mux sp0_ext_ldo_on_grp_pad_mux[] = {
3801*4882a593Smuzhiyun 	MUX(0, 4, 2, N, N, N, N),
3802*4882a593Smuzhiyun };
3803*4882a593Smuzhiyun 
3804*4882a593Smuzhiyun static struct atlas7_grp_mux sp0_ext_ldo_on_grp_mux = {
3805*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sp0_ext_ldo_on_grp_pad_mux),
3806*4882a593Smuzhiyun 	.pad_mux_list = sp0_ext_ldo_on_grp_pad_mux,
3807*4882a593Smuzhiyun };
3808*4882a593Smuzhiyun 
3809*4882a593Smuzhiyun static struct atlas7_pad_mux sp0_qspi_grp_pad_mux[] = {
3810*4882a593Smuzhiyun 	MUX(0, 12, 1, N, N, N, N),
3811*4882a593Smuzhiyun 	MUX(0, 13, 1, N, N, N, N),
3812*4882a593Smuzhiyun 	MUX(0, 14, 1, N, N, N, N),
3813*4882a593Smuzhiyun 	MUX(0, 15, 1, N, N, N, N),
3814*4882a593Smuzhiyun 	MUX(0, 16, 1, N, N, N, N),
3815*4882a593Smuzhiyun 	MUX(0, 17, 1, N, N, N, N),
3816*4882a593Smuzhiyun };
3817*4882a593Smuzhiyun 
3818*4882a593Smuzhiyun static struct atlas7_grp_mux sp0_qspi_grp_mux = {
3819*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sp0_qspi_grp_pad_mux),
3820*4882a593Smuzhiyun 	.pad_mux_list = sp0_qspi_grp_pad_mux,
3821*4882a593Smuzhiyun };
3822*4882a593Smuzhiyun 
3823*4882a593Smuzhiyun static struct atlas7_pad_mux sp1_spi_grp_pad_mux[] = {
3824*4882a593Smuzhiyun 	MUX(1, 19, 1, N, N, N, N),
3825*4882a593Smuzhiyun 	MUX(1, 20, 1, N, N, N, N),
3826*4882a593Smuzhiyun 	MUX(1, 21, 1, N, N, N, N),
3827*4882a593Smuzhiyun 	MUX(1, 18, 1, N, N, N, N),
3828*4882a593Smuzhiyun };
3829*4882a593Smuzhiyun 
3830*4882a593Smuzhiyun static struct atlas7_grp_mux sp1_spi_grp_mux = {
3831*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(sp1_spi_grp_pad_mux),
3832*4882a593Smuzhiyun 	.pad_mux_list = sp1_spi_grp_pad_mux,
3833*4882a593Smuzhiyun };
3834*4882a593Smuzhiyun 
3835*4882a593Smuzhiyun static struct atlas7_pad_mux tpiu_trace_grp_pad_mux[] = {
3836*4882a593Smuzhiyun 	MUX(1, 53, 5, N, N, N, N),
3837*4882a593Smuzhiyun 	MUX(1, 56, 5, N, N, N, N),
3838*4882a593Smuzhiyun 	MUX(1, 57, 5, N, N, N, N),
3839*4882a593Smuzhiyun 	MUX(1, 58, 5, N, N, N, N),
3840*4882a593Smuzhiyun 	MUX(1, 59, 5, N, N, N, N),
3841*4882a593Smuzhiyun 	MUX(1, 60, 5, N, N, N, N),
3842*4882a593Smuzhiyun 	MUX(1, 61, 5, N, N, N, N),
3843*4882a593Smuzhiyun 	MUX(1, 62, 5, N, N, N, N),
3844*4882a593Smuzhiyun 	MUX(1, 63, 5, N, N, N, N),
3845*4882a593Smuzhiyun 	MUX(1, 64, 5, N, N, N, N),
3846*4882a593Smuzhiyun 	MUX(1, 65, 5, N, N, N, N),
3847*4882a593Smuzhiyun 	MUX(1, 66, 5, N, N, N, N),
3848*4882a593Smuzhiyun 	MUX(1, 67, 5, N, N, N, N),
3849*4882a593Smuzhiyun 	MUX(1, 68, 5, N, N, N, N),
3850*4882a593Smuzhiyun 	MUX(1, 69, 5, N, N, N, N),
3851*4882a593Smuzhiyun 	MUX(1, 70, 5, N, N, N, N),
3852*4882a593Smuzhiyun 	MUX(1, 71, 5, N, N, N, N),
3853*4882a593Smuzhiyun 	MUX(1, 72, 5, N, N, N, N),
3854*4882a593Smuzhiyun };
3855*4882a593Smuzhiyun 
3856*4882a593Smuzhiyun static struct atlas7_grp_mux tpiu_trace_grp_mux = {
3857*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(tpiu_trace_grp_pad_mux),
3858*4882a593Smuzhiyun 	.pad_mux_list = tpiu_trace_grp_pad_mux,
3859*4882a593Smuzhiyun };
3860*4882a593Smuzhiyun 
3861*4882a593Smuzhiyun static struct atlas7_pad_mux uart0_grp_pad_mux[] = {
3862*4882a593Smuzhiyun 	MUX(1, 121, 4, N, N, N, N),
3863*4882a593Smuzhiyun 	MUX(1, 120, 4, N, N, N, N),
3864*4882a593Smuzhiyun 	MUX(1, 134, 1, N, N, N, N),
3865*4882a593Smuzhiyun 	MUX(1, 133, 1, N, N, N, N),
3866*4882a593Smuzhiyun };
3867*4882a593Smuzhiyun 
3868*4882a593Smuzhiyun static struct atlas7_grp_mux uart0_grp_mux = {
3869*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart0_grp_pad_mux),
3870*4882a593Smuzhiyun 	.pad_mux_list = uart0_grp_pad_mux,
3871*4882a593Smuzhiyun };
3872*4882a593Smuzhiyun 
3873*4882a593Smuzhiyun static struct atlas7_pad_mux uart0_nopause_grp_pad_mux[] = {
3874*4882a593Smuzhiyun 	MUX(1, 134, 1, N, N, N, N),
3875*4882a593Smuzhiyun 	MUX(1, 133, 1, N, N, N, N),
3876*4882a593Smuzhiyun };
3877*4882a593Smuzhiyun 
3878*4882a593Smuzhiyun static struct atlas7_grp_mux uart0_nopause_grp_mux = {
3879*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart0_nopause_grp_pad_mux),
3880*4882a593Smuzhiyun 	.pad_mux_list = uart0_nopause_grp_pad_mux,
3881*4882a593Smuzhiyun };
3882*4882a593Smuzhiyun 
3883*4882a593Smuzhiyun static struct atlas7_pad_mux uart1_grp_pad_mux[] = {
3884*4882a593Smuzhiyun 	MUX(1, 136, 1, N, N, N, N),
3885*4882a593Smuzhiyun 	MUX(1, 135, 1, N, N, N, N),
3886*4882a593Smuzhiyun };
3887*4882a593Smuzhiyun 
3888*4882a593Smuzhiyun static struct atlas7_grp_mux uart1_grp_mux = {
3889*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart1_grp_pad_mux),
3890*4882a593Smuzhiyun 	.pad_mux_list = uart1_grp_pad_mux,
3891*4882a593Smuzhiyun };
3892*4882a593Smuzhiyun 
3893*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_cts_grp0_pad_mux[] = {
3894*4882a593Smuzhiyun 	MUX(1, 132, 3, 0xa10, 2, 0xa90, 2),
3895*4882a593Smuzhiyun };
3896*4882a593Smuzhiyun 
3897*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_cts_grp0_mux = {
3898*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_cts_grp0_pad_mux),
3899*4882a593Smuzhiyun 	.pad_mux_list = uart2_cts_grp0_pad_mux,
3900*4882a593Smuzhiyun };
3901*4882a593Smuzhiyun 
3902*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_cts_grp1_pad_mux[] = {
3903*4882a593Smuzhiyun 	MUX(1, 162, 2, 0xa10, 2, 0xa90, 2),
3904*4882a593Smuzhiyun };
3905*4882a593Smuzhiyun 
3906*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_cts_grp1_mux = {
3907*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_cts_grp1_pad_mux),
3908*4882a593Smuzhiyun 	.pad_mux_list = uart2_cts_grp1_pad_mux,
3909*4882a593Smuzhiyun };
3910*4882a593Smuzhiyun 
3911*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_rts_grp0_pad_mux[] = {
3912*4882a593Smuzhiyun 	MUX(1, 131, 3, N, N, N, N),
3913*4882a593Smuzhiyun };
3914*4882a593Smuzhiyun 
3915*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_rts_grp0_mux = {
3916*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_rts_grp0_pad_mux),
3917*4882a593Smuzhiyun 	.pad_mux_list = uart2_rts_grp0_pad_mux,
3918*4882a593Smuzhiyun };
3919*4882a593Smuzhiyun 
3920*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_rts_grp1_pad_mux[] = {
3921*4882a593Smuzhiyun 	MUX(1, 161, 2, N, N, N, N),
3922*4882a593Smuzhiyun };
3923*4882a593Smuzhiyun 
3924*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_rts_grp1_mux = {
3925*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_rts_grp1_pad_mux),
3926*4882a593Smuzhiyun 	.pad_mux_list = uart2_rts_grp1_pad_mux,
3927*4882a593Smuzhiyun };
3928*4882a593Smuzhiyun 
3929*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_rxd_grp0_pad_mux[] = {
3930*4882a593Smuzhiyun 	MUX(0, 11, 2, 0xa10, 5, 0xa90, 5),
3931*4882a593Smuzhiyun };
3932*4882a593Smuzhiyun 
3933*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_rxd_grp0_mux = {
3934*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_rxd_grp0_pad_mux),
3935*4882a593Smuzhiyun 	.pad_mux_list = uart2_rxd_grp0_pad_mux,
3936*4882a593Smuzhiyun };
3937*4882a593Smuzhiyun 
3938*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_rxd_grp1_pad_mux[] = {
3939*4882a593Smuzhiyun 	MUX(1, 160, 2, 0xa10, 5, 0xa90, 5),
3940*4882a593Smuzhiyun };
3941*4882a593Smuzhiyun 
3942*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_rxd_grp1_mux = {
3943*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_rxd_grp1_pad_mux),
3944*4882a593Smuzhiyun 	.pad_mux_list = uart2_rxd_grp1_pad_mux,
3945*4882a593Smuzhiyun };
3946*4882a593Smuzhiyun 
3947*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_rxd_grp2_pad_mux[] = {
3948*4882a593Smuzhiyun 	MUX(1, 130, 3, 0xa10, 5, 0xa90, 5),
3949*4882a593Smuzhiyun };
3950*4882a593Smuzhiyun 
3951*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_rxd_grp2_mux = {
3952*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_rxd_grp2_pad_mux),
3953*4882a593Smuzhiyun 	.pad_mux_list = uart2_rxd_grp2_pad_mux,
3954*4882a593Smuzhiyun };
3955*4882a593Smuzhiyun 
3956*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_txd_grp0_pad_mux[] = {
3957*4882a593Smuzhiyun 	MUX(0, 10, 2, N, N, N, N),
3958*4882a593Smuzhiyun };
3959*4882a593Smuzhiyun 
3960*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_txd_grp0_mux = {
3961*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_txd_grp0_pad_mux),
3962*4882a593Smuzhiyun 	.pad_mux_list = uart2_txd_grp0_pad_mux,
3963*4882a593Smuzhiyun };
3964*4882a593Smuzhiyun 
3965*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_txd_grp1_pad_mux[] = {
3966*4882a593Smuzhiyun 	MUX(1, 159, 2, N, N, N, N),
3967*4882a593Smuzhiyun };
3968*4882a593Smuzhiyun 
3969*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_txd_grp1_mux = {
3970*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_txd_grp1_pad_mux),
3971*4882a593Smuzhiyun 	.pad_mux_list = uart2_txd_grp1_pad_mux,
3972*4882a593Smuzhiyun };
3973*4882a593Smuzhiyun 
3974*4882a593Smuzhiyun static struct atlas7_pad_mux uart2_txd_grp2_pad_mux[] = {
3975*4882a593Smuzhiyun 	MUX(1, 129, 3, N, N, N, N),
3976*4882a593Smuzhiyun };
3977*4882a593Smuzhiyun 
3978*4882a593Smuzhiyun static struct atlas7_grp_mux uart2_txd_grp2_mux = {
3979*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart2_txd_grp2_pad_mux),
3980*4882a593Smuzhiyun 	.pad_mux_list = uart2_txd_grp2_pad_mux,
3981*4882a593Smuzhiyun };
3982*4882a593Smuzhiyun 
3983*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_cts_grp0_pad_mux[] = {
3984*4882a593Smuzhiyun 	MUX(1, 125, 2, 0xa08, 0, 0xa88, 0),
3985*4882a593Smuzhiyun };
3986*4882a593Smuzhiyun 
3987*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_cts_grp0_mux = {
3988*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_cts_grp0_pad_mux),
3989*4882a593Smuzhiyun 	.pad_mux_list = uart3_cts_grp0_pad_mux,
3990*4882a593Smuzhiyun };
3991*4882a593Smuzhiyun 
3992*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_cts_grp1_pad_mux[] = {
3993*4882a593Smuzhiyun 	MUX(1, 111, 4, 0xa08, 0, 0xa88, 0),
3994*4882a593Smuzhiyun };
3995*4882a593Smuzhiyun 
3996*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_cts_grp1_mux = {
3997*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_cts_grp1_pad_mux),
3998*4882a593Smuzhiyun 	.pad_mux_list = uart3_cts_grp1_pad_mux,
3999*4882a593Smuzhiyun };
4000*4882a593Smuzhiyun 
4001*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_cts_grp2_pad_mux[] = {
4002*4882a593Smuzhiyun 	MUX(1, 140, 2, 0xa08, 0, 0xa88, 0),
4003*4882a593Smuzhiyun };
4004*4882a593Smuzhiyun 
4005*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_cts_grp2_mux = {
4006*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_cts_grp2_pad_mux),
4007*4882a593Smuzhiyun 	.pad_mux_list = uart3_cts_grp2_pad_mux,
4008*4882a593Smuzhiyun };
4009*4882a593Smuzhiyun 
4010*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rts_grp0_pad_mux[] = {
4011*4882a593Smuzhiyun 	MUX(1, 126, 2, N, N, N, N),
4012*4882a593Smuzhiyun };
4013*4882a593Smuzhiyun 
4014*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rts_grp0_mux = {
4015*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rts_grp0_pad_mux),
4016*4882a593Smuzhiyun 	.pad_mux_list = uart3_rts_grp0_pad_mux,
4017*4882a593Smuzhiyun };
4018*4882a593Smuzhiyun 
4019*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rts_grp1_pad_mux[] = {
4020*4882a593Smuzhiyun 	MUX(1, 109, 4, N, N, N, N),
4021*4882a593Smuzhiyun };
4022*4882a593Smuzhiyun 
4023*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rts_grp1_mux = {
4024*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rts_grp1_pad_mux),
4025*4882a593Smuzhiyun 	.pad_mux_list = uart3_rts_grp1_pad_mux,
4026*4882a593Smuzhiyun };
4027*4882a593Smuzhiyun 
4028*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rts_grp2_pad_mux[] = {
4029*4882a593Smuzhiyun 	MUX(1, 139, 2, N, N, N, N),
4030*4882a593Smuzhiyun };
4031*4882a593Smuzhiyun 
4032*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rts_grp2_mux = {
4033*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rts_grp2_pad_mux),
4034*4882a593Smuzhiyun 	.pad_mux_list = uart3_rts_grp2_pad_mux,
4035*4882a593Smuzhiyun };
4036*4882a593Smuzhiyun 
4037*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rxd_grp0_pad_mux[] = {
4038*4882a593Smuzhiyun 	MUX(1, 138, 1, 0xa00, 5, 0xa80, 5),
4039*4882a593Smuzhiyun };
4040*4882a593Smuzhiyun 
4041*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rxd_grp0_mux = {
4042*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rxd_grp0_pad_mux),
4043*4882a593Smuzhiyun 	.pad_mux_list = uart3_rxd_grp0_pad_mux,
4044*4882a593Smuzhiyun };
4045*4882a593Smuzhiyun 
4046*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rxd_grp1_pad_mux[] = {
4047*4882a593Smuzhiyun 	MUX(1, 84, 2, 0xa00, 5, 0xa80, 5),
4048*4882a593Smuzhiyun };
4049*4882a593Smuzhiyun 
4050*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rxd_grp1_mux = {
4051*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rxd_grp1_pad_mux),
4052*4882a593Smuzhiyun 	.pad_mux_list = uart3_rxd_grp1_pad_mux,
4053*4882a593Smuzhiyun };
4054*4882a593Smuzhiyun 
4055*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_rxd_grp2_pad_mux[] = {
4056*4882a593Smuzhiyun 	MUX(1, 162, 3, 0xa00, 5, 0xa80, 5),
4057*4882a593Smuzhiyun };
4058*4882a593Smuzhiyun 
4059*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_rxd_grp2_mux = {
4060*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_rxd_grp2_pad_mux),
4061*4882a593Smuzhiyun 	.pad_mux_list = uart3_rxd_grp2_pad_mux,
4062*4882a593Smuzhiyun };
4063*4882a593Smuzhiyun 
4064*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_txd_grp0_pad_mux[] = {
4065*4882a593Smuzhiyun 	MUX(1, 137, 1, N, N, N, N),
4066*4882a593Smuzhiyun };
4067*4882a593Smuzhiyun 
4068*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_txd_grp0_mux = {
4069*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_txd_grp0_pad_mux),
4070*4882a593Smuzhiyun 	.pad_mux_list = uart3_txd_grp0_pad_mux,
4071*4882a593Smuzhiyun };
4072*4882a593Smuzhiyun 
4073*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_txd_grp1_pad_mux[] = {
4074*4882a593Smuzhiyun 	MUX(1, 83, 2, N, N, N, N),
4075*4882a593Smuzhiyun };
4076*4882a593Smuzhiyun 
4077*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_txd_grp1_mux = {
4078*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_txd_grp1_pad_mux),
4079*4882a593Smuzhiyun 	.pad_mux_list = uart3_txd_grp1_pad_mux,
4080*4882a593Smuzhiyun };
4081*4882a593Smuzhiyun 
4082*4882a593Smuzhiyun static struct atlas7_pad_mux uart3_txd_grp2_pad_mux[] = {
4083*4882a593Smuzhiyun 	MUX(1, 161, 3, N, N, N, N),
4084*4882a593Smuzhiyun };
4085*4882a593Smuzhiyun 
4086*4882a593Smuzhiyun static struct atlas7_grp_mux uart3_txd_grp2_mux = {
4087*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart3_txd_grp2_pad_mux),
4088*4882a593Smuzhiyun 	.pad_mux_list = uart3_txd_grp2_pad_mux,
4089*4882a593Smuzhiyun };
4090*4882a593Smuzhiyun 
4091*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_basic_grp_pad_mux[] = {
4092*4882a593Smuzhiyun 	MUX(1, 140, 1, N, N, N, N),
4093*4882a593Smuzhiyun 	MUX(1, 139, 1, N, N, N, N),
4094*4882a593Smuzhiyun };
4095*4882a593Smuzhiyun 
4096*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_basic_grp_mux = {
4097*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_basic_grp_pad_mux),
4098*4882a593Smuzhiyun 	.pad_mux_list = uart4_basic_grp_pad_mux,
4099*4882a593Smuzhiyun };
4100*4882a593Smuzhiyun 
4101*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_cts_grp0_pad_mux[] = {
4102*4882a593Smuzhiyun 	MUX(1, 122, 4, 0xa08, 1, 0xa88, 1),
4103*4882a593Smuzhiyun };
4104*4882a593Smuzhiyun 
4105*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_cts_grp0_mux = {
4106*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_cts_grp0_pad_mux),
4107*4882a593Smuzhiyun 	.pad_mux_list = uart4_cts_grp0_pad_mux,
4108*4882a593Smuzhiyun };
4109*4882a593Smuzhiyun 
4110*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_cts_grp1_pad_mux[] = {
4111*4882a593Smuzhiyun 	MUX(1, 100, 4, 0xa08, 1, 0xa88, 1),
4112*4882a593Smuzhiyun };
4113*4882a593Smuzhiyun 
4114*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_cts_grp1_mux = {
4115*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_cts_grp1_pad_mux),
4116*4882a593Smuzhiyun 	.pad_mux_list = uart4_cts_grp1_pad_mux,
4117*4882a593Smuzhiyun };
4118*4882a593Smuzhiyun 
4119*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_cts_grp2_pad_mux[] = {
4120*4882a593Smuzhiyun 	MUX(1, 117, 2, 0xa08, 1, 0xa88, 1),
4121*4882a593Smuzhiyun };
4122*4882a593Smuzhiyun 
4123*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_cts_grp2_mux = {
4124*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_cts_grp2_pad_mux),
4125*4882a593Smuzhiyun 	.pad_mux_list = uart4_cts_grp2_pad_mux,
4126*4882a593Smuzhiyun };
4127*4882a593Smuzhiyun 
4128*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_rts_grp0_pad_mux[] = {
4129*4882a593Smuzhiyun 	MUX(1, 123, 4, N, N, N, N),
4130*4882a593Smuzhiyun };
4131*4882a593Smuzhiyun 
4132*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_rts_grp0_mux = {
4133*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_rts_grp0_pad_mux),
4134*4882a593Smuzhiyun 	.pad_mux_list = uart4_rts_grp0_pad_mux,
4135*4882a593Smuzhiyun };
4136*4882a593Smuzhiyun 
4137*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_rts_grp1_pad_mux[] = {
4138*4882a593Smuzhiyun 	MUX(1, 99, 4, N, N, N, N),
4139*4882a593Smuzhiyun };
4140*4882a593Smuzhiyun 
4141*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_rts_grp1_mux = {
4142*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_rts_grp1_pad_mux),
4143*4882a593Smuzhiyun 	.pad_mux_list = uart4_rts_grp1_pad_mux,
4144*4882a593Smuzhiyun };
4145*4882a593Smuzhiyun 
4146*4882a593Smuzhiyun static struct atlas7_pad_mux uart4_rts_grp2_pad_mux[] = {
4147*4882a593Smuzhiyun 	MUX(1, 116, 2, N, N, N, N),
4148*4882a593Smuzhiyun };
4149*4882a593Smuzhiyun 
4150*4882a593Smuzhiyun static struct atlas7_grp_mux uart4_rts_grp2_mux = {
4151*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(uart4_rts_grp2_pad_mux),
4152*4882a593Smuzhiyun 	.pad_mux_list = uart4_rts_grp2_pad_mux,
4153*4882a593Smuzhiyun };
4154*4882a593Smuzhiyun 
4155*4882a593Smuzhiyun static struct atlas7_pad_mux usb0_drvvbus_grp0_pad_mux[] = {
4156*4882a593Smuzhiyun 	MUX(1, 51, 2, N, N, N, N),
4157*4882a593Smuzhiyun };
4158*4882a593Smuzhiyun 
4159*4882a593Smuzhiyun static struct atlas7_grp_mux usb0_drvvbus_grp0_mux = {
4160*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(usb0_drvvbus_grp0_pad_mux),
4161*4882a593Smuzhiyun 	.pad_mux_list = usb0_drvvbus_grp0_pad_mux,
4162*4882a593Smuzhiyun };
4163*4882a593Smuzhiyun 
4164*4882a593Smuzhiyun static struct atlas7_pad_mux usb0_drvvbus_grp1_pad_mux[] = {
4165*4882a593Smuzhiyun 	MUX(1, 162, 7, N, N, N, N),
4166*4882a593Smuzhiyun };
4167*4882a593Smuzhiyun 
4168*4882a593Smuzhiyun static struct atlas7_grp_mux usb0_drvvbus_grp1_mux = {
4169*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(usb0_drvvbus_grp1_pad_mux),
4170*4882a593Smuzhiyun 	.pad_mux_list = usb0_drvvbus_grp1_pad_mux,
4171*4882a593Smuzhiyun };
4172*4882a593Smuzhiyun 
4173*4882a593Smuzhiyun static struct atlas7_pad_mux usb1_drvvbus_grp0_pad_mux[] = {
4174*4882a593Smuzhiyun 	MUX(1, 134, 2, N, N, N, N),
4175*4882a593Smuzhiyun };
4176*4882a593Smuzhiyun 
4177*4882a593Smuzhiyun static struct atlas7_grp_mux usb1_drvvbus_grp0_mux = {
4178*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(usb1_drvvbus_grp0_pad_mux),
4179*4882a593Smuzhiyun 	.pad_mux_list = usb1_drvvbus_grp0_pad_mux,
4180*4882a593Smuzhiyun };
4181*4882a593Smuzhiyun 
4182*4882a593Smuzhiyun static struct atlas7_pad_mux usb1_drvvbus_grp1_pad_mux[] = {
4183*4882a593Smuzhiyun 	MUX(1, 163, 2, N, N, N, N),
4184*4882a593Smuzhiyun };
4185*4882a593Smuzhiyun 
4186*4882a593Smuzhiyun static struct atlas7_grp_mux usb1_drvvbus_grp1_mux = {
4187*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(usb1_drvvbus_grp1_pad_mux),
4188*4882a593Smuzhiyun 	.pad_mux_list = usb1_drvvbus_grp1_pad_mux,
4189*4882a593Smuzhiyun };
4190*4882a593Smuzhiyun 
4191*4882a593Smuzhiyun static struct atlas7_pad_mux visbus_dout_grp_pad_mux[] = {
4192*4882a593Smuzhiyun 	MUX(1, 57, 6, N, N, N, N),
4193*4882a593Smuzhiyun 	MUX(1, 58, 6, N, N, N, N),
4194*4882a593Smuzhiyun 	MUX(1, 59, 6, N, N, N, N),
4195*4882a593Smuzhiyun 	MUX(1, 60, 6, N, N, N, N),
4196*4882a593Smuzhiyun 	MUX(1, 61, 6, N, N, N, N),
4197*4882a593Smuzhiyun 	MUX(1, 62, 6, N, N, N, N),
4198*4882a593Smuzhiyun 	MUX(1, 63, 6, N, N, N, N),
4199*4882a593Smuzhiyun 	MUX(1, 64, 6, N, N, N, N),
4200*4882a593Smuzhiyun 	MUX(1, 65, 6, N, N, N, N),
4201*4882a593Smuzhiyun 	MUX(1, 66, 6, N, N, N, N),
4202*4882a593Smuzhiyun 	MUX(1, 67, 6, N, N, N, N),
4203*4882a593Smuzhiyun 	MUX(1, 68, 6, N, N, N, N),
4204*4882a593Smuzhiyun 	MUX(1, 69, 6, N, N, N, N),
4205*4882a593Smuzhiyun 	MUX(1, 70, 6, N, N, N, N),
4206*4882a593Smuzhiyun 	MUX(1, 71, 6, N, N, N, N),
4207*4882a593Smuzhiyun 	MUX(1, 72, 6, N, N, N, N),
4208*4882a593Smuzhiyun 	MUX(1, 53, 6, N, N, N, N),
4209*4882a593Smuzhiyun 	MUX(1, 54, 6, N, N, N, N),
4210*4882a593Smuzhiyun 	MUX(1, 55, 6, N, N, N, N),
4211*4882a593Smuzhiyun 	MUX(1, 56, 6, N, N, N, N),
4212*4882a593Smuzhiyun 	MUX(1, 85, 6, N, N, N, N),
4213*4882a593Smuzhiyun 	MUX(1, 86, 6, N, N, N, N),
4214*4882a593Smuzhiyun 	MUX(1, 87, 6, N, N, N, N),
4215*4882a593Smuzhiyun 	MUX(1, 88, 6, N, N, N, N),
4216*4882a593Smuzhiyun 	MUX(1, 89, 6, N, N, N, N),
4217*4882a593Smuzhiyun 	MUX(1, 90, 6, N, N, N, N),
4218*4882a593Smuzhiyun 	MUX(1, 91, 6, N, N, N, N),
4219*4882a593Smuzhiyun 	MUX(1, 92, 6, N, N, N, N),
4220*4882a593Smuzhiyun 	MUX(1, 93, 6, N, N, N, N),
4221*4882a593Smuzhiyun 	MUX(1, 94, 6, N, N, N, N),
4222*4882a593Smuzhiyun 	MUX(1, 95, 6, N, N, N, N),
4223*4882a593Smuzhiyun 	MUX(1, 96, 6, N, N, N, N),
4224*4882a593Smuzhiyun };
4225*4882a593Smuzhiyun 
4226*4882a593Smuzhiyun static struct atlas7_grp_mux visbus_dout_grp_mux = {
4227*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(visbus_dout_grp_pad_mux),
4228*4882a593Smuzhiyun 	.pad_mux_list = visbus_dout_grp_pad_mux,
4229*4882a593Smuzhiyun };
4230*4882a593Smuzhiyun 
4231*4882a593Smuzhiyun static struct atlas7_pad_mux vi_vip1_grp_pad_mux[] = {
4232*4882a593Smuzhiyun 	MUX(1, 74, 1, N, N, N, N),
4233*4882a593Smuzhiyun 	MUX(1, 75, 1, N, N, N, N),
4234*4882a593Smuzhiyun 	MUX(1, 76, 1, N, N, N, N),
4235*4882a593Smuzhiyun 	MUX(1, 77, 1, N, N, N, N),
4236*4882a593Smuzhiyun 	MUX(1, 78, 1, N, N, N, N),
4237*4882a593Smuzhiyun 	MUX(1, 79, 1, N, N, N, N),
4238*4882a593Smuzhiyun 	MUX(1, 80, 1, N, N, N, N),
4239*4882a593Smuzhiyun 	MUX(1, 81, 1, N, N, N, N),
4240*4882a593Smuzhiyun 	MUX(1, 82, 1, N, N, N, N),
4241*4882a593Smuzhiyun 	MUX(1, 83, 1, N, N, N, N),
4242*4882a593Smuzhiyun 	MUX(1, 84, 1, N, N, N, N),
4243*4882a593Smuzhiyun 	MUX(1, 103, 2, N, N, N, N),
4244*4882a593Smuzhiyun 	MUX(1, 104, 2, N, N, N, N),
4245*4882a593Smuzhiyun 	MUX(1, 105, 2, N, N, N, N),
4246*4882a593Smuzhiyun 	MUX(1, 106, 2, N, N, N, N),
4247*4882a593Smuzhiyun 	MUX(1, 107, 2, N, N, N, N),
4248*4882a593Smuzhiyun 	MUX(1, 102, 2, N, N, N, N),
4249*4882a593Smuzhiyun 	MUX(1, 97, 2, N, N, N, N),
4250*4882a593Smuzhiyun 	MUX(1, 98, 2, N, N, N, N),
4251*4882a593Smuzhiyun };
4252*4882a593Smuzhiyun 
4253*4882a593Smuzhiyun static struct atlas7_grp_mux vi_vip1_grp_mux = {
4254*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(vi_vip1_grp_pad_mux),
4255*4882a593Smuzhiyun 	.pad_mux_list = vi_vip1_grp_pad_mux,
4256*4882a593Smuzhiyun };
4257*4882a593Smuzhiyun 
4258*4882a593Smuzhiyun static struct atlas7_pad_mux vi_vip1_ext_grp_pad_mux[] = {
4259*4882a593Smuzhiyun 	MUX(1, 74, 1, N, N, N, N),
4260*4882a593Smuzhiyun 	MUX(1, 75, 1, N, N, N, N),
4261*4882a593Smuzhiyun 	MUX(1, 76, 1, N, N, N, N),
4262*4882a593Smuzhiyun 	MUX(1, 77, 1, N, N, N, N),
4263*4882a593Smuzhiyun 	MUX(1, 78, 1, N, N, N, N),
4264*4882a593Smuzhiyun 	MUX(1, 79, 1, N, N, N, N),
4265*4882a593Smuzhiyun 	MUX(1, 80, 1, N, N, N, N),
4266*4882a593Smuzhiyun 	MUX(1, 81, 1, N, N, N, N),
4267*4882a593Smuzhiyun 	MUX(1, 82, 1, N, N, N, N),
4268*4882a593Smuzhiyun 	MUX(1, 83, 1, N, N, N, N),
4269*4882a593Smuzhiyun 	MUX(1, 84, 1, N, N, N, N),
4270*4882a593Smuzhiyun 	MUX(1, 108, 2, N, N, N, N),
4271*4882a593Smuzhiyun 	MUX(1, 103, 2, N, N, N, N),
4272*4882a593Smuzhiyun 	MUX(1, 104, 2, N, N, N, N),
4273*4882a593Smuzhiyun 	MUX(1, 105, 2, N, N, N, N),
4274*4882a593Smuzhiyun 	MUX(1, 106, 2, N, N, N, N),
4275*4882a593Smuzhiyun 	MUX(1, 107, 2, N, N, N, N),
4276*4882a593Smuzhiyun 	MUX(1, 102, 2, N, N, N, N),
4277*4882a593Smuzhiyun 	MUX(1, 97, 2, N, N, N, N),
4278*4882a593Smuzhiyun 	MUX(1, 98, 2, N, N, N, N),
4279*4882a593Smuzhiyun 	MUX(1, 99, 2, N, N, N, N),
4280*4882a593Smuzhiyun 	MUX(1, 100, 2, N, N, N, N),
4281*4882a593Smuzhiyun };
4282*4882a593Smuzhiyun 
4283*4882a593Smuzhiyun static struct atlas7_grp_mux vi_vip1_ext_grp_mux = {
4284*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(vi_vip1_ext_grp_pad_mux),
4285*4882a593Smuzhiyun 	.pad_mux_list = vi_vip1_ext_grp_pad_mux,
4286*4882a593Smuzhiyun };
4287*4882a593Smuzhiyun 
4288*4882a593Smuzhiyun static struct atlas7_pad_mux vi_vip1_low8bit_grp_pad_mux[] = {
4289*4882a593Smuzhiyun 	MUX(1, 74, 1, N, N, N, N),
4290*4882a593Smuzhiyun 	MUX(1, 75, 1, N, N, N, N),
4291*4882a593Smuzhiyun 	MUX(1, 76, 1, N, N, N, N),
4292*4882a593Smuzhiyun 	MUX(1, 77, 1, N, N, N, N),
4293*4882a593Smuzhiyun 	MUX(1, 78, 1, N, N, N, N),
4294*4882a593Smuzhiyun 	MUX(1, 79, 1, N, N, N, N),
4295*4882a593Smuzhiyun 	MUX(1, 80, 1, N, N, N, N),
4296*4882a593Smuzhiyun 	MUX(1, 81, 1, N, N, N, N),
4297*4882a593Smuzhiyun 	MUX(1, 82, 1, N, N, N, N),
4298*4882a593Smuzhiyun 	MUX(1, 83, 1, N, N, N, N),
4299*4882a593Smuzhiyun 	MUX(1, 84, 1, N, N, N, N),
4300*4882a593Smuzhiyun };
4301*4882a593Smuzhiyun 
4302*4882a593Smuzhiyun static struct atlas7_grp_mux vi_vip1_low8bit_grp_mux = {
4303*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(vi_vip1_low8bit_grp_pad_mux),
4304*4882a593Smuzhiyun 	.pad_mux_list = vi_vip1_low8bit_grp_pad_mux,
4305*4882a593Smuzhiyun };
4306*4882a593Smuzhiyun 
4307*4882a593Smuzhiyun static struct atlas7_pad_mux vi_vip1_high8bit_grp_pad_mux[] = {
4308*4882a593Smuzhiyun 	MUX(1, 82, 1, N, N, N, N),
4309*4882a593Smuzhiyun 	MUX(1, 83, 1, N, N, N, N),
4310*4882a593Smuzhiyun 	MUX(1, 84, 1, N, N, N, N),
4311*4882a593Smuzhiyun 	MUX(1, 103, 2, N, N, N, N),
4312*4882a593Smuzhiyun 	MUX(1, 104, 2, N, N, N, N),
4313*4882a593Smuzhiyun 	MUX(1, 105, 2, N, N, N, N),
4314*4882a593Smuzhiyun 	MUX(1, 106, 2, N, N, N, N),
4315*4882a593Smuzhiyun 	MUX(1, 107, 2, N, N, N, N),
4316*4882a593Smuzhiyun 	MUX(1, 102, 2, N, N, N, N),
4317*4882a593Smuzhiyun 	MUX(1, 97, 2, N, N, N, N),
4318*4882a593Smuzhiyun 	MUX(1, 98, 2, N, N, N, N),
4319*4882a593Smuzhiyun };
4320*4882a593Smuzhiyun 
4321*4882a593Smuzhiyun static struct atlas7_grp_mux vi_vip1_high8bit_grp_mux = {
4322*4882a593Smuzhiyun 	.pad_mux_count = ARRAY_SIZE(vi_vip1_high8bit_grp_pad_mux),
4323*4882a593Smuzhiyun 	.pad_mux_list = vi_vip1_high8bit_grp_pad_mux,
4324*4882a593Smuzhiyun };
4325*4882a593Smuzhiyun 
4326*4882a593Smuzhiyun static struct atlas7_pmx_func atlas7_pmx_functions[] = {
4327*4882a593Smuzhiyun 	FUNCTION("gnss_gpio", gnss_gpio_grp, &gnss_gpio_grp_mux),
4328*4882a593Smuzhiyun 	FUNCTION("lcd_vip_gpio", lcd_vip_gpio_grp, &lcd_vip_gpio_grp_mux),
4329*4882a593Smuzhiyun 	FUNCTION("sdio_i2s_gpio", sdio_i2s_gpio_grp, &sdio_i2s_gpio_grp_mux),
4330*4882a593Smuzhiyun 	FUNCTION("sp_rgmii_gpio", sp_rgmii_gpio_grp, &sp_rgmii_gpio_grp_mux),
4331*4882a593Smuzhiyun 	FUNCTION("lvds_gpio", lvds_gpio_grp, &lvds_gpio_grp_mux),
4332*4882a593Smuzhiyun 	FUNCTION("jtag_uart_nand_gpio",
4333*4882a593Smuzhiyun 			jtag_uart_nand_gpio_grp,
4334*4882a593Smuzhiyun 			&jtag_uart_nand_gpio_grp_mux),
4335*4882a593Smuzhiyun 	FUNCTION("rtc_gpio", rtc_gpio_grp, &rtc_gpio_grp_mux),
4336*4882a593Smuzhiyun 	FUNCTION("audio_ac97", audio_ac97_grp, &audio_ac97_grp_mux),
4337*4882a593Smuzhiyun 	FUNCTION("audio_digmic_m0",
4338*4882a593Smuzhiyun 			audio_digmic_grp0,
4339*4882a593Smuzhiyun 			&audio_digmic_grp0_mux),
4340*4882a593Smuzhiyun 	FUNCTION("audio_digmic_m1",
4341*4882a593Smuzhiyun 			audio_digmic_grp1,
4342*4882a593Smuzhiyun 			&audio_digmic_grp1_mux),
4343*4882a593Smuzhiyun 	FUNCTION("audio_digmic_m2",
4344*4882a593Smuzhiyun 			audio_digmic_grp2,
4345*4882a593Smuzhiyun 			&audio_digmic_grp2_mux),
4346*4882a593Smuzhiyun 	FUNCTION("audio_func_dbg",
4347*4882a593Smuzhiyun 			audio_func_dbg_grp,
4348*4882a593Smuzhiyun 			&audio_func_dbg_grp_mux),
4349*4882a593Smuzhiyun 	FUNCTION("audio_i2s", audio_i2s_grp, &audio_i2s_grp_mux),
4350*4882a593Smuzhiyun 	FUNCTION("audio_i2s_2ch", audio_i2s_2ch_grp, &audio_i2s_2ch_grp_mux),
4351*4882a593Smuzhiyun 	FUNCTION("audio_i2s_extclk",
4352*4882a593Smuzhiyun 			audio_i2s_extclk_grp,
4353*4882a593Smuzhiyun 			&audio_i2s_extclk_grp_mux),
4354*4882a593Smuzhiyun 	FUNCTION("audio_spdif_out_m0",
4355*4882a593Smuzhiyun 			audio_spdif_out_grp0,
4356*4882a593Smuzhiyun 			&audio_spdif_out_grp0_mux),
4357*4882a593Smuzhiyun 	FUNCTION("audio_spdif_out_m1",
4358*4882a593Smuzhiyun 			audio_spdif_out_grp1,
4359*4882a593Smuzhiyun 			&audio_spdif_out_grp1_mux),
4360*4882a593Smuzhiyun 	FUNCTION("audio_spdif_out_m2",
4361*4882a593Smuzhiyun 			audio_spdif_out_grp2,
4362*4882a593Smuzhiyun 			&audio_spdif_out_grp2_mux),
4363*4882a593Smuzhiyun 	FUNCTION("audio_uart0_basic",
4364*4882a593Smuzhiyun 			audio_uart0_basic_grp,
4365*4882a593Smuzhiyun 			&audio_uart0_basic_grp_mux),
4366*4882a593Smuzhiyun 	FUNCTION("audio_uart0_urfs_m0",
4367*4882a593Smuzhiyun 			audio_uart0_urfs_grp0,
4368*4882a593Smuzhiyun 			&audio_uart0_urfs_grp0_mux),
4369*4882a593Smuzhiyun 	FUNCTION("audio_uart0_urfs_m1",
4370*4882a593Smuzhiyun 			audio_uart0_urfs_grp1,
4371*4882a593Smuzhiyun 			&audio_uart0_urfs_grp1_mux),
4372*4882a593Smuzhiyun 	FUNCTION("audio_uart0_urfs_m2",
4373*4882a593Smuzhiyun 			audio_uart0_urfs_grp2,
4374*4882a593Smuzhiyun 			&audio_uart0_urfs_grp2_mux),
4375*4882a593Smuzhiyun 	FUNCTION("audio_uart0_urfs_m3",
4376*4882a593Smuzhiyun 			audio_uart0_urfs_grp3,
4377*4882a593Smuzhiyun 			&audio_uart0_urfs_grp3_mux),
4378*4882a593Smuzhiyun 	FUNCTION("audio_uart1_basic",
4379*4882a593Smuzhiyun 			audio_uart1_basic_grp,
4380*4882a593Smuzhiyun 			&audio_uart1_basic_grp_mux),
4381*4882a593Smuzhiyun 	FUNCTION("audio_uart1_urfs_m0",
4382*4882a593Smuzhiyun 			audio_uart1_urfs_grp0,
4383*4882a593Smuzhiyun 			&audio_uart1_urfs_grp0_mux),
4384*4882a593Smuzhiyun 	FUNCTION("audio_uart1_urfs_m1",
4385*4882a593Smuzhiyun 			audio_uart1_urfs_grp1,
4386*4882a593Smuzhiyun 			&audio_uart1_urfs_grp1_mux),
4387*4882a593Smuzhiyun 	FUNCTION("audio_uart1_urfs_m2",
4388*4882a593Smuzhiyun 			audio_uart1_urfs_grp2,
4389*4882a593Smuzhiyun 			&audio_uart1_urfs_grp2_mux),
4390*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urfs_m0",
4391*4882a593Smuzhiyun 			audio_uart2_urfs_grp0,
4392*4882a593Smuzhiyun 			&audio_uart2_urfs_grp0_mux),
4393*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urfs_m1",
4394*4882a593Smuzhiyun 			audio_uart2_urfs_grp1,
4395*4882a593Smuzhiyun 			&audio_uart2_urfs_grp1_mux),
4396*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urfs_m2",
4397*4882a593Smuzhiyun 			audio_uart2_urfs_grp2,
4398*4882a593Smuzhiyun 			&audio_uart2_urfs_grp2_mux),
4399*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urxd_m0",
4400*4882a593Smuzhiyun 			audio_uart2_urxd_grp0,
4401*4882a593Smuzhiyun 			&audio_uart2_urxd_grp0_mux),
4402*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urxd_m1",
4403*4882a593Smuzhiyun 			audio_uart2_urxd_grp1,
4404*4882a593Smuzhiyun 			&audio_uart2_urxd_grp1_mux),
4405*4882a593Smuzhiyun 	FUNCTION("audio_uart2_urxd_m2",
4406*4882a593Smuzhiyun 			audio_uart2_urxd_grp2,
4407*4882a593Smuzhiyun 			&audio_uart2_urxd_grp2_mux),
4408*4882a593Smuzhiyun 	FUNCTION("audio_uart2_usclk_m0",
4409*4882a593Smuzhiyun 			audio_uart2_usclk_grp0,
4410*4882a593Smuzhiyun 			&audio_uart2_usclk_grp0_mux),
4411*4882a593Smuzhiyun 	FUNCTION("audio_uart2_usclk_m1",
4412*4882a593Smuzhiyun 			audio_uart2_usclk_grp1,
4413*4882a593Smuzhiyun 			&audio_uart2_usclk_grp1_mux),
4414*4882a593Smuzhiyun 	FUNCTION("audio_uart2_usclk_m2",
4415*4882a593Smuzhiyun 			audio_uart2_usclk_grp2,
4416*4882a593Smuzhiyun 			&audio_uart2_usclk_grp2_mux),
4417*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utfs_m0",
4418*4882a593Smuzhiyun 			audio_uart2_utfs_grp0,
4419*4882a593Smuzhiyun 			&audio_uart2_utfs_grp0_mux),
4420*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utfs_m1",
4421*4882a593Smuzhiyun 			audio_uart2_utfs_grp1,
4422*4882a593Smuzhiyun 			&audio_uart2_utfs_grp1_mux),
4423*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utfs_m2",
4424*4882a593Smuzhiyun 			audio_uart2_utfs_grp2,
4425*4882a593Smuzhiyun 			&audio_uart2_utfs_grp2_mux),
4426*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utxd_m0",
4427*4882a593Smuzhiyun 			audio_uart2_utxd_grp0,
4428*4882a593Smuzhiyun 			&audio_uart2_utxd_grp0_mux),
4429*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utxd_m1",
4430*4882a593Smuzhiyun 			audio_uart2_utxd_grp1,
4431*4882a593Smuzhiyun 			&audio_uart2_utxd_grp1_mux),
4432*4882a593Smuzhiyun 	FUNCTION("audio_uart2_utxd_m2",
4433*4882a593Smuzhiyun 			audio_uart2_utxd_grp2,
4434*4882a593Smuzhiyun 			&audio_uart2_utxd_grp2_mux),
4435*4882a593Smuzhiyun 	FUNCTION("c_can_trnsvr_en_m0",
4436*4882a593Smuzhiyun 			c_can_trnsvr_en_grp0,
4437*4882a593Smuzhiyun 			&c_can_trnsvr_en_grp0_mux),
4438*4882a593Smuzhiyun 	FUNCTION("c_can_trnsvr_en_m1",
4439*4882a593Smuzhiyun 			c_can_trnsvr_en_grp1,
4440*4882a593Smuzhiyun 			&c_can_trnsvr_en_grp1_mux),
4441*4882a593Smuzhiyun 	FUNCTION("c_can_trnsvr_intr",
4442*4882a593Smuzhiyun 			c_can_trnsvr_intr_grp,
4443*4882a593Smuzhiyun 			&c_can_trnsvr_intr_grp_mux),
4444*4882a593Smuzhiyun 	FUNCTION("c_can_trnsvr_stb_n",
4445*4882a593Smuzhiyun 			c_can_trnsvr_stb_n_grp,
4446*4882a593Smuzhiyun 			&c_can_trnsvr_stb_n_grp_mux),
4447*4882a593Smuzhiyun 	FUNCTION("c0_can_rxd_trnsv0",
4448*4882a593Smuzhiyun 			c0_can_rxd_trnsv0_grp,
4449*4882a593Smuzhiyun 			&c0_can_rxd_trnsv0_grp_mux),
4450*4882a593Smuzhiyun 	FUNCTION("c0_can_rxd_trnsv1",
4451*4882a593Smuzhiyun 			c0_can_rxd_trnsv1_grp,
4452*4882a593Smuzhiyun 			&c0_can_rxd_trnsv1_grp_mux),
4453*4882a593Smuzhiyun 	FUNCTION("c0_can_txd_trnsv0",
4454*4882a593Smuzhiyun 			c0_can_txd_trnsv0_grp,
4455*4882a593Smuzhiyun 			&c0_can_txd_trnsv0_grp_mux),
4456*4882a593Smuzhiyun 	FUNCTION("c0_can_txd_trnsv1",
4457*4882a593Smuzhiyun 			c0_can_txd_trnsv1_grp,
4458*4882a593Smuzhiyun 			&c0_can_txd_trnsv1_grp_mux),
4459*4882a593Smuzhiyun 	FUNCTION("c1_can_rxd_m0", c1_can_rxd_grp0, &c1_can_rxd_grp0_mux),
4460*4882a593Smuzhiyun 	FUNCTION("c1_can_rxd_m1", c1_can_rxd_grp1, &c1_can_rxd_grp1_mux),
4461*4882a593Smuzhiyun 	FUNCTION("c1_can_rxd_m2", c1_can_rxd_grp2, &c1_can_rxd_grp2_mux),
4462*4882a593Smuzhiyun 	FUNCTION("c1_can_rxd_m3", c1_can_rxd_grp3, &c1_can_rxd_grp3_mux),
4463*4882a593Smuzhiyun 	FUNCTION("c1_can_txd_m0", c1_can_txd_grp0, &c1_can_txd_grp0_mux),
4464*4882a593Smuzhiyun 	FUNCTION("c1_can_txd_m1", c1_can_txd_grp1, &c1_can_txd_grp1_mux),
4465*4882a593Smuzhiyun 	FUNCTION("c1_can_txd_m2", c1_can_txd_grp2, &c1_can_txd_grp2_mux),
4466*4882a593Smuzhiyun 	FUNCTION("c1_can_txd_m3", c1_can_txd_grp3, &c1_can_txd_grp3_mux),
4467*4882a593Smuzhiyun 	FUNCTION("ca_audio_lpc", ca_audio_lpc_grp, &ca_audio_lpc_grp_mux),
4468*4882a593Smuzhiyun 	FUNCTION("ca_bt_lpc", ca_bt_lpc_grp, &ca_bt_lpc_grp_mux),
4469*4882a593Smuzhiyun 	FUNCTION("ca_coex", ca_coex_grp, &ca_coex_grp_mux),
4470*4882a593Smuzhiyun 	FUNCTION("ca_curator_lpc",
4471*4882a593Smuzhiyun 			ca_curator_lpc_grp,
4472*4882a593Smuzhiyun 			&ca_curator_lpc_grp_mux),
4473*4882a593Smuzhiyun 	FUNCTION("ca_pcm_debug", ca_pcm_debug_grp, &ca_pcm_debug_grp_mux),
4474*4882a593Smuzhiyun 	FUNCTION("ca_pio", ca_pio_grp, &ca_pio_grp_mux),
4475*4882a593Smuzhiyun 	FUNCTION("ca_sdio_debug", ca_sdio_debug_grp, &ca_sdio_debug_grp_mux),
4476*4882a593Smuzhiyun 	FUNCTION("ca_spi", ca_spi_grp, &ca_spi_grp_mux),
4477*4882a593Smuzhiyun 	FUNCTION("ca_trb", ca_trb_grp, &ca_trb_grp_mux),
4478*4882a593Smuzhiyun 	FUNCTION("ca_uart_debug", ca_uart_debug_grp, &ca_uart_debug_grp_mux),
4479*4882a593Smuzhiyun 	FUNCTION("clkc_m0", clkc_grp0, &clkc_grp0_mux),
4480*4882a593Smuzhiyun 	FUNCTION("clkc_m1", clkc_grp1, &clkc_grp1_mux),
4481*4882a593Smuzhiyun 	FUNCTION("gn_gnss_i2c", gn_gnss_i2c_grp, &gn_gnss_i2c_grp_mux),
4482*4882a593Smuzhiyun 	FUNCTION("gn_gnss_uart_nopause",
4483*4882a593Smuzhiyun 			gn_gnss_uart_nopause_grp,
4484*4882a593Smuzhiyun 			&gn_gnss_uart_nopause_grp_mux),
4485*4882a593Smuzhiyun 	FUNCTION("gn_gnss_uart", gn_gnss_uart_grp, &gn_gnss_uart_grp_mux),
4486*4882a593Smuzhiyun 	FUNCTION("gn_trg_spi_m0", gn_trg_spi_grp0, &gn_trg_spi_grp0_mux),
4487*4882a593Smuzhiyun 	FUNCTION("gn_trg_spi_m1", gn_trg_spi_grp1, &gn_trg_spi_grp1_mux),
4488*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg", cvbs_dbg_grp, &cvbs_dbg_grp_mux),
4489*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m0",
4490*4882a593Smuzhiyun 			cvbs_dbg_test_grp0,
4491*4882a593Smuzhiyun 			&cvbs_dbg_test_grp0_mux),
4492*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m1",
4493*4882a593Smuzhiyun 			cvbs_dbg_test_grp1,
4494*4882a593Smuzhiyun 			&cvbs_dbg_test_grp1_mux),
4495*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m2",
4496*4882a593Smuzhiyun 			cvbs_dbg_test_grp2,
4497*4882a593Smuzhiyun 			&cvbs_dbg_test_grp2_mux),
4498*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m3",
4499*4882a593Smuzhiyun 			cvbs_dbg_test_grp3,
4500*4882a593Smuzhiyun 			&cvbs_dbg_test_grp3_mux),
4501*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m4",
4502*4882a593Smuzhiyun 			cvbs_dbg_test_grp4,
4503*4882a593Smuzhiyun 			&cvbs_dbg_test_grp4_mux),
4504*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m5",
4505*4882a593Smuzhiyun 			cvbs_dbg_test_grp5,
4506*4882a593Smuzhiyun 			&cvbs_dbg_test_grp5_mux),
4507*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m6",
4508*4882a593Smuzhiyun 			cvbs_dbg_test_grp6,
4509*4882a593Smuzhiyun 			&cvbs_dbg_test_grp6_mux),
4510*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m7",
4511*4882a593Smuzhiyun 			cvbs_dbg_test_grp7,
4512*4882a593Smuzhiyun 			&cvbs_dbg_test_grp7_mux),
4513*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m8",
4514*4882a593Smuzhiyun 			cvbs_dbg_test_grp8,
4515*4882a593Smuzhiyun 			&cvbs_dbg_test_grp8_mux),
4516*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m9",
4517*4882a593Smuzhiyun 			cvbs_dbg_test_grp9,
4518*4882a593Smuzhiyun 			&cvbs_dbg_test_grp9_mux),
4519*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m10",
4520*4882a593Smuzhiyun 			cvbs_dbg_test_grp10,
4521*4882a593Smuzhiyun 			&cvbs_dbg_test_grp10_mux),
4522*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m11",
4523*4882a593Smuzhiyun 			cvbs_dbg_test_grp11,
4524*4882a593Smuzhiyun 			&cvbs_dbg_test_grp11_mux),
4525*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m12",
4526*4882a593Smuzhiyun 			cvbs_dbg_test_grp12,
4527*4882a593Smuzhiyun 			&cvbs_dbg_test_grp12_mux),
4528*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m13",
4529*4882a593Smuzhiyun 			cvbs_dbg_test_grp13,
4530*4882a593Smuzhiyun 			&cvbs_dbg_test_grp13_mux),
4531*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m14",
4532*4882a593Smuzhiyun 			cvbs_dbg_test_grp14,
4533*4882a593Smuzhiyun 			&cvbs_dbg_test_grp14_mux),
4534*4882a593Smuzhiyun 	FUNCTION("cvbs_dbg_test_m15",
4535*4882a593Smuzhiyun 			cvbs_dbg_test_grp15,
4536*4882a593Smuzhiyun 			&cvbs_dbg_test_grp15_mux),
4537*4882a593Smuzhiyun 	FUNCTION("gn_gnss_power", gn_gnss_power_grp, &gn_gnss_power_grp_mux),
4538*4882a593Smuzhiyun 	FUNCTION("gn_gnss_sw_status",
4539*4882a593Smuzhiyun 			gn_gnss_sw_status_grp,
4540*4882a593Smuzhiyun 			&gn_gnss_sw_status_grp_mux),
4541*4882a593Smuzhiyun 	FUNCTION("gn_gnss_eclk", gn_gnss_eclk_grp, &gn_gnss_eclk_grp_mux),
4542*4882a593Smuzhiyun 	FUNCTION("gn_gnss_irq1_m0",
4543*4882a593Smuzhiyun 			gn_gnss_irq1_grp0,
4544*4882a593Smuzhiyun 			&gn_gnss_irq1_grp0_mux),
4545*4882a593Smuzhiyun 	FUNCTION("gn_gnss_irq2_m0",
4546*4882a593Smuzhiyun 			gn_gnss_irq2_grp0,
4547*4882a593Smuzhiyun 			&gn_gnss_irq2_grp0_mux),
4548*4882a593Smuzhiyun 	FUNCTION("gn_gnss_tm", gn_gnss_tm_grp, &gn_gnss_tm_grp_mux),
4549*4882a593Smuzhiyun 	FUNCTION("gn_gnss_tsync", gn_gnss_tsync_grp, &gn_gnss_tsync_grp_mux),
4550*4882a593Smuzhiyun 	FUNCTION("gn_io_gnsssys_sw_cfg",
4551*4882a593Smuzhiyun 			gn_io_gnsssys_sw_cfg_grp,
4552*4882a593Smuzhiyun 			&gn_io_gnsssys_sw_cfg_grp_mux),
4553*4882a593Smuzhiyun 	FUNCTION("gn_trg_m0", gn_trg_grp0, &gn_trg_grp0_mux),
4554*4882a593Smuzhiyun 	FUNCTION("gn_trg_m1", gn_trg_grp1, &gn_trg_grp1_mux),
4555*4882a593Smuzhiyun 	FUNCTION("gn_trg_shutdown_m0",
4556*4882a593Smuzhiyun 			gn_trg_shutdown_grp0,
4557*4882a593Smuzhiyun 			&gn_trg_shutdown_grp0_mux),
4558*4882a593Smuzhiyun 	FUNCTION("gn_trg_shutdown_m1",
4559*4882a593Smuzhiyun 			gn_trg_shutdown_grp1,
4560*4882a593Smuzhiyun 			&gn_trg_shutdown_grp1_mux),
4561*4882a593Smuzhiyun 	FUNCTION("gn_trg_shutdown_m2",
4562*4882a593Smuzhiyun 			gn_trg_shutdown_grp2,
4563*4882a593Smuzhiyun 			&gn_trg_shutdown_grp2_mux),
4564*4882a593Smuzhiyun 	FUNCTION("gn_trg_shutdown_m3",
4565*4882a593Smuzhiyun 			gn_trg_shutdown_grp3,
4566*4882a593Smuzhiyun 			&gn_trg_shutdown_grp3_mux),
4567*4882a593Smuzhiyun 	FUNCTION("i2c0", i2c0_grp, &i2c0_grp_mux),
4568*4882a593Smuzhiyun 	FUNCTION("i2c1", i2c1_grp, &i2c1_grp_mux),
4569*4882a593Smuzhiyun 	FUNCTION("i2s0", i2s0_grp, &i2s0_grp_mux),
4570*4882a593Smuzhiyun 	FUNCTION("i2s1_basic", i2s1_basic_grp, &i2s1_basic_grp_mux),
4571*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd0_m0", i2s1_rxd0_grp0, &i2s1_rxd0_grp0_mux),
4572*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd0_m1", i2s1_rxd0_grp1, &i2s1_rxd0_grp1_mux),
4573*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd0_m2", i2s1_rxd0_grp2, &i2s1_rxd0_grp2_mux),
4574*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd0_m3", i2s1_rxd0_grp3, &i2s1_rxd0_grp3_mux),
4575*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd0_m4", i2s1_rxd0_grp4, &i2s1_rxd0_grp4_mux),
4576*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd1_m0", i2s1_rxd1_grp0, &i2s1_rxd1_grp0_mux),
4577*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd1_m1", i2s1_rxd1_grp1, &i2s1_rxd1_grp1_mux),
4578*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd1_m2", i2s1_rxd1_grp2, &i2s1_rxd1_grp2_mux),
4579*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd1_m3", i2s1_rxd1_grp3, &i2s1_rxd1_grp3_mux),
4580*4882a593Smuzhiyun 	FUNCTION("i2s1_rxd1_m4", i2s1_rxd1_grp4, &i2s1_rxd1_grp4_mux),
4581*4882a593Smuzhiyun 	FUNCTION("jtag_jt_dbg_nsrst",
4582*4882a593Smuzhiyun 			jtag_jt_dbg_nsrst_grp,
4583*4882a593Smuzhiyun 			&jtag_jt_dbg_nsrst_grp_mux),
4584*4882a593Smuzhiyun 	FUNCTION("jtag_ntrst_m0", jtag_ntrst_grp0, &jtag_ntrst_grp0_mux),
4585*4882a593Smuzhiyun 	FUNCTION("jtag_ntrst_m1", jtag_ntrst_grp1, &jtag_ntrst_grp1_mux),
4586*4882a593Smuzhiyun 	FUNCTION("jtag_swdiotms_m0",
4587*4882a593Smuzhiyun 			jtag_swdiotms_grp0,
4588*4882a593Smuzhiyun 			&jtag_swdiotms_grp0_mux),
4589*4882a593Smuzhiyun 	FUNCTION("jtag_swdiotms_m1",
4590*4882a593Smuzhiyun 			jtag_swdiotms_grp1,
4591*4882a593Smuzhiyun 			&jtag_swdiotms_grp1_mux),
4592*4882a593Smuzhiyun 	FUNCTION("jtag_tck_m0", jtag_tck_grp0, &jtag_tck_grp0_mux),
4593*4882a593Smuzhiyun 	FUNCTION("jtag_tck_m1", jtag_tck_grp1, &jtag_tck_grp1_mux),
4594*4882a593Smuzhiyun 	FUNCTION("jtag_tdi_m0", jtag_tdi_grp0, &jtag_tdi_grp0_mux),
4595*4882a593Smuzhiyun 	FUNCTION("jtag_tdi_m1", jtag_tdi_grp1, &jtag_tdi_grp1_mux),
4596*4882a593Smuzhiyun 	FUNCTION("jtag_tdo_m0", jtag_tdo_grp0, &jtag_tdo_grp0_mux),
4597*4882a593Smuzhiyun 	FUNCTION("jtag_tdo_m1", jtag_tdo_grp1, &jtag_tdo_grp1_mux),
4598*4882a593Smuzhiyun 	FUNCTION("ks_kas_spi_m0", ks_kas_spi_grp0, &ks_kas_spi_grp0_mux),
4599*4882a593Smuzhiyun 	FUNCTION("ld_ldd", ld_ldd_grp, &ld_ldd_grp_mux),
4600*4882a593Smuzhiyun 	FUNCTION("ld_ldd_16bit", ld_ldd_16bit_grp, &ld_ldd_16bit_grp_mux),
4601*4882a593Smuzhiyun 	FUNCTION("ld_ldd_fck", ld_ldd_fck_grp, &ld_ldd_fck_grp_mux),
4602*4882a593Smuzhiyun 	FUNCTION("ld_ldd_lck", ld_ldd_lck_grp, &ld_ldd_lck_grp_mux),
4603*4882a593Smuzhiyun 	FUNCTION("lr_lcdrom", lr_lcdrom_grp, &lr_lcdrom_grp_mux),
4604*4882a593Smuzhiyun 	FUNCTION("lvds_analog", lvds_analog_grp, &lvds_analog_grp_mux),
4605*4882a593Smuzhiyun 	FUNCTION("nd_df_basic", nd_df_basic_grp, &nd_df_basic_grp_mux),
4606*4882a593Smuzhiyun 	FUNCTION("nd_df_wp", nd_df_wp_grp, &nd_df_wp_grp_mux),
4607*4882a593Smuzhiyun 	FUNCTION("nd_df_cs", nd_df_cs_grp, &nd_df_cs_grp_mux),
4608*4882a593Smuzhiyun 	FUNCTION("ps", ps_grp, &ps_grp_mux),
4609*4882a593Smuzhiyun 	FUNCTION("ps_no_dir", ps_no_dir_grp, &ps_no_dir_grp_mux),
4610*4882a593Smuzhiyun 	FUNCTION("pwc_core_on", pwc_core_on_grp, &pwc_core_on_grp_mux),
4611*4882a593Smuzhiyun 	FUNCTION("pwc_ext_on", pwc_ext_on_grp, &pwc_ext_on_grp_mux),
4612*4882a593Smuzhiyun 	FUNCTION("pwc_gpio3_clk", pwc_gpio3_clk_grp, &pwc_gpio3_clk_grp_mux),
4613*4882a593Smuzhiyun 	FUNCTION("pwc_io_on", pwc_io_on_grp, &pwc_io_on_grp_mux),
4614*4882a593Smuzhiyun 	FUNCTION("pwc_lowbatt_b_m0",
4615*4882a593Smuzhiyun 			pwc_lowbatt_b_grp0,
4616*4882a593Smuzhiyun 			&pwc_lowbatt_b_grp0_mux),
4617*4882a593Smuzhiyun 	FUNCTION("pwc_mem_on", pwc_mem_on_grp, &pwc_mem_on_grp_mux),
4618*4882a593Smuzhiyun 	FUNCTION("pwc_on_key_b_m0",
4619*4882a593Smuzhiyun 			pwc_on_key_b_grp0,
4620*4882a593Smuzhiyun 			&pwc_on_key_b_grp0_mux),
4621*4882a593Smuzhiyun 	FUNCTION("pwc_wakeup_src0",
4622*4882a593Smuzhiyun 			pwc_wakeup_src0_grp,
4623*4882a593Smuzhiyun 			&pwc_wakeup_src0_grp_mux),
4624*4882a593Smuzhiyun 	FUNCTION("pwc_wakeup_src1",
4625*4882a593Smuzhiyun 			pwc_wakeup_src1_grp,
4626*4882a593Smuzhiyun 			&pwc_wakeup_src1_grp_mux),
4627*4882a593Smuzhiyun 	FUNCTION("pwc_wakeup_src2",
4628*4882a593Smuzhiyun 			pwc_wakeup_src2_grp,
4629*4882a593Smuzhiyun 			&pwc_wakeup_src2_grp_mux),
4630*4882a593Smuzhiyun 	FUNCTION("pwc_wakeup_src3",
4631*4882a593Smuzhiyun 			pwc_wakeup_src3_grp,
4632*4882a593Smuzhiyun 			&pwc_wakeup_src3_grp_mux),
4633*4882a593Smuzhiyun 	FUNCTION("pw_cko0_m0", pw_cko0_grp0, &pw_cko0_grp0_mux),
4634*4882a593Smuzhiyun 	FUNCTION("pw_cko0_m1", pw_cko0_grp1, &pw_cko0_grp1_mux),
4635*4882a593Smuzhiyun 	FUNCTION("pw_cko0_m2", pw_cko0_grp2, &pw_cko0_grp2_mux),
4636*4882a593Smuzhiyun 	FUNCTION("pw_cko0_m3", pw_cko0_grp3, &pw_cko0_grp3_mux),
4637*4882a593Smuzhiyun 	FUNCTION("pw_cko1_m0", pw_cko1_grp0, &pw_cko1_grp0_mux),
4638*4882a593Smuzhiyun 	FUNCTION("pw_cko1_m1", pw_cko1_grp1, &pw_cko1_grp1_mux),
4639*4882a593Smuzhiyun 	FUNCTION("pw_cko1_m2", pw_cko1_grp2, &pw_cko1_grp2_mux),
4640*4882a593Smuzhiyun 	FUNCTION("pw_i2s01_clk_m0",
4641*4882a593Smuzhiyun 			pw_i2s01_clk_grp0,
4642*4882a593Smuzhiyun 			&pw_i2s01_clk_grp0_mux),
4643*4882a593Smuzhiyun 	FUNCTION("pw_i2s01_clk_m1",
4644*4882a593Smuzhiyun 			pw_i2s01_clk_grp1,
4645*4882a593Smuzhiyun 			&pw_i2s01_clk_grp1_mux),
4646*4882a593Smuzhiyun 	FUNCTION("pw_i2s01_clk_m2",
4647*4882a593Smuzhiyun 			pw_i2s01_clk_grp2,
4648*4882a593Smuzhiyun 			&pw_i2s01_clk_grp2_mux),
4649*4882a593Smuzhiyun 	FUNCTION("pw_pwm0_m0", pw_pwm0_grp0, &pw_pwm0_grp0_mux),
4650*4882a593Smuzhiyun 	FUNCTION("pw_pwm0_m1", pw_pwm0_grp1, &pw_pwm0_grp1_mux),
4651*4882a593Smuzhiyun 	FUNCTION("pw_pwm1_m0", pw_pwm1_grp0, &pw_pwm1_grp0_mux),
4652*4882a593Smuzhiyun 	FUNCTION("pw_pwm1_m1", pw_pwm1_grp1, &pw_pwm1_grp1_mux),
4653*4882a593Smuzhiyun 	FUNCTION("pw_pwm1_m2", pw_pwm1_grp2, &pw_pwm1_grp2_mux),
4654*4882a593Smuzhiyun 	FUNCTION("pw_pwm2_m0", pw_pwm2_grp0, &pw_pwm2_grp0_mux),
4655*4882a593Smuzhiyun 	FUNCTION("pw_pwm2_m1", pw_pwm2_grp1, &pw_pwm2_grp1_mux),
4656*4882a593Smuzhiyun 	FUNCTION("pw_pwm2_m2", pw_pwm2_grp2, &pw_pwm2_grp2_mux),
4657*4882a593Smuzhiyun 	FUNCTION("pw_pwm3_m0", pw_pwm3_grp0, &pw_pwm3_grp0_mux),
4658*4882a593Smuzhiyun 	FUNCTION("pw_pwm3_m1", pw_pwm3_grp1, &pw_pwm3_grp1_mux),
4659*4882a593Smuzhiyun 	FUNCTION("pw_pwm_cpu_vol_m0",
4660*4882a593Smuzhiyun 			pw_pwm_cpu_vol_grp0,
4661*4882a593Smuzhiyun 			&pw_pwm_cpu_vol_grp0_mux),
4662*4882a593Smuzhiyun 	FUNCTION("pw_pwm_cpu_vol_m1",
4663*4882a593Smuzhiyun 			pw_pwm_cpu_vol_grp1,
4664*4882a593Smuzhiyun 			&pw_pwm_cpu_vol_grp1_mux),
4665*4882a593Smuzhiyun 	FUNCTION("pw_pwm_cpu_vol_m2",
4666*4882a593Smuzhiyun 			pw_pwm_cpu_vol_grp2,
4667*4882a593Smuzhiyun 			&pw_pwm_cpu_vol_grp2_mux),
4668*4882a593Smuzhiyun 	FUNCTION("pw_backlight_m0",
4669*4882a593Smuzhiyun 			pw_backlight_grp0,
4670*4882a593Smuzhiyun 			&pw_backlight_grp0_mux),
4671*4882a593Smuzhiyun 	FUNCTION("pw_backlight_m1",
4672*4882a593Smuzhiyun 			pw_backlight_grp1,
4673*4882a593Smuzhiyun 			&pw_backlight_grp1_mux),
4674*4882a593Smuzhiyun 	FUNCTION("rg_eth_mac", rg_eth_mac_grp, &rg_eth_mac_grp_mux),
4675*4882a593Smuzhiyun 	FUNCTION("rg_gmac_phy_intr_n",
4676*4882a593Smuzhiyun 			rg_gmac_phy_intr_n_grp,
4677*4882a593Smuzhiyun 			&rg_gmac_phy_intr_n_grp_mux),
4678*4882a593Smuzhiyun 	FUNCTION("rg_rgmii_mac", rg_rgmii_mac_grp, &rg_rgmii_mac_grp_mux),
4679*4882a593Smuzhiyun 	FUNCTION("rg_rgmii_phy_ref_clk_m0",
4680*4882a593Smuzhiyun 			rg_rgmii_phy_ref_clk_grp0,
4681*4882a593Smuzhiyun 			&rg_rgmii_phy_ref_clk_grp0_mux),
4682*4882a593Smuzhiyun 	FUNCTION("rg_rgmii_phy_ref_clk_m1",
4683*4882a593Smuzhiyun 			rg_rgmii_phy_ref_clk_grp1,
4684*4882a593Smuzhiyun 			&rg_rgmii_phy_ref_clk_grp1_mux),
4685*4882a593Smuzhiyun 	FUNCTION("sd0", sd0_grp, &sd0_grp_mux),
4686*4882a593Smuzhiyun 	FUNCTION("sd0_4bit", sd0_4bit_grp, &sd0_4bit_grp_mux),
4687*4882a593Smuzhiyun 	FUNCTION("sd1", sd1_grp, &sd1_grp_mux),
4688*4882a593Smuzhiyun 	FUNCTION("sd1_4bit_m0", sd1_4bit_grp0, &sd1_4bit_grp0_mux),
4689*4882a593Smuzhiyun 	FUNCTION("sd1_4bit_m1", sd1_4bit_grp1, &sd1_4bit_grp1_mux),
4690*4882a593Smuzhiyun 	FUNCTION("sd2_basic", sd2_basic_grp, &sd2_basic_grp_mux),
4691*4882a593Smuzhiyun 	FUNCTION("sd2_cdb_m0", sd2_cdb_grp0, &sd2_cdb_grp0_mux),
4692*4882a593Smuzhiyun 	FUNCTION("sd2_cdb_m1", sd2_cdb_grp1, &sd2_cdb_grp1_mux),
4693*4882a593Smuzhiyun 	FUNCTION("sd2_wpb_m0", sd2_wpb_grp0, &sd2_wpb_grp0_mux),
4694*4882a593Smuzhiyun 	FUNCTION("sd2_wpb_m1", sd2_wpb_grp1, &sd2_wpb_grp1_mux),
4695*4882a593Smuzhiyun 	FUNCTION("sd3", sd3_9_grp, &sd3_9_grp_mux),
4696*4882a593Smuzhiyun 	FUNCTION("sd5", sd5_grp, &sd5_grp_mux),
4697*4882a593Smuzhiyun 	FUNCTION("sd6_m0", sd6_grp0, &sd6_grp0_mux),
4698*4882a593Smuzhiyun 	FUNCTION("sd6_m1", sd6_grp1, &sd6_grp1_mux),
4699*4882a593Smuzhiyun 	FUNCTION("sd9", sd3_9_grp, &sd3_9_grp_mux),
4700*4882a593Smuzhiyun 	FUNCTION("sp0_ext_ldo_on",
4701*4882a593Smuzhiyun 			sp0_ext_ldo_on_grp,
4702*4882a593Smuzhiyun 			&sp0_ext_ldo_on_grp_mux),
4703*4882a593Smuzhiyun 	FUNCTION("sp0_qspi", sp0_qspi_grp, &sp0_qspi_grp_mux),
4704*4882a593Smuzhiyun 	FUNCTION("sp1_spi", sp1_spi_grp, &sp1_spi_grp_mux),
4705*4882a593Smuzhiyun 	FUNCTION("tpiu_trace", tpiu_trace_grp, &tpiu_trace_grp_mux),
4706*4882a593Smuzhiyun 	FUNCTION("uart0", uart0_grp, &uart0_grp_mux),
4707*4882a593Smuzhiyun 	FUNCTION("uart0_nopause", uart0_nopause_grp, &uart0_nopause_grp_mux),
4708*4882a593Smuzhiyun 	FUNCTION("uart1", uart1_grp, &uart1_grp_mux),
4709*4882a593Smuzhiyun 	FUNCTION("uart2_cts_m0", uart2_cts_grp0, &uart2_cts_grp0_mux),
4710*4882a593Smuzhiyun 	FUNCTION("uart2_cts_m1", uart2_cts_grp1, &uart2_cts_grp1_mux),
4711*4882a593Smuzhiyun 	FUNCTION("uart2_rts_m0", uart2_rts_grp0, &uart2_rts_grp0_mux),
4712*4882a593Smuzhiyun 	FUNCTION("uart2_rts_m1", uart2_rts_grp1, &uart2_rts_grp1_mux),
4713*4882a593Smuzhiyun 	FUNCTION("uart2_rxd_m0", uart2_rxd_grp0, &uart2_rxd_grp0_mux),
4714*4882a593Smuzhiyun 	FUNCTION("uart2_rxd_m1", uart2_rxd_grp1, &uart2_rxd_grp1_mux),
4715*4882a593Smuzhiyun 	FUNCTION("uart2_rxd_m2", uart2_rxd_grp2, &uart2_rxd_grp2_mux),
4716*4882a593Smuzhiyun 	FUNCTION("uart2_txd_m0", uart2_txd_grp0, &uart2_txd_grp0_mux),
4717*4882a593Smuzhiyun 	FUNCTION("uart2_txd_m1", uart2_txd_grp1, &uart2_txd_grp1_mux),
4718*4882a593Smuzhiyun 	FUNCTION("uart2_txd_m2", uart2_txd_grp2, &uart2_txd_grp2_mux),
4719*4882a593Smuzhiyun 	FUNCTION("uart3_cts_m0", uart3_cts_grp0, &uart3_cts_grp0_mux),
4720*4882a593Smuzhiyun 	FUNCTION("uart3_cts_m1", uart3_cts_grp1, &uart3_cts_grp1_mux),
4721*4882a593Smuzhiyun 	FUNCTION("uart3_cts_m2", uart3_cts_grp2, &uart3_cts_grp2_mux),
4722*4882a593Smuzhiyun 	FUNCTION("uart3_rts_m0", uart3_rts_grp0, &uart3_rts_grp0_mux),
4723*4882a593Smuzhiyun 	FUNCTION("uart3_rts_m1", uart3_rts_grp1, &uart3_rts_grp1_mux),
4724*4882a593Smuzhiyun 	FUNCTION("uart3_rts_m2", uart3_rts_grp2, &uart3_rts_grp2_mux),
4725*4882a593Smuzhiyun 	FUNCTION("uart3_rxd_m0", uart3_rxd_grp0, &uart3_rxd_grp0_mux),
4726*4882a593Smuzhiyun 	FUNCTION("uart3_rxd_m1", uart3_rxd_grp1, &uart3_rxd_grp1_mux),
4727*4882a593Smuzhiyun 	FUNCTION("uart3_rxd_m2", uart3_rxd_grp2, &uart3_rxd_grp2_mux),
4728*4882a593Smuzhiyun 	FUNCTION("uart3_txd_m0", uart3_txd_grp0, &uart3_txd_grp0_mux),
4729*4882a593Smuzhiyun 	FUNCTION("uart3_txd_m1", uart3_txd_grp1, &uart3_txd_grp1_mux),
4730*4882a593Smuzhiyun 	FUNCTION("uart3_txd_m2", uart3_txd_grp2, &uart3_txd_grp2_mux),
4731*4882a593Smuzhiyun 	FUNCTION("uart4_basic", uart4_basic_grp, &uart4_basic_grp_mux),
4732*4882a593Smuzhiyun 	FUNCTION("uart4_cts_m0", uart4_cts_grp0, &uart4_cts_grp0_mux),
4733*4882a593Smuzhiyun 	FUNCTION("uart4_cts_m1", uart4_cts_grp1, &uart4_cts_grp1_mux),
4734*4882a593Smuzhiyun 	FUNCTION("uart4_cts_m2", uart4_cts_grp2, &uart4_cts_grp2_mux),
4735*4882a593Smuzhiyun 	FUNCTION("uart4_rts_m0", uart4_rts_grp0, &uart4_rts_grp0_mux),
4736*4882a593Smuzhiyun 	FUNCTION("uart4_rts_m1", uart4_rts_grp1, &uart4_rts_grp1_mux),
4737*4882a593Smuzhiyun 	FUNCTION("uart4_rts_m2", uart4_rts_grp2, &uart4_rts_grp2_mux),
4738*4882a593Smuzhiyun 	FUNCTION("usb0_drvvbus_m0",
4739*4882a593Smuzhiyun 			usb0_drvvbus_grp0,
4740*4882a593Smuzhiyun 			&usb0_drvvbus_grp0_mux),
4741*4882a593Smuzhiyun 	FUNCTION("usb0_drvvbus_m1",
4742*4882a593Smuzhiyun 			usb0_drvvbus_grp1,
4743*4882a593Smuzhiyun 			&usb0_drvvbus_grp1_mux),
4744*4882a593Smuzhiyun 	FUNCTION("usb1_drvvbus_m0",
4745*4882a593Smuzhiyun 			usb1_drvvbus_grp0,
4746*4882a593Smuzhiyun 			&usb1_drvvbus_grp0_mux),
4747*4882a593Smuzhiyun 	FUNCTION("usb1_drvvbus_m1",
4748*4882a593Smuzhiyun 			usb1_drvvbus_grp1,
4749*4882a593Smuzhiyun 			&usb1_drvvbus_grp1_mux),
4750*4882a593Smuzhiyun 	FUNCTION("visbus_dout", visbus_dout_grp, &visbus_dout_grp_mux),
4751*4882a593Smuzhiyun 	FUNCTION("vi_vip1", vi_vip1_grp, &vi_vip1_grp_mux),
4752*4882a593Smuzhiyun 	FUNCTION("vi_vip1_ext", vi_vip1_ext_grp, &vi_vip1_ext_grp_mux),
4753*4882a593Smuzhiyun 	FUNCTION("vi_vip1_low8bit",
4754*4882a593Smuzhiyun 			vi_vip1_low8bit_grp,
4755*4882a593Smuzhiyun 			&vi_vip1_low8bit_grp_mux),
4756*4882a593Smuzhiyun 	FUNCTION("vi_vip1_high8bit",
4757*4882a593Smuzhiyun 			vi_vip1_high8bit_grp,
4758*4882a593Smuzhiyun 			&vi_vip1_high8bit_grp_mux),
4759*4882a593Smuzhiyun };
4760*4882a593Smuzhiyun 
4761*4882a593Smuzhiyun static struct atlas7_pinctrl_data atlas7_ioc_data = {
4762*4882a593Smuzhiyun 	.pads = (struct pinctrl_pin_desc *)atlas7_ioc_pads,
4763*4882a593Smuzhiyun 	.pads_cnt = ARRAY_SIZE(atlas7_ioc_pads),
4764*4882a593Smuzhiyun 	.grps = (struct atlas7_pin_group *)altas7_pin_groups,
4765*4882a593Smuzhiyun 	.grps_cnt = ARRAY_SIZE(altas7_pin_groups),
4766*4882a593Smuzhiyun 	.funcs = (struct atlas7_pmx_func *)atlas7_pmx_functions,
4767*4882a593Smuzhiyun 	.funcs_cnt = ARRAY_SIZE(atlas7_pmx_functions),
4768*4882a593Smuzhiyun 	.confs = (struct atlas7_pad_config *)atlas7_ioc_pad_confs,
4769*4882a593Smuzhiyun 	.confs_cnt = ARRAY_SIZE(atlas7_ioc_pad_confs),
4770*4882a593Smuzhiyun };
4771*4882a593Smuzhiyun 
4772*4882a593Smuzhiyun /* Simple map data structure */
4773*4882a593Smuzhiyun struct map_data {
4774*4882a593Smuzhiyun 	u8 idx;
4775*4882a593Smuzhiyun 	u8 data;
4776*4882a593Smuzhiyun };
4777*4882a593Smuzhiyun 
4778*4882a593Smuzhiyun /**
4779*4882a593Smuzhiyun  * struct atlas7_pull_info - Atlas7 Pad pull info
4780*4882a593Smuzhiyun  * @pad_type:	The type of this Pad.
4781*4882a593Smuzhiyun  * @mask:	The mas value of this pin's pull bits.
4782*4882a593Smuzhiyun  * @v2s:	The map of pull register value to pull status.
4783*4882a593Smuzhiyun  * @s2v:	The map of pull status to pull register value.
4784*4882a593Smuzhiyun  */
4785*4882a593Smuzhiyun struct atlas7_pull_info {
4786*4882a593Smuzhiyun 	u8 pad_type;
4787*4882a593Smuzhiyun 	u8 mask;
4788*4882a593Smuzhiyun 	const struct map_data *v2s;
4789*4882a593Smuzhiyun 	const struct map_data *s2v;
4790*4882a593Smuzhiyun };
4791*4882a593Smuzhiyun 
4792*4882a593Smuzhiyun /* Pull Register value map to status */
4793*4882a593Smuzhiyun static const struct map_data p4we_pull_v2s[] = {
4794*4882a593Smuzhiyun 	{ P4WE_PULL_UP, PULL_UP },
4795*4882a593Smuzhiyun 	{ P4WE_HIGH_HYSTERESIS, HIGH_HYSTERESIS },
4796*4882a593Smuzhiyun 	{ P4WE_HIGH_Z, HIGH_Z },
4797*4882a593Smuzhiyun 	{ P4WE_PULL_DOWN, PULL_DOWN },
4798*4882a593Smuzhiyun };
4799*4882a593Smuzhiyun 
4800*4882a593Smuzhiyun static const struct map_data p16st_pull_v2s[] = {
4801*4882a593Smuzhiyun 	{ P16ST_PULL_UP, PULL_UP },
4802*4882a593Smuzhiyun 	{ PD, PULL_UNKNOWN },
4803*4882a593Smuzhiyun 	{ P16ST_HIGH_Z, HIGH_Z },
4804*4882a593Smuzhiyun 	{ P16ST_PULL_DOWN, PULL_DOWN },
4805*4882a593Smuzhiyun };
4806*4882a593Smuzhiyun 
4807*4882a593Smuzhiyun static const struct map_data pm31_pull_v2s[] = {
4808*4882a593Smuzhiyun 	{ PM31_PULL_DISABLED, PULL_DOWN },
4809*4882a593Smuzhiyun 	{ PM31_PULL_ENABLED, PULL_UP },
4810*4882a593Smuzhiyun };
4811*4882a593Smuzhiyun 
4812*4882a593Smuzhiyun static const struct map_data pangd_pull_v2s[] = {
4813*4882a593Smuzhiyun 	{ PANGD_PULL_UP, PULL_UP },
4814*4882a593Smuzhiyun 	{ PD, PULL_UNKNOWN },
4815*4882a593Smuzhiyun 	{ PANGD_HIGH_Z, HIGH_Z },
4816*4882a593Smuzhiyun 	{ PANGD_PULL_DOWN, PULL_DOWN },
4817*4882a593Smuzhiyun };
4818*4882a593Smuzhiyun 
4819*4882a593Smuzhiyun /* Pull status map to register value */
4820*4882a593Smuzhiyun static const struct map_data p4we_pull_s2v[] = {
4821*4882a593Smuzhiyun 	{ PULL_UP, P4WE_PULL_UP },
4822*4882a593Smuzhiyun 	{ HIGH_HYSTERESIS, P4WE_HIGH_HYSTERESIS },
4823*4882a593Smuzhiyun 	{ HIGH_Z, P4WE_HIGH_Z },
4824*4882a593Smuzhiyun 	{ PULL_DOWN, P4WE_PULL_DOWN },
4825*4882a593Smuzhiyun 	{ PULL_DISABLE, -1 },
4826*4882a593Smuzhiyun 	{ PULL_ENABLE, -1 },
4827*4882a593Smuzhiyun };
4828*4882a593Smuzhiyun 
4829*4882a593Smuzhiyun static const struct map_data p16st_pull_s2v[] = {
4830*4882a593Smuzhiyun 	{ PULL_UP, P16ST_PULL_UP },
4831*4882a593Smuzhiyun 	{ HIGH_HYSTERESIS, -1 },
4832*4882a593Smuzhiyun 	{ HIGH_Z, P16ST_HIGH_Z },
4833*4882a593Smuzhiyun 	{ PULL_DOWN, P16ST_PULL_DOWN },
4834*4882a593Smuzhiyun 	{ PULL_DISABLE, -1 },
4835*4882a593Smuzhiyun 	{ PULL_ENABLE, -1 },
4836*4882a593Smuzhiyun };
4837*4882a593Smuzhiyun 
4838*4882a593Smuzhiyun static const struct map_data pm31_pull_s2v[] = {
4839*4882a593Smuzhiyun 	{ PULL_UP, PM31_PULL_ENABLED },
4840*4882a593Smuzhiyun 	{ HIGH_HYSTERESIS, -1 },
4841*4882a593Smuzhiyun 	{ HIGH_Z, -1 },
4842*4882a593Smuzhiyun 	{ PULL_DOWN, PM31_PULL_DISABLED },
4843*4882a593Smuzhiyun 	{ PULL_DISABLE, -1 },
4844*4882a593Smuzhiyun 	{ PULL_ENABLE, -1 },
4845*4882a593Smuzhiyun };
4846*4882a593Smuzhiyun 
4847*4882a593Smuzhiyun static const struct map_data pangd_pull_s2v[] = {
4848*4882a593Smuzhiyun 	{ PULL_UP, PANGD_PULL_UP },
4849*4882a593Smuzhiyun 	{ HIGH_HYSTERESIS, -1 },
4850*4882a593Smuzhiyun 	{ HIGH_Z, PANGD_HIGH_Z },
4851*4882a593Smuzhiyun 	{ PULL_DOWN, PANGD_PULL_DOWN },
4852*4882a593Smuzhiyun 	{ PULL_DISABLE, -1 },
4853*4882a593Smuzhiyun 	{ PULL_ENABLE, -1 },
4854*4882a593Smuzhiyun };
4855*4882a593Smuzhiyun 
4856*4882a593Smuzhiyun static const struct atlas7_pull_info atlas7_pull_map[] = {
4857*4882a593Smuzhiyun 	{ PAD_T_4WE_PD, P4WE_PULL_MASK, p4we_pull_v2s, p4we_pull_s2v },
4858*4882a593Smuzhiyun 	{ PAD_T_4WE_PU, P4WE_PULL_MASK, p4we_pull_v2s, p4we_pull_s2v },
4859*4882a593Smuzhiyun 	{ PAD_T_16ST, P16ST_PULL_MASK, p16st_pull_v2s, p16st_pull_s2v },
4860*4882a593Smuzhiyun 	{ PAD_T_M31_0204_PD, PM31_PULL_MASK, pm31_pull_v2s, pm31_pull_s2v },
4861*4882a593Smuzhiyun 	{ PAD_T_M31_0204_PU, PM31_PULL_MASK, pm31_pull_v2s, pm31_pull_s2v },
4862*4882a593Smuzhiyun 	{ PAD_T_M31_0610_PD, PM31_PULL_MASK, pm31_pull_v2s, pm31_pull_s2v },
4863*4882a593Smuzhiyun 	{ PAD_T_M31_0610_PU, PM31_PULL_MASK, pm31_pull_v2s, pm31_pull_s2v },
4864*4882a593Smuzhiyun 	{ PAD_T_AD, PANGD_PULL_MASK, pangd_pull_v2s, pangd_pull_s2v },
4865*4882a593Smuzhiyun };
4866*4882a593Smuzhiyun 
4867*4882a593Smuzhiyun /**
4868*4882a593Smuzhiyun  * struct atlas7_ds_ma_info - Atlas7 Pad DriveStrength & currents info
4869*4882a593Smuzhiyun  * @ma:		The Drive Strength in current value .
4870*4882a593Smuzhiyun  * @ds_16st:	The correspond raw value of 16st pad.
4871*4882a593Smuzhiyun  * @ds_4we:	The correspond raw value of 4we pad.
4872*4882a593Smuzhiyun  * @ds_0204m31:	The correspond raw value of 0204m31 pad.
4873*4882a593Smuzhiyun  * @ds_0610m31:	The correspond raw value of 0610m31 pad.
4874*4882a593Smuzhiyun  */
4875*4882a593Smuzhiyun struct atlas7_ds_ma_info {
4876*4882a593Smuzhiyun 	u32 ma;
4877*4882a593Smuzhiyun 	u32 ds_16st;
4878*4882a593Smuzhiyun 	u32 ds_4we;
4879*4882a593Smuzhiyun 	u32 ds_0204m31;
4880*4882a593Smuzhiyun 	u32 ds_0610m31;
4881*4882a593Smuzhiyun };
4882*4882a593Smuzhiyun 
4883*4882a593Smuzhiyun static const struct atlas7_ds_ma_info atlas7_ma2ds_map[] = {
4884*4882a593Smuzhiyun 	{ 2, DS_16ST_0, DS_4WE_0, DS_M31_0, DS_NULL },
4885*4882a593Smuzhiyun 	{ 4, DS_16ST_1, DS_NULL, DS_M31_1, DS_NULL },
4886*4882a593Smuzhiyun 	{ 6, DS_16ST_2, DS_NULL, DS_NULL, DS_M31_0 },
4887*4882a593Smuzhiyun 	{ 8, DS_16ST_3, DS_4WE_1, DS_NULL, DS_NULL },
4888*4882a593Smuzhiyun 	{ 10, DS_16ST_4, DS_NULL, DS_NULL, DS_M31_1 },
4889*4882a593Smuzhiyun 	{ 12, DS_16ST_5, DS_NULL, DS_NULL, DS_NULL },
4890*4882a593Smuzhiyun 	{ 14, DS_16ST_6, DS_NULL, DS_NULL, DS_NULL },
4891*4882a593Smuzhiyun 	{ 16, DS_16ST_7, DS_4WE_2, DS_NULL, DS_NULL },
4892*4882a593Smuzhiyun 	{ 18, DS_16ST_8, DS_NULL, DS_NULL, DS_NULL },
4893*4882a593Smuzhiyun 	{ 20, DS_16ST_9, DS_NULL, DS_NULL, DS_NULL },
4894*4882a593Smuzhiyun 	{ 22, DS_16ST_10, DS_NULL, DS_NULL, DS_NULL },
4895*4882a593Smuzhiyun 	{ 24, DS_16ST_11, DS_NULL, DS_NULL, DS_NULL },
4896*4882a593Smuzhiyun 	{ 26, DS_16ST_12, DS_NULL, DS_NULL, DS_NULL },
4897*4882a593Smuzhiyun 	{ 28, DS_16ST_13, DS_4WE_3, DS_NULL, DS_NULL },
4898*4882a593Smuzhiyun 	{ 30, DS_16ST_14, DS_NULL, DS_NULL, DS_NULL },
4899*4882a593Smuzhiyun 	{ 32, DS_16ST_15, DS_NULL, DS_NULL, DS_NULL },
4900*4882a593Smuzhiyun };
4901*4882a593Smuzhiyun 
4902*4882a593Smuzhiyun /**
4903*4882a593Smuzhiyun  * struct atlas7_ds_info - Atlas7 Pad DriveStrength info
4904*4882a593Smuzhiyun  * @type:		The type of this Pad.
4905*4882a593Smuzhiyun  * @mask:		The mask value of this pin's pull bits.
4906*4882a593Smuzhiyun  * @imval:		The immediate value of drives trength register.
4907*4882a593Smuzhiyun  * @reserved:		Reserved space
4908*4882a593Smuzhiyun  */
4909*4882a593Smuzhiyun struct atlas7_ds_info {
4910*4882a593Smuzhiyun 	u8 type;
4911*4882a593Smuzhiyun 	u8 mask;
4912*4882a593Smuzhiyun 	u8 imval;
4913*4882a593Smuzhiyun 	u8 reserved;
4914*4882a593Smuzhiyun };
4915*4882a593Smuzhiyun 
4916*4882a593Smuzhiyun static const struct atlas7_ds_info atlas7_ds_map[] = {
4917*4882a593Smuzhiyun 	{ PAD_T_4WE_PD, DS_2BIT_MASK, DS_2BIT_IM_VAL },
4918*4882a593Smuzhiyun 	{ PAD_T_4WE_PU, DS_2BIT_MASK, DS_2BIT_IM_VAL },
4919*4882a593Smuzhiyun 	{ PAD_T_16ST, DS_4BIT_MASK, DS_4BIT_IM_VAL },
4920*4882a593Smuzhiyun 	{ PAD_T_M31_0204_PD, DS_1BIT_MASK, DS_1BIT_IM_VAL },
4921*4882a593Smuzhiyun 	{ PAD_T_M31_0204_PU, DS_1BIT_MASK, DS_1BIT_IM_VAL },
4922*4882a593Smuzhiyun 	{ PAD_T_M31_0610_PD, DS_1BIT_MASK, DS_1BIT_IM_VAL },
4923*4882a593Smuzhiyun 	{ PAD_T_M31_0610_PU, DS_1BIT_MASK, DS_1BIT_IM_VAL },
4924*4882a593Smuzhiyun 	{ PAD_T_AD, DS_NULL, DS_NULL },
4925*4882a593Smuzhiyun };
4926*4882a593Smuzhiyun 
atlas7_pin_to_bank(u32 pin)4927*4882a593Smuzhiyun static inline u32 atlas7_pin_to_bank(u32 pin)
4928*4882a593Smuzhiyun {
4929*4882a593Smuzhiyun 	return (pin >= ATLAS7_PINCTRL_BANK_0_PINS) ? 1 : 0;
4930*4882a593Smuzhiyun }
4931*4882a593Smuzhiyun 
atlas7_pmx_get_funcs_count(struct pinctrl_dev * pctldev)4932*4882a593Smuzhiyun static int atlas7_pmx_get_funcs_count(struct pinctrl_dev *pctldev)
4933*4882a593Smuzhiyun {
4934*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
4935*4882a593Smuzhiyun 
4936*4882a593Smuzhiyun 	return pmx->pctl_data->funcs_cnt;
4937*4882a593Smuzhiyun }
4938*4882a593Smuzhiyun 
atlas7_pmx_get_func_name(struct pinctrl_dev * pctldev,u32 selector)4939*4882a593Smuzhiyun static const char *atlas7_pmx_get_func_name(struct pinctrl_dev *pctldev,
4940*4882a593Smuzhiyun 					u32 selector)
4941*4882a593Smuzhiyun {
4942*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
4943*4882a593Smuzhiyun 
4944*4882a593Smuzhiyun 	return pmx->pctl_data->funcs[selector].name;
4945*4882a593Smuzhiyun }
4946*4882a593Smuzhiyun 
atlas7_pmx_get_func_groups(struct pinctrl_dev * pctldev,u32 selector,const char * const ** groups,u32 * const num_groups)4947*4882a593Smuzhiyun static int atlas7_pmx_get_func_groups(struct pinctrl_dev *pctldev,
4948*4882a593Smuzhiyun 		u32 selector, const char * const **groups,
4949*4882a593Smuzhiyun 		u32 * const num_groups)
4950*4882a593Smuzhiyun {
4951*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
4952*4882a593Smuzhiyun 
4953*4882a593Smuzhiyun 	*groups = pmx->pctl_data->funcs[selector].groups;
4954*4882a593Smuzhiyun 	*num_groups = pmx->pctl_data->funcs[selector].num_groups;
4955*4882a593Smuzhiyun 
4956*4882a593Smuzhiyun 	return 0;
4957*4882a593Smuzhiyun }
4958*4882a593Smuzhiyun 
__atlas7_pmx_pin_input_disable_set(struct atlas7_pmx * pmx,const struct atlas7_pad_mux * mux)4959*4882a593Smuzhiyun static void __atlas7_pmx_pin_input_disable_set(struct atlas7_pmx *pmx,
4960*4882a593Smuzhiyun 				const struct atlas7_pad_mux *mux)
4961*4882a593Smuzhiyun {
4962*4882a593Smuzhiyun 	/* Set Input Disable to avoid input glitches
4963*4882a593Smuzhiyun 	 *
4964*4882a593Smuzhiyun 	 * All Input-Disable Control registers are located on IOCRTC.
4965*4882a593Smuzhiyun 	 * So the regs bank is always 0.
4966*4882a593Smuzhiyun 	 *
4967*4882a593Smuzhiyun 	 */
4968*4882a593Smuzhiyun 	if (mux->dinput_reg && mux->dinput_val_reg) {
4969*4882a593Smuzhiyun 		writel(DI_MASK << mux->dinput_bit,
4970*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg));
4971*4882a593Smuzhiyun 		writel(DI_DISABLE << mux->dinput_bit,
4972*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + mux->dinput_reg);
4973*4882a593Smuzhiyun 
4974*4882a593Smuzhiyun 
4975*4882a593Smuzhiyun 		writel(DIV_MASK << mux->dinput_val_bit,
4976*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg));
4977*4882a593Smuzhiyun 		writel(DIV_DISABLE << mux->dinput_val_bit,
4978*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + mux->dinput_val_reg);
4979*4882a593Smuzhiyun 	}
4980*4882a593Smuzhiyun }
4981*4882a593Smuzhiyun 
__atlas7_pmx_pin_input_disable_clr(struct atlas7_pmx * pmx,const struct atlas7_pad_mux * mux)4982*4882a593Smuzhiyun static void __atlas7_pmx_pin_input_disable_clr(struct atlas7_pmx *pmx,
4983*4882a593Smuzhiyun 				const struct atlas7_pad_mux *mux)
4984*4882a593Smuzhiyun {
4985*4882a593Smuzhiyun 	/* Clear Input Disable to avoid input glitches */
4986*4882a593Smuzhiyun 	if (mux->dinput_reg && mux->dinput_val_reg) {
4987*4882a593Smuzhiyun 		writel(DI_MASK << mux->dinput_bit,
4988*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg));
4989*4882a593Smuzhiyun 		writel(DI_ENABLE << mux->dinput_bit,
4990*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + mux->dinput_reg);
4991*4882a593Smuzhiyun 
4992*4882a593Smuzhiyun 		writel(DIV_MASK << mux->dinput_val_bit,
4993*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg));
4994*4882a593Smuzhiyun 		writel(DIV_ENABLE << mux->dinput_val_bit,
4995*4882a593Smuzhiyun 			pmx->regs[BANK_DS] + mux->dinput_val_reg);
4996*4882a593Smuzhiyun 	}
4997*4882a593Smuzhiyun }
4998*4882a593Smuzhiyun 
__atlas7_pmx_pin_ad_sel(struct atlas7_pmx * pmx,struct atlas7_pad_config * conf,u32 bank,u32 ad_sel)4999*4882a593Smuzhiyun static int __atlas7_pmx_pin_ad_sel(struct atlas7_pmx *pmx,
5000*4882a593Smuzhiyun 			struct atlas7_pad_config *conf,
5001*4882a593Smuzhiyun 			u32 bank, u32 ad_sel)
5002*4882a593Smuzhiyun {
5003*4882a593Smuzhiyun 	unsigned long regv;
5004*4882a593Smuzhiyun 
5005*4882a593Smuzhiyun 	/* Write to clear register to clear A/D selector */
5006*4882a593Smuzhiyun 	writel(ANA_CLEAR_MASK << conf->ad_ctrl_bit,
5007*4882a593Smuzhiyun 		pmx->regs[bank] + CLR_REG(conf->ad_ctrl_reg));
5008*4882a593Smuzhiyun 
5009*4882a593Smuzhiyun 	/* Set target pad A/D selector */
5010*4882a593Smuzhiyun 	regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg);
5011*4882a593Smuzhiyun 	regv &= ~(ANA_CLEAR_MASK << conf->ad_ctrl_bit);
5012*4882a593Smuzhiyun 	writel(regv | (ad_sel << conf->ad_ctrl_bit),
5013*4882a593Smuzhiyun 			pmx->regs[bank] + conf->ad_ctrl_reg);
5014*4882a593Smuzhiyun 
5015*4882a593Smuzhiyun 	regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg);
5016*4882a593Smuzhiyun 	pr_debug("bank:%d reg:0x%04x val:0x%08lx\n",
5017*4882a593Smuzhiyun 			bank, conf->ad_ctrl_reg, regv);
5018*4882a593Smuzhiyun 	return 0;
5019*4882a593Smuzhiyun }
5020*4882a593Smuzhiyun 
__atlas7_pmx_pin_analog_enable(struct atlas7_pmx * pmx,struct atlas7_pad_config * conf,u32 bank)5021*4882a593Smuzhiyun static int  __atlas7_pmx_pin_analog_enable(struct atlas7_pmx *pmx,
5022*4882a593Smuzhiyun 			struct atlas7_pad_config *conf, u32 bank)
5023*4882a593Smuzhiyun {
5024*4882a593Smuzhiyun 	/* Only PAD_T_AD pins can change between Analogue&Digital */
5025*4882a593Smuzhiyun 	if (conf->type != PAD_T_AD)
5026*4882a593Smuzhiyun 		return -EINVAL;
5027*4882a593Smuzhiyun 
5028*4882a593Smuzhiyun 	return __atlas7_pmx_pin_ad_sel(pmx, conf, bank, 0);
5029*4882a593Smuzhiyun }
5030*4882a593Smuzhiyun 
__atlas7_pmx_pin_digital_enable(struct atlas7_pmx * pmx,struct atlas7_pad_config * conf,u32 bank)5031*4882a593Smuzhiyun static int __atlas7_pmx_pin_digital_enable(struct atlas7_pmx *pmx,
5032*4882a593Smuzhiyun 			struct atlas7_pad_config *conf, u32 bank)
5033*4882a593Smuzhiyun {
5034*4882a593Smuzhiyun 	/* Other type pads are always digital */
5035*4882a593Smuzhiyun 	if (conf->type != PAD_T_AD)
5036*4882a593Smuzhiyun 		return 0;
5037*4882a593Smuzhiyun 
5038*4882a593Smuzhiyun 	return __atlas7_pmx_pin_ad_sel(pmx, conf, bank, 1);
5039*4882a593Smuzhiyun }
5040*4882a593Smuzhiyun 
__atlas7_pmx_pin_enable(struct atlas7_pmx * pmx,u32 pin,u32 func)5041*4882a593Smuzhiyun static int __atlas7_pmx_pin_enable(struct atlas7_pmx *pmx,
5042*4882a593Smuzhiyun 				u32 pin, u32 func)
5043*4882a593Smuzhiyun {
5044*4882a593Smuzhiyun 	struct atlas7_pad_config *conf;
5045*4882a593Smuzhiyun 	u32 bank;
5046*4882a593Smuzhiyun 	int ret;
5047*4882a593Smuzhiyun 	unsigned long regv;
5048*4882a593Smuzhiyun 
5049*4882a593Smuzhiyun 	pr_debug("PMX DUMP ### pin#%d func:%d #### START >>>\n",
5050*4882a593Smuzhiyun 			pin, func);
5051*4882a593Smuzhiyun 
5052*4882a593Smuzhiyun 	/* Get this Pad's descriptor from PINCTRL */
5053*4882a593Smuzhiyun 	conf = &pmx->pctl_data->confs[pin];
5054*4882a593Smuzhiyun 	bank = atlas7_pin_to_bank(pin);
5055*4882a593Smuzhiyun 
5056*4882a593Smuzhiyun 	/* Just enable the analog function of this pad */
5057*4882a593Smuzhiyun 	if (FUNC_ANALOGUE == func) {
5058*4882a593Smuzhiyun 		ret = __atlas7_pmx_pin_analog_enable(pmx, conf, bank);
5059*4882a593Smuzhiyun 		if (ret)
5060*4882a593Smuzhiyun 			dev_err(pmx->dev,
5061*4882a593Smuzhiyun 				"Convert pad#%d to analog failed, ret=%d\n",
5062*4882a593Smuzhiyun 				pin, ret);
5063*4882a593Smuzhiyun 		return ret;
5064*4882a593Smuzhiyun 	}
5065*4882a593Smuzhiyun 
5066*4882a593Smuzhiyun 	/* Set Pads from analog to digital */
5067*4882a593Smuzhiyun 	ret = __atlas7_pmx_pin_digital_enable(pmx, conf, bank);
5068*4882a593Smuzhiyun 	if (ret) {
5069*4882a593Smuzhiyun 		dev_err(pmx->dev,
5070*4882a593Smuzhiyun 			"Convert pad#%d to digital failed, ret=%d\n",
5071*4882a593Smuzhiyun 			pin, ret);
5072*4882a593Smuzhiyun 		return ret;
5073*4882a593Smuzhiyun 	}
5074*4882a593Smuzhiyun 
5075*4882a593Smuzhiyun 	/* Write to clear register to clear current function */
5076*4882a593Smuzhiyun 	writel(FUNC_CLEAR_MASK << conf->mux_bit,
5077*4882a593Smuzhiyun 		pmx->regs[bank] + CLR_REG(conf->mux_reg));
5078*4882a593Smuzhiyun 
5079*4882a593Smuzhiyun 	/* Set target pad mux function */
5080*4882a593Smuzhiyun 	regv = readl(pmx->regs[bank] + conf->mux_reg);
5081*4882a593Smuzhiyun 	regv &= ~(FUNC_CLEAR_MASK << conf->mux_bit);
5082*4882a593Smuzhiyun 	writel(regv | (func << conf->mux_bit),
5083*4882a593Smuzhiyun 			pmx->regs[bank] + conf->mux_reg);
5084*4882a593Smuzhiyun 
5085*4882a593Smuzhiyun 	regv = readl(pmx->regs[bank] + conf->mux_reg);
5086*4882a593Smuzhiyun 	pr_debug("bank:%d reg:0x%04x val:0x%08lx\n",
5087*4882a593Smuzhiyun 		bank, conf->mux_reg, regv);
5088*4882a593Smuzhiyun 
5089*4882a593Smuzhiyun 	return 0;
5090*4882a593Smuzhiyun }
5091*4882a593Smuzhiyun 
atlas7_pmx_set_mux(struct pinctrl_dev * pctldev,u32 func_selector,u32 group_selector)5092*4882a593Smuzhiyun static int atlas7_pmx_set_mux(struct pinctrl_dev *pctldev,
5093*4882a593Smuzhiyun 			u32 func_selector, u32 group_selector)
5094*4882a593Smuzhiyun {
5095*4882a593Smuzhiyun 	int idx, ret;
5096*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5097*4882a593Smuzhiyun 	struct atlas7_pmx_func *pmx_func;
5098*4882a593Smuzhiyun 	struct atlas7_pin_group *pin_grp;
5099*4882a593Smuzhiyun 	const struct atlas7_grp_mux *grp_mux;
5100*4882a593Smuzhiyun 	const struct atlas7_pad_mux *mux;
5101*4882a593Smuzhiyun 
5102*4882a593Smuzhiyun 	pmx_func = &pmx->pctl_data->funcs[func_selector];
5103*4882a593Smuzhiyun 	pin_grp = &pmx->pctl_data->grps[group_selector];
5104*4882a593Smuzhiyun 
5105*4882a593Smuzhiyun 	pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### START >>>\n",
5106*4882a593Smuzhiyun 			pmx_func->name, pin_grp->name);
5107*4882a593Smuzhiyun 
5108*4882a593Smuzhiyun 	/* the sd3 and sd9 pin select by SYS2PCI_SDIO9SEL register */
5109*4882a593Smuzhiyun 	if (pin_grp->pins == (unsigned int *)&sd3_9_pins) {
5110*4882a593Smuzhiyun 		if (!strcmp(pmx_func->name, "sd9"))
5111*4882a593Smuzhiyun 			writel(1, pmx->sys2pci_base + SYS2PCI_SDIO9SEL);
5112*4882a593Smuzhiyun 		else
5113*4882a593Smuzhiyun 			writel(0, pmx->sys2pci_base + SYS2PCI_SDIO9SEL);
5114*4882a593Smuzhiyun 	}
5115*4882a593Smuzhiyun 
5116*4882a593Smuzhiyun 	grp_mux = pmx_func->grpmux;
5117*4882a593Smuzhiyun 
5118*4882a593Smuzhiyun 	for (idx = 0; idx < grp_mux->pad_mux_count; idx++) {
5119*4882a593Smuzhiyun 		mux = &grp_mux->pad_mux_list[idx];
5120*4882a593Smuzhiyun 		__atlas7_pmx_pin_input_disable_set(pmx, mux);
5121*4882a593Smuzhiyun 		ret = __atlas7_pmx_pin_enable(pmx, mux->pin, mux->func);
5122*4882a593Smuzhiyun 		if (ret) {
5123*4882a593Smuzhiyun 			dev_err(pmx->dev,
5124*4882a593Smuzhiyun 				"FUNC:%s GRP:%s PIN#%d.%d failed, ret=%d\n",
5125*4882a593Smuzhiyun 				pmx_func->name, pin_grp->name,
5126*4882a593Smuzhiyun 				mux->pin, mux->func, ret);
5127*4882a593Smuzhiyun 			BUG_ON(1);
5128*4882a593Smuzhiyun 		}
5129*4882a593Smuzhiyun 		__atlas7_pmx_pin_input_disable_clr(pmx, mux);
5130*4882a593Smuzhiyun 	}
5131*4882a593Smuzhiyun 	pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### END <<<\n",
5132*4882a593Smuzhiyun 			pmx_func->name, pin_grp->name);
5133*4882a593Smuzhiyun 
5134*4882a593Smuzhiyun 	return 0;
5135*4882a593Smuzhiyun }
5136*4882a593Smuzhiyun 
convert_current_to_drive_strength(u32 type,u32 ma)5137*4882a593Smuzhiyun static u32 convert_current_to_drive_strength(u32 type, u32 ma)
5138*4882a593Smuzhiyun {
5139*4882a593Smuzhiyun 	int idx;
5140*4882a593Smuzhiyun 
5141*4882a593Smuzhiyun 	for (idx = 0; idx < ARRAY_SIZE(atlas7_ma2ds_map); idx++) {
5142*4882a593Smuzhiyun 		if (atlas7_ma2ds_map[idx].ma != ma)
5143*4882a593Smuzhiyun 			continue;
5144*4882a593Smuzhiyun 
5145*4882a593Smuzhiyun 		if (type == PAD_T_4WE_PD || type == PAD_T_4WE_PU)
5146*4882a593Smuzhiyun 			return atlas7_ma2ds_map[idx].ds_4we;
5147*4882a593Smuzhiyun 		else if (type == PAD_T_16ST)
5148*4882a593Smuzhiyun 			return atlas7_ma2ds_map[idx].ds_16st;
5149*4882a593Smuzhiyun 		else if (type == PAD_T_M31_0204_PD || type == PAD_T_M31_0204_PU)
5150*4882a593Smuzhiyun 			return atlas7_ma2ds_map[idx].ds_0204m31;
5151*4882a593Smuzhiyun 		else if (type == PAD_T_M31_0610_PD || type == PAD_T_M31_0610_PU)
5152*4882a593Smuzhiyun 			return atlas7_ma2ds_map[idx].ds_0610m31;
5153*4882a593Smuzhiyun 	}
5154*4882a593Smuzhiyun 
5155*4882a593Smuzhiyun 	return DS_NULL;
5156*4882a593Smuzhiyun }
5157*4882a593Smuzhiyun 
altas7_pinctrl_set_pull_sel(struct pinctrl_dev * pctldev,u32 pin,u32 sel)5158*4882a593Smuzhiyun static int altas7_pinctrl_set_pull_sel(struct pinctrl_dev *pctldev,
5159*4882a593Smuzhiyun 					u32 pin, u32 sel)
5160*4882a593Smuzhiyun {
5161*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5162*4882a593Smuzhiyun 	struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin];
5163*4882a593Smuzhiyun 	const struct atlas7_pull_info *pull_info;
5164*4882a593Smuzhiyun 	u32 bank;
5165*4882a593Smuzhiyun 	unsigned long regv;
5166*4882a593Smuzhiyun 	void __iomem *pull_sel_reg;
5167*4882a593Smuzhiyun 
5168*4882a593Smuzhiyun 	bank = atlas7_pin_to_bank(pin);
5169*4882a593Smuzhiyun 	pull_info = &atlas7_pull_map[conf->type];
5170*4882a593Smuzhiyun 	pull_sel_reg = pmx->regs[bank] + conf->pupd_reg;
5171*4882a593Smuzhiyun 
5172*4882a593Smuzhiyun 	/* Retrieve correspond register value from table by sel */
5173*4882a593Smuzhiyun 	regv = pull_info->s2v[sel].data & pull_info->mask;
5174*4882a593Smuzhiyun 
5175*4882a593Smuzhiyun 	/* Clear & Set new value to pull register */
5176*4882a593Smuzhiyun 	writel(pull_info->mask << conf->pupd_bit, CLR_REG(pull_sel_reg));
5177*4882a593Smuzhiyun 	writel(regv << conf->pupd_bit, pull_sel_reg);
5178*4882a593Smuzhiyun 
5179*4882a593Smuzhiyun 	pr_debug("PIN_CFG ### SET PIN#%d PULL SELECTOR:%d == OK ####\n",
5180*4882a593Smuzhiyun 		pin, sel);
5181*4882a593Smuzhiyun 	return 0;
5182*4882a593Smuzhiyun }
5183*4882a593Smuzhiyun 
__altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev * pctldev,u32 pin,u32 sel)5184*4882a593Smuzhiyun static int __altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev *pctldev,
5185*4882a593Smuzhiyun 						u32 pin, u32 sel)
5186*4882a593Smuzhiyun {
5187*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5188*4882a593Smuzhiyun 	struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin];
5189*4882a593Smuzhiyun 	const struct atlas7_ds_info *ds_info;
5190*4882a593Smuzhiyun 	u32 bank;
5191*4882a593Smuzhiyun 	void __iomem *ds_sel_reg;
5192*4882a593Smuzhiyun 
5193*4882a593Smuzhiyun 	ds_info = &atlas7_ds_map[conf->type];
5194*4882a593Smuzhiyun 	if (sel & (~(ds_info->mask)))
5195*4882a593Smuzhiyun 		goto unsupport;
5196*4882a593Smuzhiyun 
5197*4882a593Smuzhiyun 	bank = atlas7_pin_to_bank(pin);
5198*4882a593Smuzhiyun 	ds_sel_reg = pmx->regs[bank] + conf->drvstr_reg;
5199*4882a593Smuzhiyun 
5200*4882a593Smuzhiyun 	writel(ds_info->imval << conf->drvstr_bit, CLR_REG(ds_sel_reg));
5201*4882a593Smuzhiyun 	writel(sel << conf->drvstr_bit, ds_sel_reg);
5202*4882a593Smuzhiyun 
5203*4882a593Smuzhiyun 	return 0;
5204*4882a593Smuzhiyun 
5205*4882a593Smuzhiyun unsupport:
5206*4882a593Smuzhiyun 	pr_err("Pad#%d type[%d] doesn't support ds code[%d]!\n",
5207*4882a593Smuzhiyun 		pin, conf->type, sel);
5208*4882a593Smuzhiyun 	return -ENOTSUPP;
5209*4882a593Smuzhiyun }
5210*4882a593Smuzhiyun 
altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev * pctldev,u32 pin,u32 ma)5211*4882a593Smuzhiyun static int altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev *pctldev,
5212*4882a593Smuzhiyun 						u32 pin, u32 ma)
5213*4882a593Smuzhiyun {
5214*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5215*4882a593Smuzhiyun 	struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin];
5216*4882a593Smuzhiyun 	u32 type = conf->type;
5217*4882a593Smuzhiyun 	u32 sel;
5218*4882a593Smuzhiyun 	int ret;
5219*4882a593Smuzhiyun 
5220*4882a593Smuzhiyun 	sel = convert_current_to_drive_strength(conf->type, ma);
5221*4882a593Smuzhiyun 	if (DS_NULL == sel) {
5222*4882a593Smuzhiyun 		pr_err("Pad#%d type[%d] doesn't support ds current[%d]!\n",
5223*4882a593Smuzhiyun 		pin, type, ma);
5224*4882a593Smuzhiyun 		return -ENOTSUPP;
5225*4882a593Smuzhiyun 	}
5226*4882a593Smuzhiyun 
5227*4882a593Smuzhiyun 	ret =  __altas7_pinctrl_set_drive_strength_sel(pctldev,
5228*4882a593Smuzhiyun 						pin, sel);
5229*4882a593Smuzhiyun 	pr_debug("PIN_CFG ### SET PIN#%d DS:%d MA:%d == %s ####\n",
5230*4882a593Smuzhiyun 		pin, sel, ma, ret?"FAILED":"OK");
5231*4882a593Smuzhiyun 	return ret;
5232*4882a593Smuzhiyun }
5233*4882a593Smuzhiyun 
atlas7_pmx_gpio_request_enable(struct pinctrl_dev * pctldev,struct pinctrl_gpio_range * range,u32 pin)5234*4882a593Smuzhiyun static int atlas7_pmx_gpio_request_enable(struct pinctrl_dev *pctldev,
5235*4882a593Smuzhiyun 		struct pinctrl_gpio_range *range, u32 pin)
5236*4882a593Smuzhiyun {
5237*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5238*4882a593Smuzhiyun 	u32 idx;
5239*4882a593Smuzhiyun 
5240*4882a593Smuzhiyun 	dev_dbg(pmx->dev,
5241*4882a593Smuzhiyun 		"atlas7_pmx_gpio_request_enable: pin=%d\n", pin);
5242*4882a593Smuzhiyun 	for (idx = 0; idx < range->npins; idx++) {
5243*4882a593Smuzhiyun 		if (pin == range->pins[idx])
5244*4882a593Smuzhiyun 			break;
5245*4882a593Smuzhiyun 	}
5246*4882a593Smuzhiyun 
5247*4882a593Smuzhiyun 	if (idx >= range->npins) {
5248*4882a593Smuzhiyun 		dev_err(pmx->dev,
5249*4882a593Smuzhiyun 			"The pin#%d could not be requested as GPIO!!\n",
5250*4882a593Smuzhiyun 			pin);
5251*4882a593Smuzhiyun 		return -EPERM;
5252*4882a593Smuzhiyun 	}
5253*4882a593Smuzhiyun 
5254*4882a593Smuzhiyun 	__atlas7_pmx_pin_enable(pmx, pin, FUNC_GPIO);
5255*4882a593Smuzhiyun 
5256*4882a593Smuzhiyun 	return 0;
5257*4882a593Smuzhiyun }
5258*4882a593Smuzhiyun 
5259*4882a593Smuzhiyun static const struct pinmux_ops atlas7_pinmux_ops = {
5260*4882a593Smuzhiyun 	.get_functions_count = atlas7_pmx_get_funcs_count,
5261*4882a593Smuzhiyun 	.get_function_name = atlas7_pmx_get_func_name,
5262*4882a593Smuzhiyun 	.get_function_groups = atlas7_pmx_get_func_groups,
5263*4882a593Smuzhiyun 	.set_mux = atlas7_pmx_set_mux,
5264*4882a593Smuzhiyun 	.gpio_request_enable = atlas7_pmx_gpio_request_enable,
5265*4882a593Smuzhiyun };
5266*4882a593Smuzhiyun 
atlas7_pinctrl_get_groups_count(struct pinctrl_dev * pctldev)5267*4882a593Smuzhiyun static int atlas7_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
5268*4882a593Smuzhiyun {
5269*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5270*4882a593Smuzhiyun 
5271*4882a593Smuzhiyun 	return pmx->pctl_data->grps_cnt;
5272*4882a593Smuzhiyun }
5273*4882a593Smuzhiyun 
atlas7_pinctrl_get_group_name(struct pinctrl_dev * pctldev,u32 group)5274*4882a593Smuzhiyun static const char *atlas7_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
5275*4882a593Smuzhiyun 						u32 group)
5276*4882a593Smuzhiyun {
5277*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5278*4882a593Smuzhiyun 
5279*4882a593Smuzhiyun 	return pmx->pctl_data->grps[group].name;
5280*4882a593Smuzhiyun }
5281*4882a593Smuzhiyun 
atlas7_pinctrl_get_group_pins(struct pinctrl_dev * pctldev,u32 group,const u32 ** pins,u32 * num_pins)5282*4882a593Smuzhiyun static int atlas7_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
5283*4882a593Smuzhiyun 		u32 group, const u32 **pins, u32 *num_pins)
5284*4882a593Smuzhiyun {
5285*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev);
5286*4882a593Smuzhiyun 
5287*4882a593Smuzhiyun 	*num_pins = pmx->pctl_data->grps[group].num_pins;
5288*4882a593Smuzhiyun 	*pins = pmx->pctl_data->grps[group].pins;
5289*4882a593Smuzhiyun 
5290*4882a593Smuzhiyun 	return 0;
5291*4882a593Smuzhiyun }
5292*4882a593Smuzhiyun 
atlas7_pinctrl_dt_node_to_map(struct pinctrl_dev * pctldev,struct device_node * np_config,struct pinctrl_map ** map,u32 * num_maps)5293*4882a593Smuzhiyun static int atlas7_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
5294*4882a593Smuzhiyun 					struct device_node *np_config,
5295*4882a593Smuzhiyun 					struct pinctrl_map **map,
5296*4882a593Smuzhiyun 					u32 *num_maps)
5297*4882a593Smuzhiyun {
5298*4882a593Smuzhiyun 	return pinconf_generic_dt_node_to_map(pctldev, np_config, map,
5299*4882a593Smuzhiyun 				num_maps, PIN_MAP_TYPE_INVALID);
5300*4882a593Smuzhiyun }
5301*4882a593Smuzhiyun 
atlas7_pinctrl_dt_free_map(struct pinctrl_dev * pctldev,struct pinctrl_map * map,u32 num_maps)5302*4882a593Smuzhiyun static void atlas7_pinctrl_dt_free_map(struct pinctrl_dev *pctldev,
5303*4882a593Smuzhiyun 		struct pinctrl_map *map, u32 num_maps)
5304*4882a593Smuzhiyun {
5305*4882a593Smuzhiyun 	kfree(map);
5306*4882a593Smuzhiyun }
5307*4882a593Smuzhiyun 
5308*4882a593Smuzhiyun static const struct pinctrl_ops atlas7_pinctrl_ops = {
5309*4882a593Smuzhiyun 	.get_groups_count = atlas7_pinctrl_get_groups_count,
5310*4882a593Smuzhiyun 	.get_group_name = atlas7_pinctrl_get_group_name,
5311*4882a593Smuzhiyun 	.get_group_pins = atlas7_pinctrl_get_group_pins,
5312*4882a593Smuzhiyun 	.dt_node_to_map = atlas7_pinctrl_dt_node_to_map,
5313*4882a593Smuzhiyun 	.dt_free_map = atlas7_pinctrl_dt_free_map,
5314*4882a593Smuzhiyun };
5315*4882a593Smuzhiyun 
atlas7_pin_config_set(struct pinctrl_dev * pctldev,unsigned pin,unsigned long * configs,unsigned num_configs)5316*4882a593Smuzhiyun static int atlas7_pin_config_set(struct pinctrl_dev *pctldev,
5317*4882a593Smuzhiyun 				unsigned pin, unsigned long *configs,
5318*4882a593Smuzhiyun 				unsigned num_configs)
5319*4882a593Smuzhiyun {
5320*4882a593Smuzhiyun 	u16 param;
5321*4882a593Smuzhiyun 	u32 arg;
5322*4882a593Smuzhiyun 	int idx, err;
5323*4882a593Smuzhiyun 
5324*4882a593Smuzhiyun 	for (idx = 0; idx < num_configs; idx++) {
5325*4882a593Smuzhiyun 		param = pinconf_to_config_param(configs[idx]);
5326*4882a593Smuzhiyun 		arg = pinconf_to_config_argument(configs[idx]);
5327*4882a593Smuzhiyun 
5328*4882a593Smuzhiyun 		pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d >>>>>\n",
5329*4882a593Smuzhiyun 			pin, atlas7_ioc_pads[pin].name, param, arg);
5330*4882a593Smuzhiyun 		switch (param) {
5331*4882a593Smuzhiyun 		case PIN_CONFIG_BIAS_PULL_UP:
5332*4882a593Smuzhiyun 			err = altas7_pinctrl_set_pull_sel(pctldev,
5333*4882a593Smuzhiyun 							pin, PULL_UP);
5334*4882a593Smuzhiyun 			if (err)
5335*4882a593Smuzhiyun 				return err;
5336*4882a593Smuzhiyun 			break;
5337*4882a593Smuzhiyun 
5338*4882a593Smuzhiyun 		case PIN_CONFIG_BIAS_PULL_DOWN:
5339*4882a593Smuzhiyun 			err = altas7_pinctrl_set_pull_sel(pctldev,
5340*4882a593Smuzhiyun 							pin, PULL_DOWN);
5341*4882a593Smuzhiyun 			if (err)
5342*4882a593Smuzhiyun 				return err;
5343*4882a593Smuzhiyun 			break;
5344*4882a593Smuzhiyun 
5345*4882a593Smuzhiyun 		case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
5346*4882a593Smuzhiyun 			err = altas7_pinctrl_set_pull_sel(pctldev,
5347*4882a593Smuzhiyun 							pin, HIGH_HYSTERESIS);
5348*4882a593Smuzhiyun 			if (err)
5349*4882a593Smuzhiyun 				return err;
5350*4882a593Smuzhiyun 			break;
5351*4882a593Smuzhiyun 		case PIN_CONFIG_BIAS_HIGH_IMPEDANCE:
5352*4882a593Smuzhiyun 			err = altas7_pinctrl_set_pull_sel(pctldev,
5353*4882a593Smuzhiyun 							pin, HIGH_Z);
5354*4882a593Smuzhiyun 			if (err)
5355*4882a593Smuzhiyun 				return err;
5356*4882a593Smuzhiyun 			break;
5357*4882a593Smuzhiyun 
5358*4882a593Smuzhiyun 		case PIN_CONFIG_DRIVE_STRENGTH:
5359*4882a593Smuzhiyun 			err = altas7_pinctrl_set_drive_strength_sel(pctldev,
5360*4882a593Smuzhiyun 							pin, arg);
5361*4882a593Smuzhiyun 			if (err)
5362*4882a593Smuzhiyun 				return err;
5363*4882a593Smuzhiyun 			break;
5364*4882a593Smuzhiyun 		default:
5365*4882a593Smuzhiyun 			return -ENOTSUPP;
5366*4882a593Smuzhiyun 		}
5367*4882a593Smuzhiyun 		pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d <<<<\n",
5368*4882a593Smuzhiyun 			pin, atlas7_ioc_pads[pin].name, param, arg);
5369*4882a593Smuzhiyun 	}
5370*4882a593Smuzhiyun 
5371*4882a593Smuzhiyun 	return 0;
5372*4882a593Smuzhiyun }
5373*4882a593Smuzhiyun 
atlas7_pin_config_group_set(struct pinctrl_dev * pctldev,unsigned group,unsigned long * configs,unsigned num_configs)5374*4882a593Smuzhiyun static int atlas7_pin_config_group_set(struct pinctrl_dev *pctldev,
5375*4882a593Smuzhiyun 				unsigned group, unsigned long *configs,
5376*4882a593Smuzhiyun 				unsigned num_configs)
5377*4882a593Smuzhiyun {
5378*4882a593Smuzhiyun 	const unsigned *pins;
5379*4882a593Smuzhiyun 	unsigned npins;
5380*4882a593Smuzhiyun 	int i, ret;
5381*4882a593Smuzhiyun 
5382*4882a593Smuzhiyun 	ret = atlas7_pinctrl_get_group_pins(pctldev, group, &pins, &npins);
5383*4882a593Smuzhiyun 	if (ret)
5384*4882a593Smuzhiyun 		return ret;
5385*4882a593Smuzhiyun 	for (i = 0; i < npins; i++) {
5386*4882a593Smuzhiyun 		if (atlas7_pin_config_set(pctldev, pins[i],
5387*4882a593Smuzhiyun 					  configs, num_configs))
5388*4882a593Smuzhiyun 			return -ENOTSUPP;
5389*4882a593Smuzhiyun 	}
5390*4882a593Smuzhiyun 	return 0;
5391*4882a593Smuzhiyun }
5392*4882a593Smuzhiyun 
5393*4882a593Smuzhiyun static const struct pinconf_ops atlas7_pinconf_ops = {
5394*4882a593Smuzhiyun 	.pin_config_set = atlas7_pin_config_set,
5395*4882a593Smuzhiyun 	.pin_config_group_set = atlas7_pin_config_group_set,
5396*4882a593Smuzhiyun 	.is_generic = true,
5397*4882a593Smuzhiyun };
5398*4882a593Smuzhiyun 
atlas7_pinmux_probe(struct platform_device * pdev)5399*4882a593Smuzhiyun static int atlas7_pinmux_probe(struct platform_device *pdev)
5400*4882a593Smuzhiyun {
5401*4882a593Smuzhiyun 	int ret, idx;
5402*4882a593Smuzhiyun 	struct atlas7_pmx *pmx;
5403*4882a593Smuzhiyun 	struct device_node *np = pdev->dev.of_node;
5404*4882a593Smuzhiyun 	u32 banks = ATLAS7_PINCTRL_REG_BANKS;
5405*4882a593Smuzhiyun 	struct device_node *sys2pci_np;
5406*4882a593Smuzhiyun 	struct resource res;
5407*4882a593Smuzhiyun 
5408*4882a593Smuzhiyun 	/* Create state holders etc for this driver */
5409*4882a593Smuzhiyun 	pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL);
5410*4882a593Smuzhiyun 	if (!pmx)
5411*4882a593Smuzhiyun 		return -ENOMEM;
5412*4882a593Smuzhiyun 
5413*4882a593Smuzhiyun 	/* The sd3 and sd9 shared all pins, and the function select by
5414*4882a593Smuzhiyun 	 * SYS2PCI_SDIO9SEL register
5415*4882a593Smuzhiyun 	 */
5416*4882a593Smuzhiyun 	sys2pci_np = of_find_node_by_name(NULL, "sys2pci");
5417*4882a593Smuzhiyun 	if (!sys2pci_np)
5418*4882a593Smuzhiyun 		return -EINVAL;
5419*4882a593Smuzhiyun 
5420*4882a593Smuzhiyun 	ret = of_address_to_resource(sys2pci_np, 0, &res);
5421*4882a593Smuzhiyun 	of_node_put(sys2pci_np);
5422*4882a593Smuzhiyun 	if (ret)
5423*4882a593Smuzhiyun 		return ret;
5424*4882a593Smuzhiyun 
5425*4882a593Smuzhiyun 	pmx->sys2pci_base = devm_ioremap_resource(&pdev->dev, &res);
5426*4882a593Smuzhiyun 	if (IS_ERR(pmx->sys2pci_base))
5427*4882a593Smuzhiyun 		return -ENOMEM;
5428*4882a593Smuzhiyun 
5429*4882a593Smuzhiyun 	pmx->dev = &pdev->dev;
5430*4882a593Smuzhiyun 
5431*4882a593Smuzhiyun 	pmx->pctl_data = &atlas7_ioc_data;
5432*4882a593Smuzhiyun 	pmx->pctl_desc.name = "pinctrl-atlas7";
5433*4882a593Smuzhiyun 	pmx->pctl_desc.pins = pmx->pctl_data->pads;
5434*4882a593Smuzhiyun 	pmx->pctl_desc.npins = pmx->pctl_data->pads_cnt;
5435*4882a593Smuzhiyun 	pmx->pctl_desc.pctlops = &atlas7_pinctrl_ops;
5436*4882a593Smuzhiyun 	pmx->pctl_desc.pmxops = &atlas7_pinmux_ops;
5437*4882a593Smuzhiyun 	pmx->pctl_desc.confops = &atlas7_pinconf_ops;
5438*4882a593Smuzhiyun 
5439*4882a593Smuzhiyun 	for (idx = 0; idx < banks; idx++) {
5440*4882a593Smuzhiyun 		pmx->regs[idx] = of_iomap(np, idx);
5441*4882a593Smuzhiyun 		if (!pmx->regs[idx]) {
5442*4882a593Smuzhiyun 			dev_err(&pdev->dev,
5443*4882a593Smuzhiyun 				"can't map ioc bank#%d registers\n", idx);
5444*4882a593Smuzhiyun 			ret = -ENOMEM;
5445*4882a593Smuzhiyun 			goto unmap_io;
5446*4882a593Smuzhiyun 		}
5447*4882a593Smuzhiyun 	}
5448*4882a593Smuzhiyun 
5449*4882a593Smuzhiyun 	/* Now register the pin controller and all pins it handles */
5450*4882a593Smuzhiyun 	pmx->pctl = pinctrl_register(&pmx->pctl_desc, &pdev->dev, pmx);
5451*4882a593Smuzhiyun 	if (IS_ERR(pmx->pctl)) {
5452*4882a593Smuzhiyun 		dev_err(&pdev->dev, "could not register atlas7 pinmux driver\n");
5453*4882a593Smuzhiyun 		ret = PTR_ERR(pmx->pctl);
5454*4882a593Smuzhiyun 		goto unmap_io;
5455*4882a593Smuzhiyun 	}
5456*4882a593Smuzhiyun 
5457*4882a593Smuzhiyun 	platform_set_drvdata(pdev, pmx);
5458*4882a593Smuzhiyun 
5459*4882a593Smuzhiyun 	dev_info(&pdev->dev, "initialized atlas7 pinmux driver\n");
5460*4882a593Smuzhiyun 
5461*4882a593Smuzhiyun 	return 0;
5462*4882a593Smuzhiyun 
5463*4882a593Smuzhiyun unmap_io:
5464*4882a593Smuzhiyun 	for (idx = 0; idx < banks; idx++) {
5465*4882a593Smuzhiyun 		if (!pmx->regs[idx])
5466*4882a593Smuzhiyun 			break;
5467*4882a593Smuzhiyun 		iounmap(pmx->regs[idx]);
5468*4882a593Smuzhiyun 	}
5469*4882a593Smuzhiyun 
5470*4882a593Smuzhiyun 	return ret;
5471*4882a593Smuzhiyun }
5472*4882a593Smuzhiyun 
5473*4882a593Smuzhiyun #ifdef CONFIG_PM_SLEEP
atlas7_pinmux_suspend_noirq(struct device * dev)5474*4882a593Smuzhiyun static int atlas7_pinmux_suspend_noirq(struct device *dev)
5475*4882a593Smuzhiyun {
5476*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = dev_get_drvdata(dev);
5477*4882a593Smuzhiyun 	struct atlas7_pad_status *status;
5478*4882a593Smuzhiyun 	struct atlas7_pad_config *conf;
5479*4882a593Smuzhiyun 	const struct atlas7_ds_info *ds_info;
5480*4882a593Smuzhiyun 	const struct atlas7_pull_info *pull_info;
5481*4882a593Smuzhiyun 	int idx;
5482*4882a593Smuzhiyun 	u32 bank;
5483*4882a593Smuzhiyun 	unsigned long regv;
5484*4882a593Smuzhiyun 
5485*4882a593Smuzhiyun 	for (idx = 0; idx < pmx->pctl_desc.npins; idx++) {
5486*4882a593Smuzhiyun 		/* Get this Pad's descriptor from PINCTRL */
5487*4882a593Smuzhiyun 		conf = &pmx->pctl_data->confs[idx];
5488*4882a593Smuzhiyun 		bank = atlas7_pin_to_bank(idx);
5489*4882a593Smuzhiyun 		status = &pmx->sleep_data[idx];
5490*4882a593Smuzhiyun 
5491*4882a593Smuzhiyun 		/* Save Function selector */
5492*4882a593Smuzhiyun 		regv = readl(pmx->regs[bank] + conf->mux_reg);
5493*4882a593Smuzhiyun 		status->func = (regv >> conf->mux_bit) & FUNC_CLEAR_MASK;
5494*4882a593Smuzhiyun 
5495*4882a593Smuzhiyun 		/* Check if Pad is in Analogue selector */
5496*4882a593Smuzhiyun 		if (conf->ad_ctrl_reg == -1)
5497*4882a593Smuzhiyun 			goto save_ds_sel;
5498*4882a593Smuzhiyun 
5499*4882a593Smuzhiyun 		regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg);
5500*4882a593Smuzhiyun 		if (!(regv & (conf->ad_ctrl_bit << ANA_CLEAR_MASK)))
5501*4882a593Smuzhiyun 			status->func = FUNC_ANALOGUE;
5502*4882a593Smuzhiyun 
5503*4882a593Smuzhiyun save_ds_sel:
5504*4882a593Smuzhiyun 		if (conf->drvstr_reg == -1)
5505*4882a593Smuzhiyun 			goto save_pull_sel;
5506*4882a593Smuzhiyun 
5507*4882a593Smuzhiyun 		/* Save Drive Strength selector */
5508*4882a593Smuzhiyun 		ds_info = &atlas7_ds_map[conf->type];
5509*4882a593Smuzhiyun 		regv = readl(pmx->regs[bank] + conf->drvstr_reg);
5510*4882a593Smuzhiyun 		status->dstr = (regv >> conf->drvstr_bit) & ds_info->mask;
5511*4882a593Smuzhiyun 
5512*4882a593Smuzhiyun save_pull_sel:
5513*4882a593Smuzhiyun 		/* Save Pull selector */
5514*4882a593Smuzhiyun 		pull_info = &atlas7_pull_map[conf->type];
5515*4882a593Smuzhiyun 		regv = readl(pmx->regs[bank] + conf->pupd_reg);
5516*4882a593Smuzhiyun 		regv = (regv >> conf->pupd_bit) & pull_info->mask;
5517*4882a593Smuzhiyun 		status->pull = pull_info->v2s[regv].data;
5518*4882a593Smuzhiyun 	}
5519*4882a593Smuzhiyun 
5520*4882a593Smuzhiyun 	/*
5521*4882a593Smuzhiyun 	 * Save disable input selector, this selector is not for Pin,
5522*4882a593Smuzhiyun 	 * but for Mux function.
5523*4882a593Smuzhiyun 	 */
5524*4882a593Smuzhiyun 	for (idx = 0; idx < NUM_OF_IN_DISABLE_REG; idx++) {
5525*4882a593Smuzhiyun 		pmx->status_ds[idx] = readl(pmx->regs[BANK_DS] +
5526*4882a593Smuzhiyun 					IN_DISABLE_0_REG_SET + 0x8 * idx);
5527*4882a593Smuzhiyun 		pmx->status_dsv[idx] = readl(pmx->regs[BANK_DS] +
5528*4882a593Smuzhiyun 					IN_DISABLE_VAL_0_REG_SET + 0x8 * idx);
5529*4882a593Smuzhiyun 	}
5530*4882a593Smuzhiyun 
5531*4882a593Smuzhiyun 	return 0;
5532*4882a593Smuzhiyun }
5533*4882a593Smuzhiyun 
atlas7_pinmux_resume_noirq(struct device * dev)5534*4882a593Smuzhiyun static int atlas7_pinmux_resume_noirq(struct device *dev)
5535*4882a593Smuzhiyun {
5536*4882a593Smuzhiyun 	struct atlas7_pmx *pmx = dev_get_drvdata(dev);
5537*4882a593Smuzhiyun 	struct atlas7_pad_status *status;
5538*4882a593Smuzhiyun 	int idx;
5539*4882a593Smuzhiyun 
5540*4882a593Smuzhiyun 	for (idx = 0; idx < pmx->pctl_desc.npins; idx++) {
5541*4882a593Smuzhiyun 		/* Get this Pad's descriptor from PINCTRL */
5542*4882a593Smuzhiyun 		status = &pmx->sleep_data[idx];
5543*4882a593Smuzhiyun 
5544*4882a593Smuzhiyun 		/* Restore Function selector */
5545*4882a593Smuzhiyun 		__atlas7_pmx_pin_enable(pmx, idx, (u32)status->func & 0xff);
5546*4882a593Smuzhiyun 
5547*4882a593Smuzhiyun 		if (FUNC_ANALOGUE == status->func)
5548*4882a593Smuzhiyun 			goto restore_pull_sel;
5549*4882a593Smuzhiyun 
5550*4882a593Smuzhiyun 		/* Restore Drive Strength selector */
5551*4882a593Smuzhiyun 		__altas7_pinctrl_set_drive_strength_sel(pmx->pctl, idx,
5552*4882a593Smuzhiyun 						(u32)status->dstr & 0xff);
5553*4882a593Smuzhiyun 
5554*4882a593Smuzhiyun restore_pull_sel:
5555*4882a593Smuzhiyun 		/* Restore Pull selector */
5556*4882a593Smuzhiyun 		altas7_pinctrl_set_pull_sel(pmx->pctl, idx,
5557*4882a593Smuzhiyun 						(u32)status->pull & 0xff);
5558*4882a593Smuzhiyun 	}
5559*4882a593Smuzhiyun 
5560*4882a593Smuzhiyun 	/*
5561*4882a593Smuzhiyun 	 * Restore disable input selector, this selector is not for Pin,
5562*4882a593Smuzhiyun 	 * but for Mux function
5563*4882a593Smuzhiyun 	 */
5564*4882a593Smuzhiyun 	for (idx = 0; idx < NUM_OF_IN_DISABLE_REG; idx++) {
5565*4882a593Smuzhiyun 		writel(~0, pmx->regs[BANK_DS] +
5566*4882a593Smuzhiyun 					IN_DISABLE_0_REG_CLR + 0x8 * idx);
5567*4882a593Smuzhiyun 		writel(pmx->status_ds[idx], pmx->regs[BANK_DS] +
5568*4882a593Smuzhiyun 					IN_DISABLE_0_REG_SET + 0x8 * idx);
5569*4882a593Smuzhiyun 		writel(~0, pmx->regs[BANK_DS] +
5570*4882a593Smuzhiyun 					IN_DISABLE_VAL_0_REG_CLR + 0x8 * idx);
5571*4882a593Smuzhiyun 		writel(pmx->status_dsv[idx], pmx->regs[BANK_DS] +
5572*4882a593Smuzhiyun 					IN_DISABLE_VAL_0_REG_SET + 0x8 * idx);
5573*4882a593Smuzhiyun 	}
5574*4882a593Smuzhiyun 
5575*4882a593Smuzhiyun 	return 0;
5576*4882a593Smuzhiyun }
5577*4882a593Smuzhiyun 
5578*4882a593Smuzhiyun static const struct dev_pm_ops atlas7_pinmux_pm_ops = {
5579*4882a593Smuzhiyun 	.suspend_noirq = atlas7_pinmux_suspend_noirq,
5580*4882a593Smuzhiyun 	.resume_noirq = atlas7_pinmux_resume_noirq,
5581*4882a593Smuzhiyun 	.freeze_noirq = atlas7_pinmux_suspend_noirq,
5582*4882a593Smuzhiyun 	.restore_noirq = atlas7_pinmux_resume_noirq,
5583*4882a593Smuzhiyun };
5584*4882a593Smuzhiyun #endif
5585*4882a593Smuzhiyun 
5586*4882a593Smuzhiyun static const struct of_device_id atlas7_pinmux_ids[] = {
5587*4882a593Smuzhiyun 	{ .compatible = "sirf,atlas7-ioc",},
5588*4882a593Smuzhiyun 	{},
5589*4882a593Smuzhiyun };
5590*4882a593Smuzhiyun 
5591*4882a593Smuzhiyun static struct platform_driver atlas7_pinmux_driver = {
5592*4882a593Smuzhiyun 	.driver = {
5593*4882a593Smuzhiyun 		.name = "atlas7-ioc",
5594*4882a593Smuzhiyun 		.of_match_table = atlas7_pinmux_ids,
5595*4882a593Smuzhiyun #ifdef CONFIG_PM_SLEEP
5596*4882a593Smuzhiyun 		.pm = &atlas7_pinmux_pm_ops,
5597*4882a593Smuzhiyun #endif
5598*4882a593Smuzhiyun 	},
5599*4882a593Smuzhiyun 	.probe = atlas7_pinmux_probe,
5600*4882a593Smuzhiyun };
5601*4882a593Smuzhiyun 
atlas7_pinmux_init(void)5602*4882a593Smuzhiyun static int __init atlas7_pinmux_init(void)
5603*4882a593Smuzhiyun {
5604*4882a593Smuzhiyun 	return platform_driver_register(&atlas7_pinmux_driver);
5605*4882a593Smuzhiyun }
5606*4882a593Smuzhiyun arch_initcall(atlas7_pinmux_init);
5607*4882a593Smuzhiyun 
5608*4882a593Smuzhiyun 
5609*4882a593Smuzhiyun /*
5610*4882a593Smuzhiyun  * The Following is GPIO Code
5611*4882a593Smuzhiyun  */
5612*4882a593Smuzhiyun static inline struct
atlas7_gpio_to_bank(struct atlas7_gpio_chip * a7gc,u32 gpio)5613*4882a593Smuzhiyun atlas7_gpio_bank *atlas7_gpio_to_bank(struct atlas7_gpio_chip *a7gc, u32 gpio)
5614*4882a593Smuzhiyun {
5615*4882a593Smuzhiyun 	return &a7gc->banks[GPIO_TO_BANK(gpio)];
5616*4882a593Smuzhiyun }
5617*4882a593Smuzhiyun 
__atlas7_gpio_to_pin(struct atlas7_gpio_chip * a7gc,u32 gpio)5618*4882a593Smuzhiyun static int __atlas7_gpio_to_pin(struct atlas7_gpio_chip *a7gc, u32 gpio)
5619*4882a593Smuzhiyun {
5620*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5621*4882a593Smuzhiyun 	u32 ofs;
5622*4882a593Smuzhiyun 
5623*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, gpio);
5624*4882a593Smuzhiyun 	ofs = gpio - bank->gpio_offset;
5625*4882a593Smuzhiyun 	if (ofs >= bank->ngpio)
5626*4882a593Smuzhiyun 		return -ENODEV;
5627*4882a593Smuzhiyun 
5628*4882a593Smuzhiyun 	return bank->gpio_pins[ofs];
5629*4882a593Smuzhiyun }
5630*4882a593Smuzhiyun 
atlas7_gpio_irq_ack(struct irq_data * d)5631*4882a593Smuzhiyun static void atlas7_gpio_irq_ack(struct irq_data *d)
5632*4882a593Smuzhiyun {
5633*4882a593Smuzhiyun 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
5634*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(gc);
5635*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5636*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5637*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5638*4882a593Smuzhiyun 	unsigned long flags;
5639*4882a593Smuzhiyun 
5640*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, d->hwirq);
5641*4882a593Smuzhiyun 	pin_in_bank = d->hwirq - bank->gpio_offset;
5642*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5643*4882a593Smuzhiyun 
5644*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5645*4882a593Smuzhiyun 
5646*4882a593Smuzhiyun 	val = readl(ctrl_reg);
5647*4882a593Smuzhiyun 	/* clear interrupt status */
5648*4882a593Smuzhiyun 	writel(val, ctrl_reg);
5649*4882a593Smuzhiyun 
5650*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5651*4882a593Smuzhiyun }
5652*4882a593Smuzhiyun 
__atlas7_gpio_irq_mask(struct atlas7_gpio_chip * a7gc,int idx)5653*4882a593Smuzhiyun static void __atlas7_gpio_irq_mask(struct atlas7_gpio_chip *a7gc, int idx)
5654*4882a593Smuzhiyun {
5655*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5656*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5657*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5658*4882a593Smuzhiyun 
5659*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, idx);
5660*4882a593Smuzhiyun 	pin_in_bank = idx - bank->gpio_offset;
5661*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5662*4882a593Smuzhiyun 
5663*4882a593Smuzhiyun 	val = readl(ctrl_reg);
5664*4882a593Smuzhiyun 	val &= ~(ATLAS7_GPIO_CTL_INTR_EN_MASK |
5665*4882a593Smuzhiyun 		ATLAS7_GPIO_CTL_INTR_STATUS_MASK);
5666*4882a593Smuzhiyun 	writel(val, ctrl_reg);
5667*4882a593Smuzhiyun }
5668*4882a593Smuzhiyun 
atlas7_gpio_irq_mask(struct irq_data * d)5669*4882a593Smuzhiyun static void atlas7_gpio_irq_mask(struct irq_data *d)
5670*4882a593Smuzhiyun {
5671*4882a593Smuzhiyun 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
5672*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(gc);
5673*4882a593Smuzhiyun 	unsigned long flags;
5674*4882a593Smuzhiyun 
5675*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5676*4882a593Smuzhiyun 
5677*4882a593Smuzhiyun 	__atlas7_gpio_irq_mask(a7gc, d->hwirq);
5678*4882a593Smuzhiyun 
5679*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5680*4882a593Smuzhiyun }
5681*4882a593Smuzhiyun 
atlas7_gpio_irq_unmask(struct irq_data * d)5682*4882a593Smuzhiyun static void atlas7_gpio_irq_unmask(struct irq_data *d)
5683*4882a593Smuzhiyun {
5684*4882a593Smuzhiyun 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
5685*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(gc);
5686*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5687*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5688*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5689*4882a593Smuzhiyun 	unsigned long flags;
5690*4882a593Smuzhiyun 
5691*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, d->hwirq);
5692*4882a593Smuzhiyun 	pin_in_bank = d->hwirq - bank->gpio_offset;
5693*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5694*4882a593Smuzhiyun 
5695*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5696*4882a593Smuzhiyun 
5697*4882a593Smuzhiyun 	val = readl(ctrl_reg);
5698*4882a593Smuzhiyun 	val &= ~ATLAS7_GPIO_CTL_INTR_STATUS_MASK;
5699*4882a593Smuzhiyun 	val |= ATLAS7_GPIO_CTL_INTR_EN_MASK;
5700*4882a593Smuzhiyun 	writel(val, ctrl_reg);
5701*4882a593Smuzhiyun 
5702*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5703*4882a593Smuzhiyun }
5704*4882a593Smuzhiyun 
atlas7_gpio_irq_type(struct irq_data * d,unsigned int type)5705*4882a593Smuzhiyun static int atlas7_gpio_irq_type(struct irq_data *d,
5706*4882a593Smuzhiyun 				unsigned int type)
5707*4882a593Smuzhiyun {
5708*4882a593Smuzhiyun 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
5709*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(gc);
5710*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5711*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5712*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5713*4882a593Smuzhiyun 	unsigned long flags;
5714*4882a593Smuzhiyun 
5715*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, d->hwirq);
5716*4882a593Smuzhiyun 	pin_in_bank = d->hwirq - bank->gpio_offset;
5717*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5718*4882a593Smuzhiyun 
5719*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5720*4882a593Smuzhiyun 
5721*4882a593Smuzhiyun 	val = readl(ctrl_reg);
5722*4882a593Smuzhiyun 	val &= ~(ATLAS7_GPIO_CTL_INTR_STATUS_MASK |
5723*4882a593Smuzhiyun 		ATLAS7_GPIO_CTL_INTR_EN_MASK);
5724*4882a593Smuzhiyun 
5725*4882a593Smuzhiyun 	switch (type) {
5726*4882a593Smuzhiyun 	case IRQ_TYPE_NONE:
5727*4882a593Smuzhiyun 		break;
5728*4882a593Smuzhiyun 
5729*4882a593Smuzhiyun 	case IRQ_TYPE_EDGE_RISING:
5730*4882a593Smuzhiyun 		val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK |
5731*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_TYPE_MASK;
5732*4882a593Smuzhiyun 		val &= ~ATLAS7_GPIO_CTL_INTR_LOW_MASK;
5733*4882a593Smuzhiyun 		break;
5734*4882a593Smuzhiyun 
5735*4882a593Smuzhiyun 	case IRQ_TYPE_EDGE_FALLING:
5736*4882a593Smuzhiyun 		val &= ~ATLAS7_GPIO_CTL_INTR_HIGH_MASK;
5737*4882a593Smuzhiyun 		val |= ATLAS7_GPIO_CTL_INTR_LOW_MASK |
5738*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_TYPE_MASK;
5739*4882a593Smuzhiyun 		break;
5740*4882a593Smuzhiyun 
5741*4882a593Smuzhiyun 	case IRQ_TYPE_EDGE_BOTH:
5742*4882a593Smuzhiyun 		val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK |
5743*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_LOW_MASK |
5744*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_TYPE_MASK;
5745*4882a593Smuzhiyun 		break;
5746*4882a593Smuzhiyun 
5747*4882a593Smuzhiyun 	case IRQ_TYPE_LEVEL_LOW:
5748*4882a593Smuzhiyun 		val &= ~(ATLAS7_GPIO_CTL_INTR_HIGH_MASK |
5749*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_TYPE_MASK);
5750*4882a593Smuzhiyun 		val |= ATLAS7_GPIO_CTL_INTR_LOW_MASK;
5751*4882a593Smuzhiyun 		break;
5752*4882a593Smuzhiyun 
5753*4882a593Smuzhiyun 	case IRQ_TYPE_LEVEL_HIGH:
5754*4882a593Smuzhiyun 		val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK;
5755*4882a593Smuzhiyun 		val &= ~(ATLAS7_GPIO_CTL_INTR_LOW_MASK |
5756*4882a593Smuzhiyun 			ATLAS7_GPIO_CTL_INTR_TYPE_MASK);
5757*4882a593Smuzhiyun 		break;
5758*4882a593Smuzhiyun 	}
5759*4882a593Smuzhiyun 
5760*4882a593Smuzhiyun 	writel(val, ctrl_reg);
5761*4882a593Smuzhiyun 
5762*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5763*4882a593Smuzhiyun 
5764*4882a593Smuzhiyun 	return 0;
5765*4882a593Smuzhiyun }
5766*4882a593Smuzhiyun 
5767*4882a593Smuzhiyun static struct irq_chip atlas7_gpio_irq_chip = {
5768*4882a593Smuzhiyun 	.name = "atlas7-gpio-irq",
5769*4882a593Smuzhiyun 	.irq_ack = atlas7_gpio_irq_ack,
5770*4882a593Smuzhiyun 	.irq_mask = atlas7_gpio_irq_mask,
5771*4882a593Smuzhiyun 	.irq_unmask = atlas7_gpio_irq_unmask,
5772*4882a593Smuzhiyun 	.irq_set_type = atlas7_gpio_irq_type,
5773*4882a593Smuzhiyun };
5774*4882a593Smuzhiyun 
atlas7_gpio_handle_irq(struct irq_desc * desc)5775*4882a593Smuzhiyun static void atlas7_gpio_handle_irq(struct irq_desc *desc)
5776*4882a593Smuzhiyun {
5777*4882a593Smuzhiyun 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
5778*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(gc);
5779*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank = NULL;
5780*4882a593Smuzhiyun 	u32 status, ctrl;
5781*4882a593Smuzhiyun 	int pin_in_bank = 0, idx;
5782*4882a593Smuzhiyun 	struct irq_chip *chip = irq_desc_get_chip(desc);
5783*4882a593Smuzhiyun 	unsigned int irq = irq_desc_get_irq(desc);
5784*4882a593Smuzhiyun 
5785*4882a593Smuzhiyun 	for (idx = 0; idx < a7gc->nbank; idx++) {
5786*4882a593Smuzhiyun 		bank = &a7gc->banks[idx];
5787*4882a593Smuzhiyun 		if (bank->irq == irq)
5788*4882a593Smuzhiyun 			break;
5789*4882a593Smuzhiyun 	}
5790*4882a593Smuzhiyun 	BUG_ON(idx == a7gc->nbank);
5791*4882a593Smuzhiyun 
5792*4882a593Smuzhiyun 	chained_irq_enter(chip, desc);
5793*4882a593Smuzhiyun 
5794*4882a593Smuzhiyun 	status = readl(ATLAS7_GPIO_INT_STATUS(bank));
5795*4882a593Smuzhiyun 	if (!status) {
5796*4882a593Smuzhiyun 		pr_warn("%s: gpio [%s] status %#x no interrupt is flagged\n",
5797*4882a593Smuzhiyun 			__func__, gc->label, status);
5798*4882a593Smuzhiyun 		handle_bad_irq(desc);
5799*4882a593Smuzhiyun 		return;
5800*4882a593Smuzhiyun 	}
5801*4882a593Smuzhiyun 
5802*4882a593Smuzhiyun 	while (status) {
5803*4882a593Smuzhiyun 		ctrl = readl(ATLAS7_GPIO_CTRL(bank, pin_in_bank));
5804*4882a593Smuzhiyun 
5805*4882a593Smuzhiyun 		/*
5806*4882a593Smuzhiyun 		 * Here we must check whether the corresponding GPIO's
5807*4882a593Smuzhiyun 		 * interrupt has been enabled, otherwise just skip it
5808*4882a593Smuzhiyun 		 */
5809*4882a593Smuzhiyun 		if ((status & 0x1) && (ctrl & ATLAS7_GPIO_CTL_INTR_EN_MASK)) {
5810*4882a593Smuzhiyun 			pr_debug("%s: chip[%s] gpio:%d happens\n",
5811*4882a593Smuzhiyun 				__func__, gc->label,
5812*4882a593Smuzhiyun 				bank->gpio_offset + pin_in_bank);
5813*4882a593Smuzhiyun 			generic_handle_irq(
5814*4882a593Smuzhiyun 				irq_find_mapping(gc->irq.domain,
5815*4882a593Smuzhiyun 					bank->gpio_offset + pin_in_bank));
5816*4882a593Smuzhiyun 		}
5817*4882a593Smuzhiyun 
5818*4882a593Smuzhiyun 		if (++pin_in_bank >= bank->ngpio)
5819*4882a593Smuzhiyun 			break;
5820*4882a593Smuzhiyun 
5821*4882a593Smuzhiyun 		status = status >> 1;
5822*4882a593Smuzhiyun 	}
5823*4882a593Smuzhiyun 
5824*4882a593Smuzhiyun 	chained_irq_exit(chip, desc);
5825*4882a593Smuzhiyun }
5826*4882a593Smuzhiyun 
__atlas7_gpio_set_input(struct atlas7_gpio_chip * a7gc,unsigned int gpio)5827*4882a593Smuzhiyun static void __atlas7_gpio_set_input(struct atlas7_gpio_chip *a7gc,
5828*4882a593Smuzhiyun 				unsigned int gpio)
5829*4882a593Smuzhiyun {
5830*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5831*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5832*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5833*4882a593Smuzhiyun 
5834*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, gpio);
5835*4882a593Smuzhiyun 	pin_in_bank = gpio - bank->gpio_offset;
5836*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5837*4882a593Smuzhiyun 
5838*4882a593Smuzhiyun 	val = readl(ctrl_reg);
5839*4882a593Smuzhiyun 	val &= ~ATLAS7_GPIO_CTL_OUT_EN_MASK;
5840*4882a593Smuzhiyun 	writel(val, ctrl_reg);
5841*4882a593Smuzhiyun }
5842*4882a593Smuzhiyun 
atlas7_gpio_request(struct gpio_chip * chip,unsigned int gpio)5843*4882a593Smuzhiyun static int atlas7_gpio_request(struct gpio_chip *chip,
5844*4882a593Smuzhiyun 				unsigned int gpio)
5845*4882a593Smuzhiyun {
5846*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5847*4882a593Smuzhiyun 	int ret;
5848*4882a593Smuzhiyun 	unsigned long flags;
5849*4882a593Smuzhiyun 
5850*4882a593Smuzhiyun 	ret = __atlas7_gpio_to_pin(a7gc, gpio);
5851*4882a593Smuzhiyun 	if (ret < 0)
5852*4882a593Smuzhiyun 		return ret;
5853*4882a593Smuzhiyun 
5854*4882a593Smuzhiyun 	if (pinctrl_gpio_request(chip->base + gpio))
5855*4882a593Smuzhiyun 		return -ENODEV;
5856*4882a593Smuzhiyun 
5857*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5858*4882a593Smuzhiyun 
5859*4882a593Smuzhiyun 	/*
5860*4882a593Smuzhiyun 	 * default status:
5861*4882a593Smuzhiyun 	 * set direction as input and mask irq
5862*4882a593Smuzhiyun 	 */
5863*4882a593Smuzhiyun 	__atlas7_gpio_set_input(a7gc, gpio);
5864*4882a593Smuzhiyun 	__atlas7_gpio_irq_mask(a7gc, gpio);
5865*4882a593Smuzhiyun 
5866*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5867*4882a593Smuzhiyun 
5868*4882a593Smuzhiyun 	return 0;
5869*4882a593Smuzhiyun }
5870*4882a593Smuzhiyun 
atlas7_gpio_free(struct gpio_chip * chip,unsigned int gpio)5871*4882a593Smuzhiyun static void atlas7_gpio_free(struct gpio_chip *chip,
5872*4882a593Smuzhiyun 				unsigned int gpio)
5873*4882a593Smuzhiyun {
5874*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5875*4882a593Smuzhiyun 	unsigned long flags;
5876*4882a593Smuzhiyun 
5877*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5878*4882a593Smuzhiyun 
5879*4882a593Smuzhiyun 	__atlas7_gpio_irq_mask(a7gc, gpio);
5880*4882a593Smuzhiyun 	__atlas7_gpio_set_input(a7gc, gpio);
5881*4882a593Smuzhiyun 
5882*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5883*4882a593Smuzhiyun 
5884*4882a593Smuzhiyun 	pinctrl_gpio_free(chip->base + gpio);
5885*4882a593Smuzhiyun }
5886*4882a593Smuzhiyun 
atlas7_gpio_direction_input(struct gpio_chip * chip,unsigned int gpio)5887*4882a593Smuzhiyun static int atlas7_gpio_direction_input(struct gpio_chip *chip,
5888*4882a593Smuzhiyun 					unsigned int gpio)
5889*4882a593Smuzhiyun {
5890*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5891*4882a593Smuzhiyun 	unsigned long flags;
5892*4882a593Smuzhiyun 
5893*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5894*4882a593Smuzhiyun 
5895*4882a593Smuzhiyun 	__atlas7_gpio_set_input(a7gc, gpio);
5896*4882a593Smuzhiyun 
5897*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5898*4882a593Smuzhiyun 
5899*4882a593Smuzhiyun 	return 0;
5900*4882a593Smuzhiyun }
5901*4882a593Smuzhiyun 
__atlas7_gpio_set_output(struct atlas7_gpio_chip * a7gc,unsigned int gpio,int value)5902*4882a593Smuzhiyun static void __atlas7_gpio_set_output(struct atlas7_gpio_chip *a7gc,
5903*4882a593Smuzhiyun 			   unsigned int gpio, int value)
5904*4882a593Smuzhiyun {
5905*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5906*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5907*4882a593Smuzhiyun 	u32 out_ctrl, pin_in_bank;
5908*4882a593Smuzhiyun 
5909*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, gpio);
5910*4882a593Smuzhiyun 	pin_in_bank = gpio - bank->gpio_offset;
5911*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5912*4882a593Smuzhiyun 
5913*4882a593Smuzhiyun 	out_ctrl = readl(ctrl_reg);
5914*4882a593Smuzhiyun 	if (value)
5915*4882a593Smuzhiyun 		out_ctrl |= ATLAS7_GPIO_CTL_DATAOUT_MASK;
5916*4882a593Smuzhiyun 	else
5917*4882a593Smuzhiyun 		out_ctrl &= ~ATLAS7_GPIO_CTL_DATAOUT_MASK;
5918*4882a593Smuzhiyun 
5919*4882a593Smuzhiyun 	out_ctrl &= ~ATLAS7_GPIO_CTL_INTR_EN_MASK;
5920*4882a593Smuzhiyun 	out_ctrl |= ATLAS7_GPIO_CTL_OUT_EN_MASK;
5921*4882a593Smuzhiyun 	writel(out_ctrl, ctrl_reg);
5922*4882a593Smuzhiyun }
5923*4882a593Smuzhiyun 
atlas7_gpio_direction_output(struct gpio_chip * chip,unsigned int gpio,int value)5924*4882a593Smuzhiyun static int atlas7_gpio_direction_output(struct gpio_chip *chip,
5925*4882a593Smuzhiyun 				unsigned int gpio, int value)
5926*4882a593Smuzhiyun {
5927*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5928*4882a593Smuzhiyun 	unsigned long flags;
5929*4882a593Smuzhiyun 
5930*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5931*4882a593Smuzhiyun 
5932*4882a593Smuzhiyun 	__atlas7_gpio_set_output(a7gc, gpio, value);
5933*4882a593Smuzhiyun 
5934*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5935*4882a593Smuzhiyun 
5936*4882a593Smuzhiyun 	return 0;
5937*4882a593Smuzhiyun }
5938*4882a593Smuzhiyun 
atlas7_gpio_get_value(struct gpio_chip * chip,unsigned int gpio)5939*4882a593Smuzhiyun static int atlas7_gpio_get_value(struct gpio_chip *chip,
5940*4882a593Smuzhiyun 					unsigned int gpio)
5941*4882a593Smuzhiyun {
5942*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5943*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5944*4882a593Smuzhiyun 	u32 val, pin_in_bank;
5945*4882a593Smuzhiyun 	unsigned long flags;
5946*4882a593Smuzhiyun 
5947*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, gpio);
5948*4882a593Smuzhiyun 	pin_in_bank = gpio - bank->gpio_offset;
5949*4882a593Smuzhiyun 
5950*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5951*4882a593Smuzhiyun 
5952*4882a593Smuzhiyun 	val = readl(ATLAS7_GPIO_CTRL(bank, pin_in_bank));
5953*4882a593Smuzhiyun 
5954*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5955*4882a593Smuzhiyun 
5956*4882a593Smuzhiyun 	return !!(val & ATLAS7_GPIO_CTL_DATAIN_MASK);
5957*4882a593Smuzhiyun }
5958*4882a593Smuzhiyun 
atlas7_gpio_set_value(struct gpio_chip * chip,unsigned int gpio,int value)5959*4882a593Smuzhiyun static void atlas7_gpio_set_value(struct gpio_chip *chip,
5960*4882a593Smuzhiyun 				unsigned int gpio, int value)
5961*4882a593Smuzhiyun {
5962*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = gpiochip_get_data(chip);
5963*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
5964*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
5965*4882a593Smuzhiyun 	u32 ctrl, pin_in_bank;
5966*4882a593Smuzhiyun 	unsigned long flags;
5967*4882a593Smuzhiyun 
5968*4882a593Smuzhiyun 	bank = atlas7_gpio_to_bank(a7gc, gpio);
5969*4882a593Smuzhiyun 	pin_in_bank = gpio - bank->gpio_offset;
5970*4882a593Smuzhiyun 	ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank);
5971*4882a593Smuzhiyun 
5972*4882a593Smuzhiyun 	raw_spin_lock_irqsave(&a7gc->lock, flags);
5973*4882a593Smuzhiyun 
5974*4882a593Smuzhiyun 	ctrl = readl(ctrl_reg);
5975*4882a593Smuzhiyun 	if (value)
5976*4882a593Smuzhiyun 		ctrl |= ATLAS7_GPIO_CTL_DATAOUT_MASK;
5977*4882a593Smuzhiyun 	else
5978*4882a593Smuzhiyun 		ctrl &= ~ATLAS7_GPIO_CTL_DATAOUT_MASK;
5979*4882a593Smuzhiyun 	writel(ctrl, ctrl_reg);
5980*4882a593Smuzhiyun 
5981*4882a593Smuzhiyun 	raw_spin_unlock_irqrestore(&a7gc->lock, flags);
5982*4882a593Smuzhiyun }
5983*4882a593Smuzhiyun 
5984*4882a593Smuzhiyun static const struct of_device_id atlas7_gpio_ids[] = {
5985*4882a593Smuzhiyun 	{ .compatible = "sirf,atlas7-gpio", },
5986*4882a593Smuzhiyun 	{},
5987*4882a593Smuzhiyun };
5988*4882a593Smuzhiyun 
atlas7_gpio_probe(struct platform_device * pdev)5989*4882a593Smuzhiyun static int atlas7_gpio_probe(struct platform_device *pdev)
5990*4882a593Smuzhiyun {
5991*4882a593Smuzhiyun 	struct device_node *np = pdev->dev.of_node;
5992*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc;
5993*4882a593Smuzhiyun 	struct gpio_chip *chip;
5994*4882a593Smuzhiyun 	u32 nbank;
5995*4882a593Smuzhiyun 	int ret, idx;
5996*4882a593Smuzhiyun 	struct gpio_irq_chip *girq;
5997*4882a593Smuzhiyun 
5998*4882a593Smuzhiyun 	ret = of_property_read_u32(np, "gpio-banks", &nbank);
5999*4882a593Smuzhiyun 	if (ret) {
6000*4882a593Smuzhiyun 		dev_err(&pdev->dev,
6001*4882a593Smuzhiyun 			"Could not find GPIO bank info,ret=%d!\n",
6002*4882a593Smuzhiyun 			ret);
6003*4882a593Smuzhiyun 		return ret;
6004*4882a593Smuzhiyun 	}
6005*4882a593Smuzhiyun 
6006*4882a593Smuzhiyun 	/* retrieve gpio descriptor data */
6007*4882a593Smuzhiyun 	a7gc = devm_kzalloc(&pdev->dev, struct_size(a7gc, banks, nbank),
6008*4882a593Smuzhiyun 			    GFP_KERNEL);
6009*4882a593Smuzhiyun 	if (!a7gc)
6010*4882a593Smuzhiyun 		return -ENOMEM;
6011*4882a593Smuzhiyun 
6012*4882a593Smuzhiyun 	/* Get Gpio clk */
6013*4882a593Smuzhiyun 	a7gc->clk = of_clk_get(np, 0);
6014*4882a593Smuzhiyun 	if (!IS_ERR(a7gc->clk)) {
6015*4882a593Smuzhiyun 		ret = clk_prepare_enable(a7gc->clk);
6016*4882a593Smuzhiyun 		if (ret) {
6017*4882a593Smuzhiyun 			dev_err(&pdev->dev,
6018*4882a593Smuzhiyun 				"Could not enable clock!\n");
6019*4882a593Smuzhiyun 			return ret;
6020*4882a593Smuzhiyun 		}
6021*4882a593Smuzhiyun 	}
6022*4882a593Smuzhiyun 
6023*4882a593Smuzhiyun 	/* Get Gpio Registers */
6024*4882a593Smuzhiyun 	a7gc->reg = of_iomap(np, 0);
6025*4882a593Smuzhiyun 	if (!a7gc->reg) {
6026*4882a593Smuzhiyun 		dev_err(&pdev->dev, "Could not map GPIO Registers!\n");
6027*4882a593Smuzhiyun 		return -ENOMEM;
6028*4882a593Smuzhiyun 	}
6029*4882a593Smuzhiyun 
6030*4882a593Smuzhiyun 	a7gc->nbank = nbank;
6031*4882a593Smuzhiyun 	raw_spin_lock_init(&a7gc->lock);
6032*4882a593Smuzhiyun 
6033*4882a593Smuzhiyun 	/* Setup GPIO Chip */
6034*4882a593Smuzhiyun 	chip = &a7gc->chip;
6035*4882a593Smuzhiyun 	chip->request = atlas7_gpio_request;
6036*4882a593Smuzhiyun 	chip->free = atlas7_gpio_free;
6037*4882a593Smuzhiyun 	chip->direction_input = atlas7_gpio_direction_input;
6038*4882a593Smuzhiyun 	chip->get = atlas7_gpio_get_value;
6039*4882a593Smuzhiyun 	chip->direction_output = atlas7_gpio_direction_output;
6040*4882a593Smuzhiyun 	chip->set = atlas7_gpio_set_value;
6041*4882a593Smuzhiyun 	chip->base = -1;
6042*4882a593Smuzhiyun 	/* Each chip can support 32 pins at one bank */
6043*4882a593Smuzhiyun 	chip->ngpio = NGPIO_OF_BANK * nbank;
6044*4882a593Smuzhiyun 	chip->label = kstrdup(np->name, GFP_KERNEL);
6045*4882a593Smuzhiyun 	chip->of_node = np;
6046*4882a593Smuzhiyun 	chip->of_gpio_n_cells = 2;
6047*4882a593Smuzhiyun 	chip->parent = &pdev->dev;
6048*4882a593Smuzhiyun 
6049*4882a593Smuzhiyun 	girq = &chip->irq;
6050*4882a593Smuzhiyun 	girq->chip = &atlas7_gpio_irq_chip;
6051*4882a593Smuzhiyun 	girq->parent_handler = atlas7_gpio_handle_irq;
6052*4882a593Smuzhiyun 	girq->num_parents = nbank;
6053*4882a593Smuzhiyun 	girq->parents = devm_kcalloc(&pdev->dev, nbank,
6054*4882a593Smuzhiyun 				     sizeof(*girq->parents),
6055*4882a593Smuzhiyun 				     GFP_KERNEL);
6056*4882a593Smuzhiyun 	if (!girq->parents)
6057*4882a593Smuzhiyun 		return -ENOMEM;
6058*4882a593Smuzhiyun 	for (idx = 0; idx < nbank; idx++) {
6059*4882a593Smuzhiyun 		struct atlas7_gpio_bank *bank;
6060*4882a593Smuzhiyun 
6061*4882a593Smuzhiyun 		bank = &a7gc->banks[idx];
6062*4882a593Smuzhiyun 		/* Set ctrl registers' base of this bank */
6063*4882a593Smuzhiyun 		bank->base = ATLAS7_GPIO_BASE(a7gc, idx);
6064*4882a593Smuzhiyun 		bank->gpio_offset = idx * NGPIO_OF_BANK;
6065*4882a593Smuzhiyun 
6066*4882a593Smuzhiyun 		/* Get interrupt number from DTS */
6067*4882a593Smuzhiyun 		ret = of_irq_get(np, idx);
6068*4882a593Smuzhiyun 		if (ret <= 0) {
6069*4882a593Smuzhiyun 			dev_err(&pdev->dev,
6070*4882a593Smuzhiyun 				"Unable to find IRQ number. ret=%d\n", ret);
6071*4882a593Smuzhiyun 			if (!ret)
6072*4882a593Smuzhiyun 				ret = -ENXIO;
6073*4882a593Smuzhiyun 			goto failed;
6074*4882a593Smuzhiyun 		}
6075*4882a593Smuzhiyun 		bank->irq = ret;
6076*4882a593Smuzhiyun 		girq->parents[idx] = ret;
6077*4882a593Smuzhiyun 	}
6078*4882a593Smuzhiyun 	girq->default_type = IRQ_TYPE_NONE;
6079*4882a593Smuzhiyun 	girq->handler = handle_level_irq;
6080*4882a593Smuzhiyun 
6081*4882a593Smuzhiyun 	/* Add gpio chip to system */
6082*4882a593Smuzhiyun 	ret = gpiochip_add_data(chip, a7gc);
6083*4882a593Smuzhiyun 	if (ret) {
6084*4882a593Smuzhiyun 		dev_err(&pdev->dev,
6085*4882a593Smuzhiyun 			"%pOF: error in probe function with status %d\n",
6086*4882a593Smuzhiyun 			np, ret);
6087*4882a593Smuzhiyun 		goto failed;
6088*4882a593Smuzhiyun 	}
6089*4882a593Smuzhiyun 
6090*4882a593Smuzhiyun 	platform_set_drvdata(pdev, a7gc);
6091*4882a593Smuzhiyun 	dev_info(&pdev->dev, "add to system.\n");
6092*4882a593Smuzhiyun 	return 0;
6093*4882a593Smuzhiyun failed:
6094*4882a593Smuzhiyun 	return ret;
6095*4882a593Smuzhiyun }
6096*4882a593Smuzhiyun 
6097*4882a593Smuzhiyun #ifdef CONFIG_PM_SLEEP
atlas7_gpio_suspend_noirq(struct device * dev)6098*4882a593Smuzhiyun static int atlas7_gpio_suspend_noirq(struct device *dev)
6099*4882a593Smuzhiyun {
6100*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = dev_get_drvdata(dev);
6101*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
6102*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
6103*4882a593Smuzhiyun 	u32 idx, pin;
6104*4882a593Smuzhiyun 
6105*4882a593Smuzhiyun 	for (idx = 0; idx < a7gc->nbank; idx++) {
6106*4882a593Smuzhiyun 		bank = &a7gc->banks[idx];
6107*4882a593Smuzhiyun 		for (pin = 0; pin < bank->ngpio; pin++) {
6108*4882a593Smuzhiyun 			ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin);
6109*4882a593Smuzhiyun 			bank->sleep_data[pin] = readl(ctrl_reg);
6110*4882a593Smuzhiyun 		}
6111*4882a593Smuzhiyun 	}
6112*4882a593Smuzhiyun 
6113*4882a593Smuzhiyun 	return 0;
6114*4882a593Smuzhiyun }
6115*4882a593Smuzhiyun 
atlas7_gpio_resume_noirq(struct device * dev)6116*4882a593Smuzhiyun static int atlas7_gpio_resume_noirq(struct device *dev)
6117*4882a593Smuzhiyun {
6118*4882a593Smuzhiyun 	struct atlas7_gpio_chip *a7gc = dev_get_drvdata(dev);
6119*4882a593Smuzhiyun 	struct atlas7_gpio_bank *bank;
6120*4882a593Smuzhiyun 	void __iomem *ctrl_reg;
6121*4882a593Smuzhiyun 	u32 idx, pin;
6122*4882a593Smuzhiyun 
6123*4882a593Smuzhiyun 	for (idx = 0; idx < a7gc->nbank; idx++) {
6124*4882a593Smuzhiyun 		bank = &a7gc->banks[idx];
6125*4882a593Smuzhiyun 		for (pin = 0; pin < bank->ngpio; pin++) {
6126*4882a593Smuzhiyun 			ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin);
6127*4882a593Smuzhiyun 			writel(bank->sleep_data[pin], ctrl_reg);
6128*4882a593Smuzhiyun 		}
6129*4882a593Smuzhiyun 	}
6130*4882a593Smuzhiyun 
6131*4882a593Smuzhiyun 	return 0;
6132*4882a593Smuzhiyun }
6133*4882a593Smuzhiyun 
6134*4882a593Smuzhiyun static const struct dev_pm_ops atlas7_gpio_pm_ops = {
6135*4882a593Smuzhiyun 	.suspend_noirq = atlas7_gpio_suspend_noirq,
6136*4882a593Smuzhiyun 	.resume_noirq = atlas7_gpio_resume_noirq,
6137*4882a593Smuzhiyun 	.freeze_noirq = atlas7_gpio_suspend_noirq,
6138*4882a593Smuzhiyun 	.restore_noirq = atlas7_gpio_resume_noirq,
6139*4882a593Smuzhiyun };
6140*4882a593Smuzhiyun #endif
6141*4882a593Smuzhiyun 
6142*4882a593Smuzhiyun static struct platform_driver atlas7_gpio_driver = {
6143*4882a593Smuzhiyun 	.driver = {
6144*4882a593Smuzhiyun 		.name = "atlas7-gpio",
6145*4882a593Smuzhiyun 		.of_match_table = atlas7_gpio_ids,
6146*4882a593Smuzhiyun #ifdef CONFIG_PM_SLEEP
6147*4882a593Smuzhiyun 		.pm = &atlas7_gpio_pm_ops,
6148*4882a593Smuzhiyun #endif
6149*4882a593Smuzhiyun 	},
6150*4882a593Smuzhiyun 	.probe = atlas7_gpio_probe,
6151*4882a593Smuzhiyun };
6152*4882a593Smuzhiyun 
atlas7_gpio_init(void)6153*4882a593Smuzhiyun static int __init atlas7_gpio_init(void)
6154*4882a593Smuzhiyun {
6155*4882a593Smuzhiyun 	return platform_driver_register(&atlas7_gpio_driver);
6156*4882a593Smuzhiyun }
6157*4882a593Smuzhiyun subsys_initcall(atlas7_gpio_init);
6158