ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / pinmux-defines.h
1 /*
2  * pinmux-defines.h: Definition of the pinmux enus and structures
3  *
4  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
5  *
6  * This software is licensed under the terms of the GNU General Public
7  * License version 2, as published by the Free Software Foundation, and
8  * may be copied, distributed, and modified under those terms.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  */
16
17 #ifndef __MACH_TEGRA_PINMUX_DEFINES_H__
18 #define __MACH_TEGRA_PINMUX_DEFINES_H__
19
20 #define TEGRA_MUX_LIST \
21         TEGRA_MUX(NONE) \
22         TEGRA_MUX(AHB_CLK) \
23         TEGRA_MUX(APB_CLK) \
24         TEGRA_MUX(AUDIO_SYNC) \
25         TEGRA_MUX(CRT) \
26         TEGRA_MUX(DAP1) \
27         TEGRA_MUX(DAP2) \
28         TEGRA_MUX(DAP3) \
29         TEGRA_MUX(DAP4) \
30         TEGRA_MUX(DAP5) \
31         TEGRA_MUX(DISPLAYA) \
32         TEGRA_MUX(DISPLAYA_ALT) \
33         TEGRA_MUX(DISPLAYB) \
34         TEGRA_MUX(EMC_TEST0_DLL) \
35         TEGRA_MUX(EMC_TEST1_DLL) \
36         TEGRA_MUX(GMI) \
37         TEGRA_MUX(GMI_INT) \
38         TEGRA_MUX(HDMI) \
39         TEGRA_MUX(I2C1) \
40         TEGRA_MUX(I2C2) \
41         TEGRA_MUX(I2C3) \
42         TEGRA_MUX(IDE) \
43         TEGRA_MUX(IRDA) \
44         TEGRA_MUX(KBC) \
45         TEGRA_MUX(MIO) \
46         TEGRA_MUX(MIPI_HS) \
47         TEGRA_MUX(NAND) \
48         TEGRA_MUX(OSC) \
49         TEGRA_MUX(OWR) \
50         TEGRA_MUX(PCIE) \
51         TEGRA_MUX(PLLA_OUT) \
52         TEGRA_MUX(PLLC_OUT1) \
53         TEGRA_MUX(PLLM_OUT1) \
54         TEGRA_MUX(PLLP_OUT2) \
55         TEGRA_MUX(PLLP_OUT3) \
56         TEGRA_MUX(PLLP_OUT4) \
57         TEGRA_MUX(PWM) \
58         TEGRA_MUX(PWR_INTR) \
59         TEGRA_MUX(PWR_ON) \
60         TEGRA_MUX(RTCK) \
61         TEGRA_MUX(SDIO1) \
62         TEGRA_MUX(SDIO2) \
63         TEGRA_MUX(SDIO3) \
64         TEGRA_MUX(SDIO4) \
65         TEGRA_MUX(SFLASH) \
66         TEGRA_MUX(SPDIF) \
67         TEGRA_MUX(SPI1) \
68         TEGRA_MUX(SPI2) \
69         TEGRA_MUX(SPI2_ALT) \
70         TEGRA_MUX(SPI3) \
71         TEGRA_MUX(SPI4) \
72         TEGRA_MUX(TRACE) \
73         TEGRA_MUX(TWC) \
74         TEGRA_MUX(UARTA) \
75         TEGRA_MUX(UARTB) \
76         TEGRA_MUX(UARTC) \
77         TEGRA_MUX(UARTD) \
78         TEGRA_MUX(UARTE) \
79         TEGRA_MUX(ULPI) \
80         TEGRA_MUX(VI) \
81         TEGRA_MUX(VI_SENSOR_CLK) \
82         TEGRA_MUX(XIO) \
83         /* End of Tegra2 MUX selectors */ \
84         TEGRA_MUX(BLINK) \
85         TEGRA_MUX(CEC) \
86         TEGRA_MUX(CLK12) \
87         TEGRA_MUX(DAP) \
88         TEGRA_MUX(DAPSDMMC2) \
89         TEGRA_MUX(DDR) \
90         TEGRA_MUX(DEV3) \
91         TEGRA_MUX(DTV) \
92         TEGRA_MUX(VI_ALT1) \
93         TEGRA_MUX(VI_ALT2) \
94         TEGRA_MUX(VI_ALT3) \
95         TEGRA_MUX(EMC_DLL) \
96         TEGRA_MUX(EXTPERIPH1) \
97         TEGRA_MUX(EXTPERIPH2) \
98         TEGRA_MUX(EXTPERIPH3) \
99         TEGRA_MUX(GMI_ALT) \
100         TEGRA_MUX(HDA) \
101         TEGRA_MUX(HSI) \
102         TEGRA_MUX(I2C4) \
103         TEGRA_MUX(I2C5) \
104         TEGRA_MUX(I2CPWR) \
105         TEGRA_MUX(I2S0) \
106         TEGRA_MUX(I2S1) \
107         TEGRA_MUX(I2S2) \
108         TEGRA_MUX(I2S3) \
109         TEGRA_MUX(I2S4) \
110         TEGRA_MUX(NAND_ALT) \
111         TEGRA_MUX(POPSDIO4) \
112         TEGRA_MUX(POPSDMMC4) \
113         TEGRA_MUX(PWM0) \
114         TEGRA_MUX(PWM1) \
115         TEGRA_MUX(PWM2) \
116         TEGRA_MUX(PWM3) \
117         TEGRA_MUX(SATA) \
118         TEGRA_MUX(SPI5) \
119         TEGRA_MUX(SPI6) \
120         TEGRA_MUX(SYSCLK) \
121         TEGRA_MUX(VGP1) \
122         TEGRA_MUX(VGP2) \
123         TEGRA_MUX(VGP3) \
124         TEGRA_MUX(VGP4) \
125         TEGRA_MUX(VGP5) \
126         TEGRA_MUX(VGP6) \
127         /* End of Tegra3 MUX selectors */ \
128         TEGRA_MUX(USB) \
129         TEGRA_MUX(SOC) \
130         TEGRA_MUX(CPU) \
131         TEGRA_MUX(CLK) \
132         TEGRA_MUX(PWRON) \
133         TEGRA_MUX(PMI) \
134         TEGRA_MUX(CLDVFS) \
135         TEGRA_MUX(RESET_OUT_N) \
136         TEGRA_MUX(I2C6) \
137         TEGRA_MUX(DMIC0) \
138         TEGRA_MUX(DMIC1) \
139         TEGRA_MUX(DDR0) \
140         /* End of Tegra114 MUX selectors */\
141         TEGRA_MUX(BCL)  \
142         TEGRA_MUX(PG)   \
143         TEGRA_MUX(VIMCLK2) \
144         TEGRA_MUX(VIMCLK2_ALT) \
145         TEGRA_MUX(VIMCLK2_ALT_ALT) \
146         TEGRA_MUX(SOC_ALT)      \
147         /* End of Tegra148 MUX selectors */\
148         TEGRA_MUX(SYS) \
149         TEGRA_MUX(CCLA) \
150         TEGRA_MUX(TMDS) \
151         TEGRA_MUX(DP) \
152         TEGRA_MUX(PE) \
153         TEGRA_MUX(PE0) \
154         TEGRA_MUX(PE1) \
155         /* End of Tegra124 MUX selectors */\
156
157 enum tegra_mux_func {
158 #define TEGRA_MUX(mux) TEGRA_MUX_##mux,
159         TEGRA_MUX_LIST
160 #undef  TEGRA_MUX
161         TEGRA_MUX_SAFE,         /* "Safe" default mux selector */
162         TEGRA_MAX_MUX,          /* Number of mux selectors */
163         TEGRA_MUX_TEGRA2_LAST = TEGRA_MUX_XIO,
164         TEGRA_MUX_TEGRA3_LAST = TEGRA_MUX_VGP6,
165
166         /* Mux selector aliases */
167         TEGRA_MUX_I2C    = TEGRA_MUX_I2C1,
168         TEGRA_MUX_SDMMC1 = TEGRA_MUX_SDIO1,
169         TEGRA_MUX_SDMMC2 = TEGRA_MUX_SDIO2,
170         TEGRA_MUX_SDMMC2B = TEGRA_MUX_SDIO2,
171         TEGRA_MUX_SDMMC3 = TEGRA_MUX_SDIO3,
172         TEGRA_MUX_SDMMC4 = TEGRA_MUX_SDIO4,
173
174         /* Special mux selector values */
175         TEGRA_MUX_INVALID = 0x4000,
176         TEGRA_MUX_RSVD  = 0x8000,
177         TEGRA_MUX_RSVD0 = TEGRA_MUX_RSVD,
178         TEGRA_MUX_RSVD1 = 0x8001,
179         TEGRA_MUX_RSVD2 = 0x8002,
180         TEGRA_MUX_RSVD3 = 0x8003,
181         TEGRA_MUX_RSVD4 = 0x8004,
182 };
183
184 enum tegra_pullupdown {
185         TEGRA_PUPD_NORMAL = 0,
186         TEGRA_PUPD_PULL_DOWN,
187         TEGRA_PUPD_PULL_UP,
188 };
189
190 enum tegra_tristate {
191         TEGRA_TRI_NORMAL = 0,
192         TEGRA_TRI_TRISTATE = 1,
193 };
194
195 enum tegra_pin_io {
196         TEGRA_PIN_OUTPUT = 0,
197         TEGRA_PIN_INPUT = 1,
198 };
199
200 enum tegra_pin_lock {
201         TEGRA_PIN_LOCK_DEFAULT = 0,
202         TEGRA_PIN_LOCK_DISABLE,
203         TEGRA_PIN_LOCK_ENABLE,
204 };
205
206 enum tegra_pin_od {
207         TEGRA_PIN_OD_DEFAULT = 0,
208         TEGRA_PIN_OD_DISABLE,
209         TEGRA_PIN_OD_ENABLE,
210 };
211
212 enum tegra_pin_ioreset {
213         TEGRA_PIN_IO_RESET_DEFAULT = 0,
214         TEGRA_PIN_IO_RESET_DISABLE,
215         TEGRA_PIN_IO_RESET_ENABLE,
216 };
217
218 enum tegra_pin_rcv_sel {
219         TEGRA_PIN_RCV_SEL_DEFAULT = 0,
220         TEGRA_PIN_RCV_SEL_NORMAL,
221         TEGRA_PIN_RCV_SEL_HIGH,
222 };
223
224 enum tegra_vddio {
225         TEGRA_VDDIO_BB = 0,
226         TEGRA_VDDIO_LCD,
227         TEGRA_VDDIO_VI,
228         TEGRA_VDDIO_UART,
229         TEGRA_VDDIO_DDR,
230         TEGRA_VDDIO_NAND,
231         TEGRA_VDDIO_SYS,
232         TEGRA_VDDIO_AUDIO,
233         TEGRA_VDDIO_SD,
234         TEGRA_VDDIO_CAM,
235         TEGRA_VDDIO_GMI,
236         TEGRA_VDDIO_PEXCTL,
237         TEGRA_VDDIO_SDMMC1,
238         TEGRA_VDDIO_SDMMC3,
239         TEGRA_VDDIO_SDMMC4,
240         TEGRA_VDDIO_HV,
241 };
242
243 struct tegra_pingroup_config {
244         int pingroup;
245         enum tegra_mux_func     func;
246         enum tegra_pullupdown   pupd;
247         enum tegra_tristate     tristate;
248         enum tegra_pin_io       io;
249         enum tegra_pin_lock     lock;
250         enum tegra_pin_od       od;
251         enum tegra_pin_ioreset  ioreset;
252         enum tegra_pin_rcv_sel  rcv_sel;
253 };
254
255 enum tegra_slew {
256         TEGRA_SLEW_FASTEST = 0,
257         TEGRA_SLEW_FAST,
258         TEGRA_SLEW_SLOW,
259         TEGRA_SLEW_SLOWEST,
260         TEGRA_MAX_SLEW,
261 };
262
263 enum tegra_pull_strength {
264         TEGRA_PULL_0 = 0,
265         TEGRA_PULL_1,
266         TEGRA_PULL_2,
267         TEGRA_PULL_3,
268         TEGRA_PULL_4,
269         TEGRA_PULL_5,
270         TEGRA_PULL_6,
271         TEGRA_PULL_7,
272         TEGRA_PULL_8,
273         TEGRA_PULL_9,
274         TEGRA_PULL_10,
275         TEGRA_PULL_11,
276         TEGRA_PULL_12,
277         TEGRA_PULL_13,
278         TEGRA_PULL_14,
279         TEGRA_PULL_15,
280         TEGRA_PULL_16,
281         TEGRA_PULL_17,
282         TEGRA_PULL_18,
283         TEGRA_PULL_19,
284         TEGRA_PULL_20,
285         TEGRA_PULL_21,
286         TEGRA_PULL_22,
287         TEGRA_PULL_23,
288         TEGRA_PULL_24,
289         TEGRA_PULL_25,
290         TEGRA_PULL_26,
291         TEGRA_PULL_27,
292         TEGRA_PULL_28,
293         TEGRA_PULL_29,
294         TEGRA_PULL_30,
295         TEGRA_PULL_31,
296         TEGRA_PULL_32,
297         TEGRA_PULL_33,
298         TEGRA_PULL_34,
299         TEGRA_PULL_35,
300         TEGRA_PULL_36,
301         TEGRA_PULL_37,
302         TEGRA_PULL_38,
303         TEGRA_PULL_39,
304         TEGRA_PULL_40,
305         TEGRA_PULL_41,
306         TEGRA_PULL_42,
307         TEGRA_PULL_43,
308         TEGRA_PULL_44,
309         TEGRA_PULL_45,
310         TEGRA_PULL_46,
311         TEGRA_PULL_47,
312         TEGRA_PULL_48,
313         TEGRA_PULL_49,
314         TEGRA_PULL_50,
315         TEGRA_PULL_51,
316         TEGRA_PULL_52,
317         TEGRA_PULL_53,
318         TEGRA_PULL_54,
319         TEGRA_PULL_55,
320         TEGRA_PULL_56,
321         TEGRA_PULL_57,
322         TEGRA_PULL_58,
323         TEGRA_PULL_59,
324         TEGRA_PULL_60,
325         TEGRA_PULL_61,
326         TEGRA_PULL_62,
327         TEGRA_PULL_63,
328         TEGRA_PULL_64,
329         TEGRA_PULL_65,
330         TEGRA_PULL_66,
331         TEGRA_PULL_67,
332         TEGRA_PULL_68,
333         TEGRA_PULL_69,
334         TEGRA_PULL_70,
335         TEGRA_PULL_71,
336         TEGRA_PULL_72,
337         TEGRA_PULL_73,
338         TEGRA_PULL_74,
339         TEGRA_PULL_75,
340         TEGRA_PULL_76,
341         TEGRA_PULL_77,
342         TEGRA_PULL_78,
343         TEGRA_PULL_79,
344         TEGRA_PULL_80,
345         TEGRA_PULL_81,
346         TEGRA_PULL_82,
347         TEGRA_PULL_83,
348         TEGRA_PULL_84,
349         TEGRA_PULL_85,
350         TEGRA_PULL_86,
351         TEGRA_PULL_87,
352         TEGRA_PULL_88,
353         TEGRA_PULL_89,
354         TEGRA_PULL_90,
355         TEGRA_PULL_91,
356         TEGRA_PULL_92,
357         TEGRA_PULL_93,
358         TEGRA_PULL_94,
359         TEGRA_PULL_95,
360         TEGRA_PULL_96,
361         TEGRA_PULL_97,
362         TEGRA_PULL_98,
363         TEGRA_PULL_99,
364         TEGRA_PULL_100,
365         TEGRA_PULL_101,
366         TEGRA_PULL_102,
367         TEGRA_PULL_103,
368         TEGRA_PULL_104,
369         TEGRA_PULL_105,
370         TEGRA_PULL_106,
371         TEGRA_PULL_107,
372         TEGRA_PULL_108,
373         TEGRA_PULL_109,
374         TEGRA_PULL_110,
375         TEGRA_PULL_111,
376         TEGRA_PULL_112,
377         TEGRA_PULL_113,
378         TEGRA_PULL_114,
379         TEGRA_PULL_115,
380         TEGRA_PULL_116,
381         TEGRA_PULL_117,
382         TEGRA_PULL_118,
383         TEGRA_PULL_119,
384         TEGRA_PULL_120,
385         TEGRA_PULL_121,
386         TEGRA_PULL_122,
387         TEGRA_PULL_123,
388         TEGRA_PULL_124,
389         TEGRA_PULL_125,
390         TEGRA_PULL_126,
391         TEGRA_PULL_127,
392         TEGRA_MAX_PULL,
393 };
394
395 enum tegra_drive {
396         TEGRA_DRIVE_DIV_8 = 0,
397         TEGRA_DRIVE_DIV_4,
398         TEGRA_DRIVE_DIV_2,
399         TEGRA_DRIVE_DIV_1,
400         TEGRA_MAX_DRIVE,
401 };
402
403 enum tegra_drive_type {
404         TEGRA_DRIVE_TYPE_0 = 0,
405         TEGRA_DRIVE_TYPE_1,
406         TEGRA_DRIVE_TYPE_2,
407         TEGRA_DRIVE_TYPE_3,
408         TEGRA_MAX_DRIVE_TYPE,
409 };
410
411 enum tegra_hsm {
412         TEGRA_HSM_DISABLE = 0,
413         TEGRA_HSM_ENABLE,
414 };
415
416 enum tegra_schmitt {
417         TEGRA_SCHMITT_DISABLE = 0,
418         TEGRA_SCHMITT_ENABLE,
419 };
420
421 struct tegra_drive_pingroup_config {
422         int pingroup;
423         enum tegra_hsm hsm;
424         enum tegra_schmitt schmitt;
425         enum tegra_drive drive;
426         enum tegra_pull_strength pull_down;
427         enum tegra_pull_strength pull_up;
428         enum tegra_slew slew_rising;
429         enum tegra_slew slew_falling;
430         enum tegra_drive_type drive_type;
431 };
432
433 #endif