bb28e278dc894d5b400c905127b8633e5d53b5fd
[linux-2.6.git] / arch / arm / mach-tegra / board-p1852-pinmux.c
1 /*
2  * arch/arm/mach-tegra/board-p1852-pinmux.c
3  *
4  * Copyright (C) 2010-2012 NVIDIA Corporation
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 #include <linux/kernel.h>
18 #include <linux/init.h>
19 #include <mach/pinmux.h>
20 #include "board.h"
21 #include "board-p1852.h"
22 #include "gpio-names.h"
23
24 #define DEFAULT_DRIVE(_name)                                    \
25         {                                                       \
26                 .pingroup = TEGRA_DRIVE_PINGROUP_##_name,       \
27                 .hsm = TEGRA_HSM_DISABLE,                       \
28                 .schmitt = TEGRA_SCHMITT_ENABLE,                \
29                 .drive = TEGRA_DRIVE_DIV_1,                     \
30                 .pull_down = TEGRA_PULL_31,                     \
31                 .pull_up = TEGRA_PULL_31,                       \
32                 .slew_rising = TEGRA_SLEW_SLOWEST,              \
33                 .slew_falling = TEGRA_SLEW_SLOWEST,             \
34         }
35 /* Setting the drive strength of pins
36  * hsm: Enable High speed mode (ENABLE/DISABLE)
37  * Schimit: Enable/disable schimit (ENABLE/DISABLE)
38  * drive: low power mode (DIV_1, DIV_2, DIV_4, DIV_8)
39  * pulldn_drive - drive down (falling edge) - Driver Output Pull-Down drive
40  *                strength code. Value from 0 to 31.
41  * pullup_drive - drive up (rising edge)  - Driver Output Pull-Up drive
42  *                strength code. Value from 0 to 31.
43  * pulldn_slew -  Driver Output Pull-Up slew control code  - 2bit code
44  *                code 11 is least slewing of signal. code 00 is highest
45  *                slewing of the signal.
46  *                Value - FASTEST, FAST, SLOW, SLOWEST
47  * pullup_slew -  Driver Output Pull-Down slew control code -
48  *                code 11 is least slewing of signal. code 00 is highest
49  *                slewing of the signal.
50  *                Value - FASTEST, FAST, SLOW, SLOWEST
51  */
52 #define SET_DRIVE(_name, _hsm, _schmitt, _drive, _pulldn_drive, _pullup_drive, _pulldn_slew, _pullup_slew) \
53         {                                               \
54                 .pingroup = TEGRA_DRIVE_PINGROUP_##_name,   \
55                 .hsm = TEGRA_HSM_##_hsm,                    \
56                 .schmitt = TEGRA_SCHMITT_##_schmitt,        \
57                 .drive = TEGRA_DRIVE_##_drive,              \
58                 .pull_down = TEGRA_PULL_##_pulldn_drive,    \
59                 .pull_up = TEGRA_PULL_##_pullup_drive,          \
60                 .slew_rising = TEGRA_SLEW_##_pulldn_slew,   \
61                 .slew_falling = TEGRA_SLEW_##_pullup_slew,      \
62         }
63
64 /* !!!FIXME!!!!  Update drive strength with characterized value  */
65 static __initdata struct tegra_drive_pingroup_config p1852_drive_pinmux[] = {
66         /* ATC1 CFG */
67         SET_DRIVE(AT1,  ENABLE, ENABLE, DIV_1, 0, 0, SLOWEST, SLOWEST),
68         /* ATC2 CFG */
69         SET_DRIVE(AT2,  ENABLE, ENABLE, DIV_1, 0, 0, SLOWEST, SLOWEST),
70         /* ATC3 CFG */
71         SET_DRIVE(AT3,  ENABLE, ENABLE, DIV_1, 0, 0, SLOWEST, SLOWEST),
72         /* ATC4 CFG */
73         SET_DRIVE(AT4,  DISABLE, DISABLE, DIV_1, 0, 0, SLOWEST, SLOWEST),
74
75         /* All I2C pins are driven to maximum drive strength */
76         /* GEN1 I2C */
77         SET_DRIVE(DBG,  DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
78
79         /* GEN2 I2C */
80         SET_DRIVE(AT5,  DISABLE, ENABLE, DIV_1, 12, 30, FASTEST, FASTEST),
81
82         /* DDC I2C */
83         SET_DRIVE(DDC,  DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
84
85         /* PWR_I2C */
86         SET_DRIVE(AO1,  DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
87
88         /* SDMMC4 */
89         SET_DRIVE(GME,  DISABLE, ENABLE, DIV_1, 22, 18, SLOWEST, SLOWEST),
90         SET_DRIVE(GMF,  DISABLE, ENABLE, DIV_1,  0,  0, SLOWEST, SLOWEST),
91         SET_DRIVE(GMG,  DISABLE, ENABLE, DIV_1, 15,  6, SLOWEST, SLOWEST),
92         SET_DRIVE(GMH,  DISABLE, ENABLE, DIV_1, 12,  6, SLOWEST, SLOWEST),
93
94         /* LCD */
95         SET_DRIVE(LCD1, DISABLE, ENABLE, DIV_1, 31,  31, FASTEST, FASTEST),
96         SET_DRIVE(LCD2, DISABLE, ENABLE, DIV_1,  2,   2, FASTEST, FASTEST),
97
98         /* DAP2 */
99         SET_DRIVE(DAP2, ENABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
100         /* DAP4 */
101         SET_DRIVE(DAP4, ENABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
102         /* DBG */
103         SET_DRIVE(DBG,  ENABLE, ENABLE, DIV_1, 20,  0, SLOWEST, SLOWEST),
104         /* SPI */
105         SET_DRIVE(SPI,  ENABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
106         /* UAA */
107         SET_DRIVE(UAA,  DISABLE, DISABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
108         /* UART2 */
109         SET_DRIVE(UART2,        ENABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
110         /* UART3 */
111         SET_DRIVE(UART3,        ENABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
112         /* GME */
113         SET_DRIVE(GME,  DISABLE, ENABLE, DIV_1, 1,  4, SLOWEST, SLOWEST),
114         /* GMF */
115         SET_DRIVE(GMF,  DISABLE, ENABLE, DIV_1, 0,  0, SLOWEST, SLOWEST),
116         /* GMG */
117         SET_DRIVE(GMG,  DISABLE, ENABLE, DIV_1, 3,  0, SLOWEST, SLOWEST),
118         /* GMH */
119         SET_DRIVE(GMH,  DISABLE, ENABLE, DIV_1, 0,  12, SLOWEST, SLOWEST),
120
121         /* I2S/TDM */
122         SET_DRIVE(DAP1, ENABLE, ENABLE, DIV_1, 20,  20, SLOWEST, SLOWEST),
123         SET_DRIVE(DAP3, ENABLE, ENABLE, DIV_1, 20,  20, SLOWEST, SLOWEST),
124
125         /* SPI */
126         SET_DRIVE(UAD,          DISABLE, ENABLE, DIV_1, 4, 1, SLOWEST, SLOWEST),
127         SET_DRIVE(UAB,          DISABLE, ENABLE, DIV_1, 4, 1, SLOWEST, SLOWEST),
128         SET_DRIVE(SDIO3,        DISABLE, ENABLE, DIV_8, 4, 1, FASTEST, FASTEST),
129
130 };
131
132 #define DEFAULT_PINMUX(_pingroup, _mux, _pupd, _tri, _io)       \
133         {                                                       \
134                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
135                 .func           = TEGRA_MUX_##_mux,             \
136                 .pupd           = TEGRA_PUPD_##_pupd,           \
137                 .tristate       = TEGRA_TRI_##_tri,             \
138                 .io             = TEGRA_PIN_##_io,              \
139                 .lock           = TEGRA_PIN_LOCK_DEFAULT,       \
140                 .od             = TEGRA_PIN_OD_DEFAULT,         \
141                 .ioreset        = TEGRA_PIN_IO_RESET_DEFAULT,   \
142         }
143
144 #define I2C_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _od) \
145         {                                                       \
146                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
147                 .func           = TEGRA_MUX_##_mux,             \
148                 .pupd           = TEGRA_PUPD_##_pupd,           \
149                 .tristate       = TEGRA_TRI_##_tri,             \
150                 .io             = TEGRA_PIN_##_io,              \
151                 .lock           = TEGRA_PIN_LOCK_##_lock,       \
152                 .od             = TEGRA_PIN_OD_##_od,           \
153                 .ioreset        = TEGRA_PIN_IO_RESET_DEFAULT,   \
154         }
155
156 #define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
157         {                                                       \
158                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
159                 .func           = TEGRA_MUX_##_mux,             \
160                 .pupd           = TEGRA_PUPD_##_pupd,           \
161                 .tristate       = TEGRA_TRI_##_tri,             \
162                 .io             = TEGRA_PIN_##_io,              \
163                 .lock           = TEGRA_PIN_LOCK_##_lock,       \
164                 .od             = TEGRA_PIN_OD_DEFAULT,         \
165                 .ioreset        = TEGRA_PIN_IO_RESET_##_ioreset \
166         }
167
168 /* For LV(Low voltage) pad groups which has IO_RESET bit */
169 #define LVPAD_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
170         {                                                       \
171                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
172                 .func           = TEGRA_MUX_##_mux,             \
173                 .pupd           = TEGRA_PUPD_##_pupd,           \
174                 .tristate       = TEGRA_TRI_##_tri,             \
175                 .io             = TEGRA_PIN_##_io,              \
176                 .lock           = TEGRA_PIN_LOCK_##_lock,       \
177                 .od             = TEGRA_PIN_OD_DEFAULT,         \
178                 .ioreset        = TEGRA_PIN_IO_RESET_##_ioreset \
179         }
180
181
182 static __initdata struct tegra_pingroup_config p1852_pinmux_i2s4_master[] = {
183         DEFAULT_PINMUX(SDMMC4_CLK,    NAND,   PULL_UP,    NORMAL, INPUT),
184 };
185
186 static __initdata struct tegra_pingroup_config p1852_pinmux_common[] = {
187         /* SDMMC1 pinmux */
188         DEFAULT_PINMUX(SDMMC1_CLK,      SDMMC1,         NORMAL,         NORMAL,         INPUT),
189         DEFAULT_PINMUX(SDMMC1_CMD,      SDMMC1,         PULL_UP,        NORMAL,         INPUT),
190         DEFAULT_PINMUX(SDMMC1_DAT3,     SDMMC1,         PULL_UP,        NORMAL,         INPUT),
191         DEFAULT_PINMUX(SDMMC1_DAT2,     SDMMC1,         PULL_UP,        NORMAL,         INPUT),
192         DEFAULT_PINMUX(SDMMC1_DAT1,     SDMMC1,         PULL_UP,        NORMAL,         INPUT),
193         DEFAULT_PINMUX(SDMMC1_DAT0,     SDMMC1,         PULL_UP,        NORMAL,         INPUT),
194
195         /* SDMMC2 pinmux */
196         DEFAULT_PINMUX(KB_ROW10,        SDMMC2,         NORMAL,         NORMAL,         INPUT),
197         DEFAULT_PINMUX(KB_ROW11,        SDMMC2,         PULL_UP,        NORMAL,         INPUT),
198         DEFAULT_PINMUX(KB_ROW12,        SDMMC2,         PULL_UP,        NORMAL,         INPUT),
199         DEFAULT_PINMUX(KB_ROW13,        SDMMC2,         PULL_UP,        NORMAL,         INPUT),
200         DEFAULT_PINMUX(KB_ROW14,        SDMMC2,         PULL_UP,        NORMAL,         INPUT),
201         DEFAULT_PINMUX(KB_ROW15,        SDMMC2,         PULL_UP,        NORMAL,         INPUT),
202         DEFAULT_PINMUX(KB_ROW6,         SDMMC2,         PULL_UP,        NORMAL,         INPUT),
203         DEFAULT_PINMUX(KB_ROW7,         SDMMC2,         PULL_UP,        NORMAL,         INPUT),
204         DEFAULT_PINMUX(KB_ROW8,         SDMMC2,         PULL_UP,        NORMAL,         INPUT),
205         DEFAULT_PINMUX(KB_ROW9,         SDMMC2,         PULL_UP,        NORMAL,         INPUT),
206
207         /* SDMMC4 pinmux */
208         DEFAULT_PINMUX(CAM_MCLK,        POPSDMMC4,      NORMAL,         NORMAL,         INPUT),
209         DEFAULT_PINMUX(GPIO_PCC1,       POPSDMMC4,      NORMAL,         NORMAL,         INPUT),
210         DEFAULT_PINMUX(GPIO_PBB0,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
211         I2C_PINMUX(CAM_I2C_SCL,         POPSDMMC4,      PULL_UP,        NORMAL,         INPUT,          DISABLE,        DISABLE),
212         I2C_PINMUX(CAM_I2C_SDA,         POPSDMMC4,      PULL_UP,        NORMAL,         INPUT,          DISABLE,        DISABLE),
213         DEFAULT_PINMUX(GPIO_PBB3,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
214         DEFAULT_PINMUX(GPIO_PBB4,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
215         DEFAULT_PINMUX(GPIO_PBB5,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
216         DEFAULT_PINMUX(GPIO_PBB6,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
217         DEFAULT_PINMUX(GPIO_PBB7,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
218         DEFAULT_PINMUX(GPIO_PCC2,       POPSDMMC4,      PULL_UP,        NORMAL,         INPUT),
219
220         /* UART1 pinmux */
221         DEFAULT_PINMUX(ULPI_DATA0,      UARTA,          NORMAL,         NORMAL,         OUTPUT),
222         DEFAULT_PINMUX(ULPI_DATA1,      UARTA,          NORMAL,         NORMAL,         INPUT),
223         DEFAULT_PINMUX(ULPI_DATA2,      UARTA,          NORMAL,         NORMAL,         INPUT),
224         DEFAULT_PINMUX(ULPI_DATA3,      UARTA,          NORMAL,         NORMAL,         OUTPUT),
225
226         /* UART2 pinmux */
227         DEFAULT_PINMUX(UART2_RXD,       IRDA,           NORMAL,         NORMAL,         INPUT),
228         DEFAULT_PINMUX(UART2_TXD,       IRDA,           NORMAL,         NORMAL,         OUTPUT),
229
230         /* UART4 pinmux */
231         DEFAULT_PINMUX(GMI_A16,         UARTD,          NORMAL,         NORMAL,         OUTPUT),
232         DEFAULT_PINMUX(GMI_A17,         UARTD,          NORMAL,         NORMAL,         INPUT),
233         DEFAULT_PINMUX(GMI_A18,         UARTD,          NORMAL,         NORMAL,         INPUT),
234         DEFAULT_PINMUX(GMI_A19,         UARTD,          NORMAL,         NORMAL,         OUTPUT),
235
236         /* UART5 pinmux */
237         LVPAD_PINMUX(SDMMC4_DAT0,       UARTE,          NORMAL,         NORMAL,         OUTPUT, DISABLE,        DISABLE),
238         LVPAD_PINMUX(SDMMC4_DAT1,       UARTE,          NORMAL,         NORMAL,         INPUT,  DISABLE,        DISABLE),
239         LVPAD_PINMUX(SDMMC4_DAT2,       UARTE,          NORMAL,         NORMAL,         INPUT,  DISABLE,        DISABLE),
240         LVPAD_PINMUX(SDMMC4_DAT3,       UARTE,          NORMAL,         NORMAL,         OUTPUT, DISABLE,        DISABLE),
241
242         /* I2C1 pinmux */
243         I2C_PINMUX(GEN1_I2C_SCL,        I2C1,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
244         I2C_PINMUX(GEN1_I2C_SDA,        I2C1,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
245
246         /* I2C2 pinmux */
247         I2C_PINMUX(GEN2_I2C_SCL,        I2C2,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
248         I2C_PINMUX(GEN2_I2C_SDA,        I2C2,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
249
250         /* I2C4 pinmux */
251         I2C_PINMUX(DDC_SCL,             I2C4,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
252         I2C_PINMUX(DDC_SDA,             I2C4,           NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
253
254         /* PowerI2C pinmux */
255         I2C_PINMUX(PWR_I2C_SCL,         I2CPWR,         NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
256         I2C_PINMUX(PWR_I2C_SDA,         I2CPWR,         NORMAL,         NORMAL,         INPUT,          DISABLE,        ENABLE),
257
258         /* SPI1 pinmux */
259         DEFAULT_PINMUX(ULPI_CLK,        SPI1,           NORMAL,         NORMAL,         INPUT),
260         DEFAULT_PINMUX(ULPI_DIR,        SPI1,           NORMAL,         NORMAL,         INPUT),
261         DEFAULT_PINMUX(ULPI_NXT,        SPI1,           NORMAL,         NORMAL,         INPUT),
262         DEFAULT_PINMUX(ULPI_STP,        SPI1,           NORMAL,         NORMAL,         INPUT),
263
264         /* SPI2 pinmux */
265         DEFAULT_PINMUX(ULPI_DATA4,      SPI2,           NORMAL,         NORMAL,         INPUT),
266         DEFAULT_PINMUX(ULPI_DATA5,      SPI2,           NORMAL,         NORMAL,         INPUT),
267         DEFAULT_PINMUX(ULPI_DATA6,      SPI2,           NORMAL,         NORMAL,         INPUT),
268         DEFAULT_PINMUX(ULPI_DATA7,      SPI2,           NORMAL,         NORMAL,         INPUT),
269
270         /* SPI3 pinmux  */
271         DEFAULT_PINMUX(SDMMC3_CLK,      SPI3,           NORMAL,         NORMAL,         INPUT),
272         DEFAULT_PINMUX(SDMMC3_DAT0,     SPI3,           NORMAL,         NORMAL,         INPUT),
273         DEFAULT_PINMUX(SDMMC3_DAT1,     SPI3,           NORMAL,         NORMAL,         INPUT),
274         DEFAULT_PINMUX(SDMMC3_DAT2,     SPI3,           NORMAL,         NORMAL,         INPUT),
275
276         /* SPDIF pinmux */
277         DEFAULT_PINMUX(SPDIF_IN,        SPDIF,          NORMAL,         NORMAL,         INPUT),
278
279         /* DAP1 */
280         DEFAULT_PINMUX(DAP1_FS,         I2S0,           NORMAL,         NORMAL,         INPUT),
281         DEFAULT_PINMUX(DAP1_DIN,        I2S0,           NORMAL,         NORMAL,         INPUT),
282         DEFAULT_PINMUX(DAP1_DOUT,       I2S0,           NORMAL,         NORMAL,         INPUT),
283         DEFAULT_PINMUX(DAP1_SCLK,       I2S0,           NORMAL,         NORMAL,         INPUT),
284
285         /* DAP2 */
286         DEFAULT_PINMUX(DAP3_FS,         I2S2,           NORMAL,         NORMAL,         INPUT),
287         DEFAULT_PINMUX(DAP3_DIN,        I2S2,           NORMAL,         NORMAL,         INPUT),
288         DEFAULT_PINMUX(DAP3_DOUT,       I2S2,           NORMAL,         NORMAL,         INPUT),
289         DEFAULT_PINMUX(DAP3_SCLK,       I2S2,           NORMAL,         NORMAL,         INPUT),
290
291         /* DAP3 */
292         DEFAULT_PINMUX(SDMMC4_DAT4,     I2S4,           NORMAL,         NORMAL,         INPUT),
293         DEFAULT_PINMUX(SDMMC4_DAT5,     I2S4,           NORMAL,         NORMAL,         INPUT),
294         DEFAULT_PINMUX(SDMMC4_DAT6,     I2S4,           NORMAL,         NORMAL,         INPUT),
295         DEFAULT_PINMUX(SDMMC4_DAT7,     I2S4,           NORMAL,         NORMAL,         INPUT),
296
297         /* NOR pinmux */
298         DEFAULT_PINMUX(GMI_AD0,         GMI,            NORMAL,         NORMAL,         INPUT),
299         DEFAULT_PINMUX(GMI_AD1,         GMI,            NORMAL,         NORMAL,         INPUT),
300         DEFAULT_PINMUX(GMI_AD2,         GMI,            NORMAL,         NORMAL,         INPUT),
301         DEFAULT_PINMUX(GMI_AD3,         GMI,            NORMAL,         NORMAL,         INPUT),
302         DEFAULT_PINMUX(GMI_AD4,         GMI,            NORMAL,         NORMAL,         INPUT),
303         DEFAULT_PINMUX(GMI_AD5,         GMI,            NORMAL,         NORMAL,         INPUT),
304         DEFAULT_PINMUX(GMI_AD6,         GMI,            NORMAL,         NORMAL,         INPUT),
305         DEFAULT_PINMUX(GMI_AD7,         GMI,            NORMAL,         NORMAL,         INPUT),
306         DEFAULT_PINMUX(GMI_AD8,         GMI,            NORMAL,         NORMAL,         INPUT),
307         DEFAULT_PINMUX(GMI_AD9,         GMI,            NORMAL,         NORMAL,         INPUT),
308         DEFAULT_PINMUX(GMI_AD10,        GMI,            NORMAL,         NORMAL,         INPUT),
309         DEFAULT_PINMUX(GMI_AD11,        GMI,            NORMAL,         NORMAL,         INPUT),
310         DEFAULT_PINMUX(GMI_AD12,        GMI,            NORMAL,         NORMAL,         INPUT),
311         DEFAULT_PINMUX(GMI_AD13,        GMI,            NORMAL,         NORMAL,         INPUT),
312         DEFAULT_PINMUX(GMI_AD14,        GMI,            NORMAL,         NORMAL,         INPUT),
313         DEFAULT_PINMUX(GMI_AD15,        GMI,            NORMAL,         NORMAL,         INPUT),
314         DEFAULT_PINMUX(GMI_ADV_N,       NAND,           NORMAL,         NORMAL,         OUTPUT),
315         DEFAULT_PINMUX(GMI_CLK,         NAND,           NORMAL,         NORMAL,         OUTPUT),
316         DEFAULT_PINMUX(GMI_CS0_N,       GMI,            NORMAL,         NORMAL,         OUTPUT),
317         DEFAULT_PINMUX(GMI_OE_N,        GMI,            NORMAL,         NORMAL,         OUTPUT),
318         DEFAULT_PINMUX(GMI_RST_N,       GMI,            NORMAL,         NORMAL,         OUTPUT),
319         DEFAULT_PINMUX(GMI_WAIT,        GMI,            NORMAL,         NORMAL,         INPUT),
320         DEFAULT_PINMUX(GMI_WP_N,        GMI,            NORMAL,         NORMAL,         OUTPUT),
321         DEFAULT_PINMUX(GMI_WR_N,        GMI,            NORMAL,         NORMAL,         OUTPUT),
322         DEFAULT_PINMUX(DAP2_FS,         GMI,            NORMAL,         NORMAL,         OUTPUT),
323         DEFAULT_PINMUX(DAP2_DIN,        GMI,            NORMAL,         NORMAL,         OUTPUT),
324         DEFAULT_PINMUX(DAP2_DOUT,       GMI,            NORMAL,         NORMAL,         OUTPUT),
325         DEFAULT_PINMUX(DAP2_SCLK,       GMI,            NORMAL,         NORMAL,         OUTPUT),
326         DEFAULT_PINMUX(SPI1_MOSI,       GMI,            NORMAL,         NORMAL,         OUTPUT),
327         DEFAULT_PINMUX(SPI2_CS0_N,      GMI,            NORMAL,         NORMAL,         OUTPUT),
328         DEFAULT_PINMUX(SPI2_SCK,        GMI,            NORMAL,         NORMAL,         OUTPUT),
329         DEFAULT_PINMUX(SPI2_MOSI,       GMI,            NORMAL,         NORMAL,         OUTPUT),
330         DEFAULT_PINMUX(SPI2_MISO,       GMI,            NORMAL,         NORMAL,         OUTPUT),
331         DEFAULT_PINMUX(DAP4_FS,         GMI,            NORMAL,         NORMAL,         OUTPUT),
332         DEFAULT_PINMUX(DAP4_DIN,        GMI,            NORMAL,         NORMAL,         OUTPUT),
333         DEFAULT_PINMUX(DAP4_DOUT,       GMI,            NORMAL,         NORMAL,         OUTPUT),
334         DEFAULT_PINMUX(DAP4_SCLK,       GMI,            NORMAL,         NORMAL,         OUTPUT),
335         DEFAULT_PINMUX(GPIO_PU0,        GMI,            NORMAL,         NORMAL,         OUTPUT),
336         DEFAULT_PINMUX(GPIO_PU1,        GMI,            NORMAL,         NORMAL,         OUTPUT),
337         DEFAULT_PINMUX(GPIO_PU2,        GMI,            NORMAL,         NORMAL,         OUTPUT),
338         DEFAULT_PINMUX(GPIO_PU3,        GMI,            NORMAL,         NORMAL,         OUTPUT),
339         DEFAULT_PINMUX(GPIO_PU4,        GMI,            NORMAL,         NORMAL,         OUTPUT),
340         DEFAULT_PINMUX(GPIO_PU5,        GMI,            NORMAL,         NORMAL,         OUTPUT),
341         DEFAULT_PINMUX(GPIO_PU6,        GMI,            NORMAL,         NORMAL,         OUTPUT),
342         DEFAULT_PINMUX(UART2_RTS_N,     GMI,            NORMAL,         NORMAL,         OUTPUT),
343         DEFAULT_PINMUX(UART2_CTS_N,     GMI,            NORMAL,         NORMAL,         OUTPUT),
344         DEFAULT_PINMUX(UART3_TXD,       GMI,            NORMAL,         NORMAL,         OUTPUT),
345         DEFAULT_PINMUX(UART3_RXD,       GMI,            NORMAL,         NORMAL,         OUTPUT),
346         DEFAULT_PINMUX(UART3_CTS_N,     GMI,            NORMAL,         NORMAL,         OUTPUT),
347         DEFAULT_PINMUX(UART3_RTS_N,     GMI,            NORMAL,         NORMAL,         OUTPUT),
348
349
350         /* DISPLAY pinmux */
351         DEFAULT_PINMUX(LCD_CS1_N,       DISPLAYA,       NORMAL,         NORMAL,         INPUT),
352         DEFAULT_PINMUX(LCD_D0,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
353         DEFAULT_PINMUX(LCD_D1,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
354         DEFAULT_PINMUX(LCD_D2,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
355         DEFAULT_PINMUX(LCD_D3,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
356         DEFAULT_PINMUX(LCD_D4,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
357         DEFAULT_PINMUX(LCD_D5,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
358         DEFAULT_PINMUX(LCD_D6,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
359         DEFAULT_PINMUX(LCD_D7,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
360         DEFAULT_PINMUX(LCD_D8,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
361         DEFAULT_PINMUX(LCD_D9,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
362         DEFAULT_PINMUX(LCD_D10,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
363         DEFAULT_PINMUX(LCD_D11,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
364         DEFAULT_PINMUX(LCD_D12,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
365         DEFAULT_PINMUX(LCD_D13,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
366         DEFAULT_PINMUX(LCD_D14,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
367         DEFAULT_PINMUX(LCD_D15,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
368         DEFAULT_PINMUX(LCD_D16,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
369         DEFAULT_PINMUX(LCD_D17,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
370         DEFAULT_PINMUX(LCD_D18,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
371         DEFAULT_PINMUX(LCD_D19,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
372         DEFAULT_PINMUX(LCD_D20,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
373         DEFAULT_PINMUX(LCD_D21,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
374         DEFAULT_PINMUX(LCD_D22,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
375         DEFAULT_PINMUX(LCD_D23,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
376         DEFAULT_PINMUX(LCD_DC0,         DISPLAYA,       NORMAL,         NORMAL,         INPUT),
377         DEFAULT_PINMUX(LCD_DE,          DISPLAYA,       NORMAL,         NORMAL,         INPUT),
378         DEFAULT_PINMUX(LCD_HSYNC,       DISPLAYA,       NORMAL,         NORMAL,         INPUT),
379         DEFAULT_PINMUX(LCD_PCLK,        DISPLAYA,       NORMAL,         NORMAL,         INPUT),
380         DEFAULT_PINMUX(LCD_VSYNC,       DISPLAYA,       NORMAL,         NORMAL,         INPUT),
381         DEFAULT_PINMUX(LCD_WR_N,        DISPLAYA,       NORMAL,         NORMAL,         INPUT),
382
383         DEFAULT_PINMUX(PEX_WAKE_N,      PCIE,           NORMAL,         NORMAL,         INPUT),
384         DEFAULT_PINMUX(PEX_L1_PRSNT_N,  PCIE,           NORMAL,         NORMAL,         INPUT),
385         DEFAULT_PINMUX(PEX_L1_RST_N,    PCIE,           NORMAL,         NORMAL,         OUTPUT),
386         DEFAULT_PINMUX(PEX_L1_CLKREQ_N, PCIE,           NORMAL,         NORMAL,         INPUT),
387         DEFAULT_PINMUX(PEX_L2_PRSNT_N,  PCIE,           NORMAL,         NORMAL,         INPUT),
388         DEFAULT_PINMUX(PEX_L2_RST_N,    PCIE,           NORMAL,         NORMAL,         OUTPUT),
389         DEFAULT_PINMUX(PEX_L2_CLKREQ_N, PCIE,           NORMAL,         NORMAL,         INPUT),
390
391         DEFAULT_PINMUX(CLK1_OUT,        EXTPERIPH1,     PULL_DOWN,      NORMAL, INPUT),
392
393         VI_PINMUX(VI_D2,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
394         VI_PINMUX(VI_D3,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
395         VI_PINMUX(VI_D4,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
396         VI_PINMUX(VI_D5,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
397         VI_PINMUX(VI_D6,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
398         VI_PINMUX(VI_D7,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
399         VI_PINMUX(VI_D8,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
400         VI_PINMUX(VI_D9,                VI,             NORMAL,         NORMAL,         INPUT,          DISABLE,        DISABLE),
401         VI_PINMUX(VI_PCLK,              VI,             PULL_UP,        TRISTATE,       INPUT,          DISABLE,        DISABLE),
402
403         /* pin config for gpios */
404         DEFAULT_PINMUX(VI_D0,           SAFE,   NORMAL, NORMAL, INPUT),
405         DEFAULT_PINMUX(CLK1_REQ,        RSVD2,  NORMAL, NORMAL, INPUT),
406         DEFAULT_PINMUX(LCD_SCK,         SPI5,   NORMAL, NORMAL, INPUT),
407         DEFAULT_PINMUX(LCD_DC1,         RSVD1,  NORMAL, NORMAL, INPUT),
408         DEFAULT_PINMUX(SDMMC3_DAT5,     SDMMC3, NORMAL, NORMAL, INPUT),
409         DEFAULT_PINMUX(SPDIF_OUT,       SAFE,   NORMAL, NORMAL, INPUT),
410         DEFAULT_PINMUX(SPI1_SCK,        GMI,    NORMAL, NORMAL, INPUT),
411         DEFAULT_PINMUX(SPI1_CS0_N,      GMI,    NORMAL, NORMAL, INPUT),
412         DEFAULT_PINMUX(SPI1_MISO,       RSVD3,  NORMAL, NORMAL, INPUT),
413         DEFAULT_PINMUX(SPI2_CS2_N,      SPI2,   NORMAL, NORMAL, INPUT),
414         DEFAULT_PINMUX(GPIO_PV0,        RSVD,   NORMAL, NORMAL, INPUT),
415         DEFAULT_PINMUX(GPIO_PV1,        RSVD,   NORMAL, NORMAL, INPUT),
416         DEFAULT_PINMUX(CRT_HSYNC,       RSVD1,  NORMAL, NORMAL, INPUT),
417         DEFAULT_PINMUX(CRT_VSYNC,       RSVD1,  NORMAL, NORMAL, INPUT),
418         DEFAULT_PINMUX(LCD_CS0_N,       RSVD,   NORMAL, NORMAL, INPUT),
419         DEFAULT_PINMUX(LCD_M1,          RSVD1,  NORMAL, NORMAL, INPUT),
420         DEFAULT_PINMUX(LCD_PWR0,        SPI5,   NORMAL, NORMAL, INPUT),
421         DEFAULT_PINMUX(LCD_PWR1,        RSVD1,  NORMAL, NORMAL, INPUT),
422         DEFAULT_PINMUX(LCD_PWR2,        SPI5,   NORMAL, NORMAL, INPUT),
423         DEFAULT_PINMUX(LCD_SDIN,        RSVD,   NORMAL, NORMAL, INPUT),
424         DEFAULT_PINMUX(LCD_SDOUT,       SPI5,   NORMAL, NORMAL, INPUT),
425         DEFAULT_PINMUX(GPIO_PV2,        RSVD1,  NORMAL, NORMAL, INPUT),
426         DEFAULT_PINMUX(GPIO_PV3,        RSVD1,  NORMAL, NORMAL, INPUT),
427         DEFAULT_PINMUX(SDMMC3_DAT7,     SDMMC3, NORMAL, NORMAL, INPUT),
428         DEFAULT_PINMUX(SDMMC4_CLK,      NAND,   NORMAL, NORMAL, INPUT),
429         DEFAULT_PINMUX(SDMMC3_CMD,      SDMMC3, NORMAL, NORMAL, INPUT),
430         DEFAULT_PINMUX(SDMMC3_DAT3,     RSVD0,  NORMAL, NORMAL, INPUT),
431         DEFAULT_PINMUX(VI_D1,           RSVD1,  NORMAL, NORMAL, INPUT),
432         DEFAULT_PINMUX(SDMMC3_DAT4,     SDMMC3, NORMAL, TRISTATE,       INPUT),
433         DEFAULT_PINMUX(SPI2_CS1_N,      SPI2,   NORMAL, TRISTATE,       INPUT),
434         DEFAULT_PINMUX(HDMI_INT,        RSVD0,  NORMAL, TRISTATE,       INPUT),
435 };
436
437 int __init p1852_pinmux_init(void)
438 {
439         tegra_pinmux_config_table(p1852_pinmux_common,
440                                         ARRAY_SIZE(p1852_pinmux_common));
441         tegra_drive_pinmux_config_table(p1852_drive_pinmux,
442                         ARRAY_SIZE(p1852_drive_pinmux));
443         return 0;
444 }
445
446 int p1852_pinmux_set_i2s4_master(void)
447 {
448         tegra_pinmux_config_table(p1852_pinmux_i2s4_master,
449                                         ARRAY_SIZE(p1852_pinmux_i2s4_master));
450         return 0;
451 }
452 #define GPIO_INIT_PIN_MODE(_gpio, _is_input, _value)    \
453         {                                       \
454                 .gpio_nr        = _gpio,        \
455                 .is_input       = _is_input,    \
456                 .value          = _value,       \
457         }
458
459 static struct gpio_init_pin_info p1852_sku8_gpios[] = {
460         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PT4,      false, 1),
461         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PEE2,     false, 1),
462         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PZ4,      false, 1),
463         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PD2,      false, 1),
464         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PD0,      true,  0),
465         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PW3,      true,  0),
466         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PK5,      false, 1),
467         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX5,      false, 1),
468         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX6,      false, 1),
469         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX7,      false, 1),
470         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV0,      false, 1),
471         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV1,      false, 1),
472         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV6,      false, 1),
473         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV7,      true,  0),
474         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PN4,      false, 1),
475         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PN6,      false, 1),
476         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PW1,      false, 1),
477         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PB2,      false, 1),
478         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PC1,      false, 1),
479         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PC6,      true,  0),
480         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PZ2,      false, 1),
481         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PN5,      false, 1),
482         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD3,     false, 1),
483         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV2,      true,  0),
484         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PV3,      true,  0),
485         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PD4,      true,  0),
486         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PCC4,     false, 0),
487         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PA7,      false, 1),
488         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PB4,      false, 1),
489         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PD5,      false, 1),
490         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PN7,      true,  0),
491 };
492
493 int __init p1852_gpio_init(void)
494 {
495         int i, pin_count = 0;
496         struct gpio_init_pin_info *gpios_info = NULL;
497         gpios_info = p1852_sku8_gpios;
498         pin_count = ARRAY_SIZE(p1852_sku8_gpios);
499
500         for (i = 0; i < pin_count; ++i) {
501                 tegra_gpio_init_configure(gpios_info->gpio_nr,
502                         gpios_info->is_input, gpios_info->value);
503                 gpios_info++;
504         }
505         return 0;
506 }