1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  *  (C) Copyright 2010,2011
4  *  NVIDIA Corporation <www.nvidia.com>
5  */
6 
7 #ifndef _TEGRA20_PINMUX_H_
8 #define _TEGRA20_PINMUX_H_
9 
10 /*
11  * Pin groups which we adjust. There are three basic attributes of each pin
12  * group which use this enum:
13  *
14  *	- function
15  *	- pullup / pulldown
16  *	- tristate or normal
17  */
18 enum pmux_pingrp {
19 	/* APB_MISC_PP_TRISTATE_REG_A_0 */
20 	PMUX_PINGRP_ATA,
21 	PMUX_PINGRP_ATB,
22 	PMUX_PINGRP_ATC,
23 	PMUX_PINGRP_ATD,
24 	PMUX_PINGRP_CDEV1,
25 	PMUX_PINGRP_CDEV2,
26 	PMUX_PINGRP_CSUS,
27 	PMUX_PINGRP_DAP1,
28 
29 	PMUX_PINGRP_DAP2,
30 	PMUX_PINGRP_DAP3,
31 	PMUX_PINGRP_DAP4,
32 	PMUX_PINGRP_DTA,
33 	PMUX_PINGRP_DTB,
34 	PMUX_PINGRP_DTC,
35 	PMUX_PINGRP_DTD,
36 	PMUX_PINGRP_DTE,
37 
38 	PMUX_PINGRP_GPU,
39 	PMUX_PINGRP_GPV,
40 	PMUX_PINGRP_I2CP,
41 	PMUX_PINGRP_IRTX,
42 	PMUX_PINGRP_IRRX,
43 	PMUX_PINGRP_KBCB,
44 	PMUX_PINGRP_KBCA,
45 	PMUX_PINGRP_PMC,
46 
47 	PMUX_PINGRP_PTA,
48 	PMUX_PINGRP_RM,
49 	PMUX_PINGRP_KBCE,
50 	PMUX_PINGRP_KBCF,
51 	PMUX_PINGRP_GMA,
52 	PMUX_PINGRP_GMC,
53 	PMUX_PINGRP_SDIO1,
54 	PMUX_PINGRP_OWC,
55 
56 	/* 32: APB_MISC_PP_TRISTATE_REG_B_0 */
57 	PMUX_PINGRP_GME,
58 	PMUX_PINGRP_SDC,
59 	PMUX_PINGRP_SDD,
60 	PMUX_PINGRP_RESERVED0,
61 	PMUX_PINGRP_SLXA,
62 	PMUX_PINGRP_SLXC,
63 	PMUX_PINGRP_SLXD,
64 	PMUX_PINGRP_SLXK,
65 
66 	PMUX_PINGRP_SPDI,
67 	PMUX_PINGRP_SPDO,
68 	PMUX_PINGRP_SPIA,
69 	PMUX_PINGRP_SPIB,
70 	PMUX_PINGRP_SPIC,
71 	PMUX_PINGRP_SPID,
72 	PMUX_PINGRP_SPIE,
73 	PMUX_PINGRP_SPIF,
74 
75 	PMUX_PINGRP_SPIG,
76 	PMUX_PINGRP_SPIH,
77 	PMUX_PINGRP_UAA,
78 	PMUX_PINGRP_UAB,
79 	PMUX_PINGRP_UAC,
80 	PMUX_PINGRP_UAD,
81 	PMUX_PINGRP_UCA,
82 	PMUX_PINGRP_UCB,
83 
84 	PMUX_PINGRP_RESERVED1,
85 	PMUX_PINGRP_ATE,
86 	PMUX_PINGRP_KBCC,
87 	PMUX_PINGRP_RESERVED2,
88 	PMUX_PINGRP_RESERVED3,
89 	PMUX_PINGRP_GMB,
90 	PMUX_PINGRP_GMD,
91 	PMUX_PINGRP_DDC,
92 
93 	/* 64: APB_MISC_PP_TRISTATE_REG_C_0 */
94 	PMUX_PINGRP_LD0,
95 	PMUX_PINGRP_LD1,
96 	PMUX_PINGRP_LD2,
97 	PMUX_PINGRP_LD3,
98 	PMUX_PINGRP_LD4,
99 	PMUX_PINGRP_LD5,
100 	PMUX_PINGRP_LD6,
101 	PMUX_PINGRP_LD7,
102 
103 	PMUX_PINGRP_LD8,
104 	PMUX_PINGRP_LD9,
105 	PMUX_PINGRP_LD10,
106 	PMUX_PINGRP_LD11,
107 	PMUX_PINGRP_LD12,
108 	PMUX_PINGRP_LD13,
109 	PMUX_PINGRP_LD14,
110 	PMUX_PINGRP_LD15,
111 
112 	PMUX_PINGRP_LD16,
113 	PMUX_PINGRP_LD17,
114 	PMUX_PINGRP_LHP0,
115 	PMUX_PINGRP_LHP1,
116 	PMUX_PINGRP_LHP2,
117 	PMUX_PINGRP_LVP0,
118 	PMUX_PINGRP_LVP1,
119 	PMUX_PINGRP_HDINT,
120 
121 	PMUX_PINGRP_LM0,
122 	PMUX_PINGRP_LM1,
123 	PMUX_PINGRP_LVS,
124 	PMUX_PINGRP_LSC0,
125 	PMUX_PINGRP_LSC1,
126 	PMUX_PINGRP_LSCK,
127 	PMUX_PINGRP_LDC,
128 	PMUX_PINGRP_LCSN,
129 
130 	/* 96: APB_MISC_PP_TRISTATE_REG_D_0 */
131 	PMUX_PINGRP_LSPI,
132 	PMUX_PINGRP_LSDA,
133 	PMUX_PINGRP_LSDI,
134 	PMUX_PINGRP_LPW0,
135 	PMUX_PINGRP_LPW1,
136 	PMUX_PINGRP_LPW2,
137 	PMUX_PINGRP_LDI,
138 	PMUX_PINGRP_LHS,
139 
140 	PMUX_PINGRP_LPP,
141 	PMUX_PINGRP_RESERVED4,
142 	PMUX_PINGRP_KBCD,
143 	PMUX_PINGRP_GPU7,
144 	PMUX_PINGRP_DTF,
145 	PMUX_PINGRP_UDA,
146 	PMUX_PINGRP_CRTP,
147 	PMUX_PINGRP_SDB,
148 
149 	/* these pin groups only have pullup and pull down control */
150 	PMUX_PINGRP_CK32,
151 	PMUX_PINGRP_DDRC,
152 	PMUX_PINGRP_PMCA,
153 	PMUX_PINGRP_PMCB,
154 	PMUX_PINGRP_PMCC,
155 	PMUX_PINGRP_PMCD,
156 	PMUX_PINGRP_PMCE,
157 	PMUX_PINGRP_XM2C,
158 	PMUX_PINGRP_XM2D,
159 	PMUX_PINGRP_COUNT,
160 };
161 
162 /*
163  * Functions which can be assigned to each of the pin groups. The values here
164  * bear no relation to the values programmed into pinmux registers and are
165  * purely a convenience. The translation is done through a table search.
166  */
167 enum pmux_func {
168 	PMUX_FUNC_DEFAULT,
169 	PMUX_FUNC_AHB_CLK,
170 	PMUX_FUNC_APB_CLK,
171 	PMUX_FUNC_AUDIO_SYNC,
172 	PMUX_FUNC_CRT,
173 	PMUX_FUNC_DAP1,
174 	PMUX_FUNC_DAP2,
175 	PMUX_FUNC_DAP3,
176 	PMUX_FUNC_DAP4,
177 	PMUX_FUNC_DAP5,
178 	PMUX_FUNC_DISPA,
179 	PMUX_FUNC_DISPB,
180 	PMUX_FUNC_EMC_TEST0_DLL,
181 	PMUX_FUNC_EMC_TEST1_DLL,
182 	PMUX_FUNC_GMI,
183 	PMUX_FUNC_GMI_INT,
184 	PMUX_FUNC_HDMI,
185 	PMUX_FUNC_I2C,
186 	PMUX_FUNC_I2C2,
187 	PMUX_FUNC_I2C3,
188 	PMUX_FUNC_IDE,
189 	PMUX_FUNC_KBC,
190 	PMUX_FUNC_MIO,
191 	PMUX_FUNC_MIPI_HS,
192 	PMUX_FUNC_NAND,
193 	PMUX_FUNC_OSC,
194 	PMUX_FUNC_OWR,
195 	PMUX_FUNC_PCIE,
196 	PMUX_FUNC_PLLA_OUT,
197 	PMUX_FUNC_PLLC_OUT1,
198 	PMUX_FUNC_PLLM_OUT1,
199 	PMUX_FUNC_PLLP_OUT2,
200 	PMUX_FUNC_PLLP_OUT3,
201 	PMUX_FUNC_PLLP_OUT4,
202 	PMUX_FUNC_PWM,
203 	PMUX_FUNC_PWR_INTR,
204 	PMUX_FUNC_PWR_ON,
205 	PMUX_FUNC_RTCK,
206 	PMUX_FUNC_SDIO1,
207 	PMUX_FUNC_SDIO2,
208 	PMUX_FUNC_SDIO3,
209 	PMUX_FUNC_SDIO4,
210 	PMUX_FUNC_SFLASH,
211 	PMUX_FUNC_SPDIF,
212 	PMUX_FUNC_SPI1,
213 	PMUX_FUNC_SPI2,
214 	PMUX_FUNC_SPI2_ALT,
215 	PMUX_FUNC_SPI3,
216 	PMUX_FUNC_SPI4,
217 	PMUX_FUNC_TRACE,
218 	PMUX_FUNC_TWC,
219 	PMUX_FUNC_UARTA,
220 	PMUX_FUNC_UARTB,
221 	PMUX_FUNC_UARTC,
222 	PMUX_FUNC_UARTD,
223 	PMUX_FUNC_UARTE,
224 	PMUX_FUNC_ULPI,
225 	PMUX_FUNC_VI,
226 	PMUX_FUNC_VI_SENSOR_CLK,
227 	PMUX_FUNC_XIO,
228 	PMUX_FUNC_RSVD1,
229 	PMUX_FUNC_RSVD2,
230 	PMUX_FUNC_RSVD3,
231 	PMUX_FUNC_RSVD4,
232 	PMUX_FUNC_COUNT,
233 };
234 
235 #define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868
236 #include <asm/arch-tegra/pinmux.h>
237 
238 #endif /* _TEGRA20_PINMUX_H_ */
239