xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-tegra/tegra20/pinmux.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2011 The Chromium OS Authors.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /* Tegra20 pin multiplexing functions */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <common.h>
10*4882a593Smuzhiyun #include <asm/io.h>
11*4882a593Smuzhiyun #include <asm/arch/pinmux.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /*
14*4882a593Smuzhiyun  * This defines the order of the pin mux control bits in the registers. For
15*4882a593Smuzhiyun  * some reason there is no correspendence between the tristate, pin mux and
16*4882a593Smuzhiyun  * pullup/pulldown registers.
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun enum pmux_ctlid {
19*4882a593Smuzhiyun 	/* 0: APB_MISC_PP_PIN_MUX_CTL_A_0 */
20*4882a593Smuzhiyun 	MUXCTL_UAA,
21*4882a593Smuzhiyun 	MUXCTL_UAB,
22*4882a593Smuzhiyun 	MUXCTL_UAC,
23*4882a593Smuzhiyun 	MUXCTL_UAD,
24*4882a593Smuzhiyun 	MUXCTL_UDA,
25*4882a593Smuzhiyun 	MUXCTL_RESERVED5,
26*4882a593Smuzhiyun 	MUXCTL_ATE,
27*4882a593Smuzhiyun 	MUXCTL_RM,
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	MUXCTL_ATB,
30*4882a593Smuzhiyun 	MUXCTL_RESERVED9,
31*4882a593Smuzhiyun 	MUXCTL_ATD,
32*4882a593Smuzhiyun 	MUXCTL_ATC,
33*4882a593Smuzhiyun 	MUXCTL_ATA,
34*4882a593Smuzhiyun 	MUXCTL_KBCF,
35*4882a593Smuzhiyun 	MUXCTL_KBCE,
36*4882a593Smuzhiyun 	MUXCTL_SDMMC1,
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun 	/* 16: APB_MISC_PP_PIN_MUX_CTL_B_0 */
39*4882a593Smuzhiyun 	MUXCTL_GMA,
40*4882a593Smuzhiyun 	MUXCTL_GMC,
41*4882a593Smuzhiyun 	MUXCTL_HDINT,
42*4882a593Smuzhiyun 	MUXCTL_SLXA,
43*4882a593Smuzhiyun 	MUXCTL_OWC,
44*4882a593Smuzhiyun 	MUXCTL_SLXC,
45*4882a593Smuzhiyun 	MUXCTL_SLXD,
46*4882a593Smuzhiyun 	MUXCTL_SLXK,
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun 	MUXCTL_UCA,
49*4882a593Smuzhiyun 	MUXCTL_UCB,
50*4882a593Smuzhiyun 	MUXCTL_DTA,
51*4882a593Smuzhiyun 	MUXCTL_DTB,
52*4882a593Smuzhiyun 	MUXCTL_RESERVED28,
53*4882a593Smuzhiyun 	MUXCTL_DTC,
54*4882a593Smuzhiyun 	MUXCTL_DTD,
55*4882a593Smuzhiyun 	MUXCTL_DTE,
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun 	/* 32: APB_MISC_PP_PIN_MUX_CTL_C_0 */
58*4882a593Smuzhiyun 	MUXCTL_DDC,
59*4882a593Smuzhiyun 	MUXCTL_CDEV1,
60*4882a593Smuzhiyun 	MUXCTL_CDEV2,
61*4882a593Smuzhiyun 	MUXCTL_CSUS,
62*4882a593Smuzhiyun 	MUXCTL_I2CP,
63*4882a593Smuzhiyun 	MUXCTL_KBCA,
64*4882a593Smuzhiyun 	MUXCTL_KBCB,
65*4882a593Smuzhiyun 	MUXCTL_KBCC,
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun 	MUXCTL_IRTX,
68*4882a593Smuzhiyun 	MUXCTL_IRRX,
69*4882a593Smuzhiyun 	MUXCTL_DAP1,
70*4882a593Smuzhiyun 	MUXCTL_DAP2,
71*4882a593Smuzhiyun 	MUXCTL_DAP3,
72*4882a593Smuzhiyun 	MUXCTL_DAP4,
73*4882a593Smuzhiyun 	MUXCTL_GMB,
74*4882a593Smuzhiyun 	MUXCTL_GMD,
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun 	/* 48: APB_MISC_PP_PIN_MUX_CTL_D_0 */
77*4882a593Smuzhiyun 	MUXCTL_GME,
78*4882a593Smuzhiyun 	MUXCTL_GPV,
79*4882a593Smuzhiyun 	MUXCTL_GPU,
80*4882a593Smuzhiyun 	MUXCTL_SPDO,
81*4882a593Smuzhiyun 	MUXCTL_SPDI,
82*4882a593Smuzhiyun 	MUXCTL_SDB,
83*4882a593Smuzhiyun 	MUXCTL_SDC,
84*4882a593Smuzhiyun 	MUXCTL_SDD,
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun 	MUXCTL_SPIH,
87*4882a593Smuzhiyun 	MUXCTL_SPIG,
88*4882a593Smuzhiyun 	MUXCTL_SPIF,
89*4882a593Smuzhiyun 	MUXCTL_SPIE,
90*4882a593Smuzhiyun 	MUXCTL_SPID,
91*4882a593Smuzhiyun 	MUXCTL_SPIC,
92*4882a593Smuzhiyun 	MUXCTL_SPIB,
93*4882a593Smuzhiyun 	MUXCTL_SPIA,
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun 	/* 64: APB_MISC_PP_PIN_MUX_CTL_E_0 */
96*4882a593Smuzhiyun 	MUXCTL_LPW0,
97*4882a593Smuzhiyun 	MUXCTL_LPW1,
98*4882a593Smuzhiyun 	MUXCTL_LPW2,
99*4882a593Smuzhiyun 	MUXCTL_LSDI,
100*4882a593Smuzhiyun 	MUXCTL_LSDA,
101*4882a593Smuzhiyun 	MUXCTL_LSPI,
102*4882a593Smuzhiyun 	MUXCTL_LCSN,
103*4882a593Smuzhiyun 	MUXCTL_LDC,
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun 	MUXCTL_LSCK,
106*4882a593Smuzhiyun 	MUXCTL_LSC0,
107*4882a593Smuzhiyun 	MUXCTL_LSC1,
108*4882a593Smuzhiyun 	MUXCTL_LHS,
109*4882a593Smuzhiyun 	MUXCTL_LVS,
110*4882a593Smuzhiyun 	MUXCTL_LM0,
111*4882a593Smuzhiyun 	MUXCTL_LM1,
112*4882a593Smuzhiyun 	MUXCTL_LVP0,
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun 	/* 80: APB_MISC_PP_PIN_MUX_CTL_F_0 */
115*4882a593Smuzhiyun 	MUXCTL_LD0,
116*4882a593Smuzhiyun 	MUXCTL_LD1,
117*4882a593Smuzhiyun 	MUXCTL_LD2,
118*4882a593Smuzhiyun 	MUXCTL_LD3,
119*4882a593Smuzhiyun 	MUXCTL_LD4,
120*4882a593Smuzhiyun 	MUXCTL_LD5,
121*4882a593Smuzhiyun 	MUXCTL_LD6,
122*4882a593Smuzhiyun 	MUXCTL_LD7,
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun 	MUXCTL_LD8,
125*4882a593Smuzhiyun 	MUXCTL_LD9,
126*4882a593Smuzhiyun 	MUXCTL_LD10,
127*4882a593Smuzhiyun 	MUXCTL_LD11,
128*4882a593Smuzhiyun 	MUXCTL_LD12,
129*4882a593Smuzhiyun 	MUXCTL_LD13,
130*4882a593Smuzhiyun 	MUXCTL_LD14,
131*4882a593Smuzhiyun 	MUXCTL_LD15,
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun 	/* 96: APB_MISC_PP_PIN_MUX_CTL_G_0 */
134*4882a593Smuzhiyun 	MUXCTL_LD16,
135*4882a593Smuzhiyun 	MUXCTL_LD17,
136*4882a593Smuzhiyun 	MUXCTL_LHP1,
137*4882a593Smuzhiyun 	MUXCTL_LHP2,
138*4882a593Smuzhiyun 	MUXCTL_LVP1,
139*4882a593Smuzhiyun 	MUXCTL_LHP0,
140*4882a593Smuzhiyun 	MUXCTL_RESERVED102,
141*4882a593Smuzhiyun 	MUXCTL_LPP,
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun 	MUXCTL_LDI,
144*4882a593Smuzhiyun 	MUXCTL_PMC,
145*4882a593Smuzhiyun 	MUXCTL_CRTP,
146*4882a593Smuzhiyun 	MUXCTL_PTA,
147*4882a593Smuzhiyun 	MUXCTL_RESERVED108,
148*4882a593Smuzhiyun 	MUXCTL_KBCD,
149*4882a593Smuzhiyun 	MUXCTL_GPU7,
150*4882a593Smuzhiyun 	MUXCTL_DTF,
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun 	MUXCTL_NONE = -1,
153*4882a593Smuzhiyun };
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun /*
156*4882a593Smuzhiyun  * And this defines the order of the pullup/pulldown controls which are again
157*4882a593Smuzhiyun  * in a different order
158*4882a593Smuzhiyun  */
159*4882a593Smuzhiyun enum pmux_pullid {
160*4882a593Smuzhiyun 	/* 0: APB_MISC_PP_PULLUPDOWN_REG_A_0 */
161*4882a593Smuzhiyun 	PUCTL_ATA,
162*4882a593Smuzhiyun 	PUCTL_ATB,
163*4882a593Smuzhiyun 	PUCTL_ATC,
164*4882a593Smuzhiyun 	PUCTL_ATD,
165*4882a593Smuzhiyun 	PUCTL_ATE,
166*4882a593Smuzhiyun 	PUCTL_DAP1,
167*4882a593Smuzhiyun 	PUCTL_DAP2,
168*4882a593Smuzhiyun 	PUCTL_DAP3,
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun 	PUCTL_DAP4,
171*4882a593Smuzhiyun 	PUCTL_DTA,
172*4882a593Smuzhiyun 	PUCTL_DTB,
173*4882a593Smuzhiyun 	PUCTL_DTC,
174*4882a593Smuzhiyun 	PUCTL_DTD,
175*4882a593Smuzhiyun 	PUCTL_DTE,
176*4882a593Smuzhiyun 	PUCTL_DTF,
177*4882a593Smuzhiyun 	PUCTL_GPV,
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun 	/* 16: APB_MISC_PP_PULLUPDOWN_REG_B_0 */
180*4882a593Smuzhiyun 	PUCTL_RM,
181*4882a593Smuzhiyun 	PUCTL_I2CP,
182*4882a593Smuzhiyun 	PUCTL_PTA,
183*4882a593Smuzhiyun 	PUCTL_GPU7,
184*4882a593Smuzhiyun 	PUCTL_KBCA,
185*4882a593Smuzhiyun 	PUCTL_KBCB,
186*4882a593Smuzhiyun 	PUCTL_KBCC,
187*4882a593Smuzhiyun 	PUCTL_KBCD,
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun 	PUCTL_SPDI,
190*4882a593Smuzhiyun 	PUCTL_SPDO,
191*4882a593Smuzhiyun 	PUCTL_GPSLXAU,
192*4882a593Smuzhiyun 	PUCTL_CRTP,
193*4882a593Smuzhiyun 	PUCTL_SLXC,
194*4882a593Smuzhiyun 	PUCTL_SLXD,
195*4882a593Smuzhiyun 	PUCTL_SLXK,
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun 	/* 32: APB_MISC_PP_PULLUPDOWN_REG_C_0 */
198*4882a593Smuzhiyun 	PUCTL_CDEV1,
199*4882a593Smuzhiyun 	PUCTL_CDEV2,
200*4882a593Smuzhiyun 	PUCTL_SPIA,
201*4882a593Smuzhiyun 	PUCTL_SPIB,
202*4882a593Smuzhiyun 	PUCTL_SPIC,
203*4882a593Smuzhiyun 	PUCTL_SPID,
204*4882a593Smuzhiyun 	PUCTL_SPIE,
205*4882a593Smuzhiyun 	PUCTL_SPIF,
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun 	PUCTL_SPIG,
208*4882a593Smuzhiyun 	PUCTL_SPIH,
209*4882a593Smuzhiyun 	PUCTL_IRTX,
210*4882a593Smuzhiyun 	PUCTL_IRRX,
211*4882a593Smuzhiyun 	PUCTL_GME,
212*4882a593Smuzhiyun 	PUCTL_RESERVED45,
213*4882a593Smuzhiyun 	PUCTL_XM2D,
214*4882a593Smuzhiyun 	PUCTL_XM2C,
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun 	/* 48: APB_MISC_PP_PULLUPDOWN_REG_D_0 */
217*4882a593Smuzhiyun 	PUCTL_UAA,
218*4882a593Smuzhiyun 	PUCTL_UAB,
219*4882a593Smuzhiyun 	PUCTL_UAC,
220*4882a593Smuzhiyun 	PUCTL_UAD,
221*4882a593Smuzhiyun 	PUCTL_UCA,
222*4882a593Smuzhiyun 	PUCTL_UCB,
223*4882a593Smuzhiyun 	PUCTL_LD17,
224*4882a593Smuzhiyun 	PUCTL_LD19_18,
225*4882a593Smuzhiyun 
226*4882a593Smuzhiyun 	PUCTL_LD21_20,
227*4882a593Smuzhiyun 	PUCTL_LD23_22,
228*4882a593Smuzhiyun 	PUCTL_LS,
229*4882a593Smuzhiyun 	PUCTL_LC,
230*4882a593Smuzhiyun 	PUCTL_CSUS,
231*4882a593Smuzhiyun 	PUCTL_DDRC,
232*4882a593Smuzhiyun 	PUCTL_SDC,
233*4882a593Smuzhiyun 	PUCTL_SDD,
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun 	/* 64: APB_MISC_PP_PULLUPDOWN_REG_E_0 */
236*4882a593Smuzhiyun 	PUCTL_KBCF,
237*4882a593Smuzhiyun 	PUCTL_KBCE,
238*4882a593Smuzhiyun 	PUCTL_PMCA,
239*4882a593Smuzhiyun 	PUCTL_PMCB,
240*4882a593Smuzhiyun 	PUCTL_PMCC,
241*4882a593Smuzhiyun 	PUCTL_PMCD,
242*4882a593Smuzhiyun 	PUCTL_PMCE,
243*4882a593Smuzhiyun 	PUCTL_CK32,
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun 	PUCTL_UDA,
246*4882a593Smuzhiyun 	PUCTL_SDMMC1,
247*4882a593Smuzhiyun 	PUCTL_GMA,
248*4882a593Smuzhiyun 	PUCTL_GMB,
249*4882a593Smuzhiyun 	PUCTL_GMC,
250*4882a593Smuzhiyun 	PUCTL_GMD,
251*4882a593Smuzhiyun 	PUCTL_DDC,
252*4882a593Smuzhiyun 	PUCTL_OWC,
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun 	PUCTL_NONE = -1
255*4882a593Smuzhiyun };
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun /* Convenient macro for defining pin group properties */
258*4882a593Smuzhiyun #define PINALL(pingrp, f0, f1, f2, f3, mux, pupd)	\
259*4882a593Smuzhiyun 	{						\
260*4882a593Smuzhiyun 		.funcs = {				\
261*4882a593Smuzhiyun 			PMUX_FUNC_ ## f0,		\
262*4882a593Smuzhiyun 			PMUX_FUNC_ ## f1,		\
263*4882a593Smuzhiyun 			PMUX_FUNC_ ## f2,		\
264*4882a593Smuzhiyun 			PMUX_FUNC_ ## f3,		\
265*4882a593Smuzhiyun 		},					\
266*4882a593Smuzhiyun 		.ctl_id = mux,				\
267*4882a593Smuzhiyun 		.pull_id = pupd				\
268*4882a593Smuzhiyun 	}
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun /* A normal pin group where the mux name and pull-up name match */
271*4882a593Smuzhiyun #define PIN(pingrp, f0, f1, f2, f3) \
272*4882a593Smuzhiyun 	PINALL(pingrp, f0, f1, f2, f3, MUXCTL_##pingrp, PUCTL_##pingrp)
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun /* A pin group where the pull-up name doesn't have a 1-1 mapping */
275*4882a593Smuzhiyun #define PINP(pingrp, f0, f1, f2, f3, pupd) \
276*4882a593Smuzhiyun 	PINALL(pingrp, f0, f1, f2, f3, MUXCTL_##pingrp, PUCTL_##pupd)
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun /* A pin group number which is not used */
279*4882a593Smuzhiyun #define PIN_RESERVED \
280*4882a593Smuzhiyun 	PIN(NONE, RSVD1, RSVD2, RSVD3, RSVD4)
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define DRVGRP(drvgrp) \
283*4882a593Smuzhiyun 	PINALL(drvgrp, RSVD1, RSVD2, RSVD3, RSVD4, MUXCTL_NONE, PUCTL_NONE)
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun static const struct pmux_pingrp_desc tegra20_pingroups[] = {
286*4882a593Smuzhiyun 	PIN(ATA,    IDE,       NAND,      GMI,       RSVD4),
287*4882a593Smuzhiyun 	PIN(ATB,    IDE,       NAND,      GMI,       SDIO4),
288*4882a593Smuzhiyun 	PIN(ATC,    IDE,       NAND,      GMI,       SDIO4),
289*4882a593Smuzhiyun 	PIN(ATD,    IDE,       NAND,      GMI,       SDIO4),
290*4882a593Smuzhiyun 	PIN(CDEV1,  OSC,       PLLA_OUT,  PLLM_OUT1, AUDIO_SYNC),
291*4882a593Smuzhiyun 	PIN(CDEV2,  OSC,       AHB_CLK,   APB_CLK,   PLLP_OUT4),
292*4882a593Smuzhiyun 	PIN(CSUS,   PLLC_OUT1, PLLP_OUT2, PLLP_OUT3, VI_SENSOR_CLK),
293*4882a593Smuzhiyun 	PIN(DAP1,   DAP1,      RSVD2,     GMI,       SDIO2),
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun 	PIN(DAP2,   DAP2,      TWC,       RSVD3,     GMI),
296*4882a593Smuzhiyun 	PIN(DAP3,   DAP3,      RSVD2,     RSVD3,     RSVD4),
297*4882a593Smuzhiyun 	PIN(DAP4,   DAP4,      RSVD2,     GMI,       RSVD4),
298*4882a593Smuzhiyun 	PIN(DTA,    RSVD1,     SDIO2,     VI,        RSVD4),
299*4882a593Smuzhiyun 	PIN(DTB,    RSVD1,     RSVD2,     VI,        SPI1),
300*4882a593Smuzhiyun 	PIN(DTC,    RSVD1,     RSVD2,     VI,        RSVD4),
301*4882a593Smuzhiyun 	PIN(DTD,    RSVD1,     SDIO2,     VI,        RSVD4),
302*4882a593Smuzhiyun 	PIN(DTE,    RSVD1,     RSVD2,     VI,        SPI1),
303*4882a593Smuzhiyun 
304*4882a593Smuzhiyun 	PINP(GPU,   PWM,       UARTA,     GMI,       RSVD4,         GPSLXAU),
305*4882a593Smuzhiyun 	PIN(GPV,    PCIE,      RSVD2,     RSVD3,     RSVD4),
306*4882a593Smuzhiyun 	PIN(I2CP,   I2C,       RSVD2,     RSVD3,     RSVD4),
307*4882a593Smuzhiyun 	PIN(IRTX,   UARTA,     UARTB,     GMI,       SPI4),
308*4882a593Smuzhiyun 	PIN(IRRX,   UARTA,     UARTB,     GMI,       SPI4),
309*4882a593Smuzhiyun 	PIN(KBCB,   KBC,       NAND,      SDIO2,     MIO),
310*4882a593Smuzhiyun 	PIN(KBCA,   KBC,       NAND,      SDIO2,     EMC_TEST0_DLL),
311*4882a593Smuzhiyun 	PINP(PMC,   PWR_ON,    PWR_INTR,  RSVD3,     RSVD4,         NONE),
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun 	PIN(PTA,    I2C2,      HDMI,      GMI,       RSVD4),
314*4882a593Smuzhiyun 	PIN(RM,     I2C,       RSVD2,     RSVD3,     RSVD4),
315*4882a593Smuzhiyun 	PIN(KBCE,   KBC,       NAND,      OWR,       RSVD4),
316*4882a593Smuzhiyun 	PIN(KBCF,   KBC,       NAND,      TRACE,     MIO),
317*4882a593Smuzhiyun 	PIN(GMA,    UARTE,     SPI3,      GMI,       SDIO4),
318*4882a593Smuzhiyun 	PIN(GMC,    UARTD,     SPI4,      GMI,       SFLASH),
319*4882a593Smuzhiyun 	PIN(SDMMC1, SDIO1,     RSVD2,     UARTE,     UARTA),
320*4882a593Smuzhiyun 	PIN(OWC,    OWR,       RSVD2,     RSVD3,     RSVD4),
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun 	PIN(GME,    RSVD1,     DAP5,      GMI,       SDIO4),
323*4882a593Smuzhiyun 	PIN(SDC,    PWM,       TWC,       SDIO3,     SPI3),
324*4882a593Smuzhiyun 	PIN(SDD,    UARTA,     PWM,       SDIO3,     SPI3),
325*4882a593Smuzhiyun 	PIN_RESERVED,
326*4882a593Smuzhiyun 	PINP(SLXA,  PCIE,      SPI4,      SDIO3,     SPI2,          CRTP),
327*4882a593Smuzhiyun 	PIN(SLXC,   SPDIF,     SPI4,      SDIO3,     SPI2),
328*4882a593Smuzhiyun 	PIN(SLXD,   SPDIF,     SPI4,      SDIO3,     SPI2),
329*4882a593Smuzhiyun 	PIN(SLXK,   PCIE,      SPI4,      SDIO3,     SPI2),
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun 	PIN(SPDI,   SPDIF,     RSVD2,     I2C,       SDIO2),
332*4882a593Smuzhiyun 	PIN(SPDO,   SPDIF,     RSVD2,     I2C,       SDIO2),
333*4882a593Smuzhiyun 	PIN(SPIA,   SPI1,      SPI2,      SPI3,      GMI),
334*4882a593Smuzhiyun 	PIN(SPIB,   SPI1,      SPI2,      SPI3,      GMI),
335*4882a593Smuzhiyun 	PIN(SPIC,   SPI1,      SPI2,      SPI3,      GMI),
336*4882a593Smuzhiyun 	PIN(SPID,   SPI2,      SPI1,      SPI2_ALT,  GMI),
337*4882a593Smuzhiyun 	PIN(SPIE,   SPI2,      SPI1,      SPI2_ALT,  GMI),
338*4882a593Smuzhiyun 	PIN(SPIF,   SPI3,      SPI1,      SPI2,      RSVD4),
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun 	PIN(SPIG,   SPI3,      SPI2,      SPI2_ALT,  I2C),
341*4882a593Smuzhiyun 	PIN(SPIH,   SPI3,      SPI2,      SPI2_ALT,  I2C),
342*4882a593Smuzhiyun 	PIN(UAA,    SPI3,      MIPI_HS,   UARTA,     ULPI),
343*4882a593Smuzhiyun 	PIN(UAB,    SPI2,      MIPI_HS,   UARTA,     ULPI),
344*4882a593Smuzhiyun 	PIN(UAC,    OWR,       RSVD2,     RSVD3,     RSVD4),
345*4882a593Smuzhiyun 	PIN(UAD,    UARTB,     SPDIF,     UARTA,     SPI4),
346*4882a593Smuzhiyun 	PIN(UCA,    UARTC,     RSVD2,     GMI,       RSVD4),
347*4882a593Smuzhiyun 	PIN(UCB,    UARTC,     PWM,       GMI,       RSVD4),
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun 	PIN_RESERVED,
350*4882a593Smuzhiyun 	PIN(ATE,    IDE,       NAND,      GMI,       RSVD4),
351*4882a593Smuzhiyun 	PIN(KBCC,   KBC,       NAND,      TRACE,     EMC_TEST1_DLL),
352*4882a593Smuzhiyun 	PIN_RESERVED,
353*4882a593Smuzhiyun 	PIN_RESERVED,
354*4882a593Smuzhiyun 	PIN(GMB,    IDE,       NAND,      GMI,       GMI_INT),
355*4882a593Smuzhiyun 	PIN(GMD,    RSVD1,     NAND,      GMI,       SFLASH),
356*4882a593Smuzhiyun 	PIN(DDC,    I2C2,      RSVD2,     RSVD3,     RSVD4),
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun 	/* 64 */
359*4882a593Smuzhiyun 	PINP(LD0,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
360*4882a593Smuzhiyun 	PINP(LD1,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
361*4882a593Smuzhiyun 	PINP(LD2,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
362*4882a593Smuzhiyun 	PINP(LD3,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
363*4882a593Smuzhiyun 	PINP(LD4,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
364*4882a593Smuzhiyun 	PINP(LD5,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
365*4882a593Smuzhiyun 	PINP(LD6,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
366*4882a593Smuzhiyun 	PINP(LD7,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun 	PINP(LD8,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
369*4882a593Smuzhiyun 	PINP(LD9,   DISPA,     DISPB,     XIO,       RSVD4,         LD17),
370*4882a593Smuzhiyun 	PINP(LD10,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
371*4882a593Smuzhiyun 	PINP(LD11,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
372*4882a593Smuzhiyun 	PINP(LD12,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
373*4882a593Smuzhiyun 	PINP(LD13,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
374*4882a593Smuzhiyun 	PINP(LD14,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
375*4882a593Smuzhiyun 	PINP(LD15,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun 	PINP(LD16,  DISPA,     DISPB,     XIO,       RSVD4,         LD17),
378*4882a593Smuzhiyun 	PINP(LD17,  DISPA,     DISPB,     RSVD3,     RSVD4,         LD17),
379*4882a593Smuzhiyun 	PINP(LHP0,  DISPA,     DISPB,     RSVD3,     RSVD4,         LD21_20),
380*4882a593Smuzhiyun 	PINP(LHP1,  DISPA,     DISPB,     RSVD3,     RSVD4,         LD19_18),
381*4882a593Smuzhiyun 	PINP(LHP2,  DISPA,     DISPB,     RSVD3,     RSVD4,         LD19_18),
382*4882a593Smuzhiyun 	PINP(LVP0,  DISPA,     DISPB,     RSVD3,     RSVD4,         LC),
383*4882a593Smuzhiyun 	PINP(LVP1,  DISPA,     DISPB,     RSVD3,     RSVD4,         LD21_20),
384*4882a593Smuzhiyun 	PINP(HDINT, HDMI,      RSVD2,     RSVD3,     RSVD4,         LC),
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun 	PINP(LM0,   DISPA,     DISPB,     SPI3,      RSVD4,         LC),
387*4882a593Smuzhiyun 	PINP(LM1,   DISPA,     DISPB,     RSVD3,     CRT,           LC),
388*4882a593Smuzhiyun 	PINP(LVS,   DISPA,     DISPB,     XIO,       RSVD4,         LC),
389*4882a593Smuzhiyun 	PINP(LSC0,  DISPA,     DISPB,     XIO,       RSVD4,         LC),
390*4882a593Smuzhiyun 	PINP(LSC1,  DISPA,     DISPB,     SPI3,      HDMI,          LS),
391*4882a593Smuzhiyun 	PINP(LSCK,  DISPA,     DISPB,     SPI3,      HDMI,          LS),
392*4882a593Smuzhiyun 	PINP(LDC,   DISPA,     DISPB,     RSVD3,     RSVD4,         LS),
393*4882a593Smuzhiyun 	PINP(LCSN,  DISPA,     DISPB,     SPI3,      RSVD4,         LS),
394*4882a593Smuzhiyun 
395*4882a593Smuzhiyun 	/* 96 */
396*4882a593Smuzhiyun 	PINP(LSPI,  DISPA,     DISPB,     XIO,       HDMI,          LC),
397*4882a593Smuzhiyun 	PINP(LSDA,  DISPA,     DISPB,     SPI3,      HDMI,          LS),
398*4882a593Smuzhiyun 	PINP(LSDI,  DISPA,     DISPB,     SPI3,      RSVD4,         LS),
399*4882a593Smuzhiyun 	PINP(LPW0,  DISPA,     DISPB,     SPI3,      HDMI,          LS),
400*4882a593Smuzhiyun 	PINP(LPW1,  DISPA,     DISPB,     RSVD3,     RSVD4,         LS),
401*4882a593Smuzhiyun 	PINP(LPW2,  DISPA,     DISPB,     SPI3,      HDMI,          LS),
402*4882a593Smuzhiyun 	PINP(LDI,   DISPA,     DISPB,     RSVD3,     RSVD4,         LD23_22),
403*4882a593Smuzhiyun 	PINP(LHS,   DISPA,     DISPB,     XIO,       RSVD4,         LC),
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun 	PINP(LPP,   DISPA,     DISPB,     RSVD3,     RSVD4,         LD23_22),
406*4882a593Smuzhiyun 	PIN_RESERVED,
407*4882a593Smuzhiyun 	PIN(KBCD,   KBC,       NAND,      SDIO2,     MIO),
408*4882a593Smuzhiyun 	PIN(GPU7,   RTCK,      RSVD2,     RSVD3,     RSVD4),
409*4882a593Smuzhiyun 	PIN(DTF,    I2C3,      RSVD2,     VI,        RSVD4),
410*4882a593Smuzhiyun 	PIN(UDA,    SPI1,      RSVD2,     UARTD,     ULPI),
411*4882a593Smuzhiyun 	PIN(CRTP,   CRT,       RSVD2,     RSVD3,     RSVD4),
412*4882a593Smuzhiyun 	PINP(SDB,   UARTA,     PWM,       SDIO3,     SPI2,          NONE),
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun 	/* these pin groups only have pullup and pull down control */
415*4882a593Smuzhiyun 	DRVGRP(CK32),
416*4882a593Smuzhiyun 	DRVGRP(DDRC),
417*4882a593Smuzhiyun 	DRVGRP(PMCA),
418*4882a593Smuzhiyun 	DRVGRP(PMCB),
419*4882a593Smuzhiyun 	DRVGRP(PMCC),
420*4882a593Smuzhiyun 	DRVGRP(PMCD),
421*4882a593Smuzhiyun 	DRVGRP(PMCE),
422*4882a593Smuzhiyun 	DRVGRP(XM2C),
423*4882a593Smuzhiyun 	DRVGRP(XM2D),
424*4882a593Smuzhiyun };
425*4882a593Smuzhiyun const struct pmux_pingrp_desc *tegra_soc_pingroups = tegra20_pingroups;
426