arm: tegra: cardhu: add support for PM315
[linux-2.6.git] / arch / arm / mach-tegra / board-cardhu-pinmux.c
1 /*
2  * arch/arm/mach-tegra/board-cardhu-pinmux.c
3  *
4  * Copyright (C) 2011-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 <linux/gpio.h>
20 #include <mach/pinmux.h>
21 #include <mach/pinmux-tegra30.h>
22 #include <mach/gpio-tegra.h>
23 #include "board.h"
24 #include "board-cardhu.h"
25 #include "devices.h"
26 #include "gpio-names.h"
27
28 #define DEFAULT_DRIVE(_name)                                    \
29         {                                                       \
30                 .pingroup = TEGRA_DRIVE_PINGROUP_##_name,       \
31                 .hsm = TEGRA_HSM_DISABLE,                       \
32                 .schmitt = TEGRA_SCHMITT_ENABLE,                \
33                 .drive = TEGRA_DRIVE_DIV_1,                     \
34                 .pull_down = TEGRA_PULL_31,                     \
35                 .pull_up = TEGRA_PULL_31,                       \
36                 .slew_rising = TEGRA_SLEW_SLOWEST,              \
37                 .slew_falling = TEGRA_SLEW_SLOWEST,             \
38         }
39 /* Setting the drive strength of pins
40  * hsm: Enable High speed mode (ENABLE/DISABLE)
41  * Schimit: Enable/disable schimit (ENABLE/DISABLE)
42  * drive: low power mode (DIV_1, DIV_2, DIV_4, DIV_8)
43  * pulldn_drive - drive down (falling edge) - Driver Output Pull-Down drive
44  *                strength code. Value from 0 to 31.
45  * pullup_drive - drive up (rising edge)  - Driver Output Pull-Up drive
46  *                strength code. Value from 0 to 31.
47  * pulldn_slew -  Driver Output Pull-Up slew control code  - 2bit 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  * pullup_slew -  Driver Output Pull-Down slew control code -
52  *                code 11 is least slewing of signal. code 00 is highest
53  *                slewing of the signal.
54  *                Value - FASTEST, FAST, SLOW, SLOWEST
55  */
56 #define SET_DRIVE(_name, _hsm, _schmitt, _drive, _pulldn_drive, _pullup_drive, _pulldn_slew, _pullup_slew) \
57         {                                               \
58                 .pingroup = TEGRA_DRIVE_PINGROUP_##_name,   \
59                 .hsm = TEGRA_HSM_##_hsm,                    \
60                 .schmitt = TEGRA_SCHMITT_##_schmitt,        \
61                 .drive = TEGRA_DRIVE_##_drive,              \
62                 .pull_down = TEGRA_PULL_##_pulldn_drive,    \
63                 .pull_up = TEGRA_PULL_##_pullup_drive,          \
64                 .slew_rising = TEGRA_SLEW_##_pulldn_slew,   \
65                 .slew_falling = TEGRA_SLEW_##_pullup_slew,      \
66         }
67
68 /* !!!FIXME!!!! POPULATE THIS TABLE */
69 static __initdata struct tegra_drive_pingroup_config cardhu_drive_pinmux[] = {
70         /* DEFAULT_DRIVE(<pin_group>), */
71         /* SET_DRIVE(ATA, DISABLE, DISABLE, DIV_1, 31, 31, FAST, FAST) */
72         SET_DRIVE(DAP2,         DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
73         SET_DRIVE(DAP1,         DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
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, 31, 31, FASTEST, FASTEST),
81
82         /* CAM I2C */
83         SET_DRIVE(GME,          DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
84
85         /* DDC I2C */
86         SET_DRIVE(DDC,          DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
87
88         /* PWR_I2C */
89         SET_DRIVE(AO1,          DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
90
91         /* UART3 */
92         SET_DRIVE(UART3,        DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
93
94         /* SDMMC1 */
95         SET_DRIVE(SDIO1,        DISABLE, DISABLE, DIV_1, 46, 42, FAST, FAST),
96
97         /* SDMMC3 */
98         SET_DRIVE(SDIO3,        DISABLE, DISABLE, DIV_1, 46, 42, FAST, FAST),
99
100         /* SDMMC4 */
101         SET_DRIVE(GMA,          DISABLE, DISABLE, DIV_1, 9, 9, SLOWEST, SLOWEST),
102         SET_DRIVE(GMB,          DISABLE, DISABLE, DIV_1, 9, 9, SLOWEST, SLOWEST),
103         SET_DRIVE(GMC,          DISABLE, DISABLE, DIV_1, 9, 9, SLOWEST, SLOWEST),
104         SET_DRIVE(GMD,          DISABLE, DISABLE, DIV_1, 9, 9, SLOWEST, SLOWEST),
105
106 };
107
108 #define DEFAULT_PINMUX(_pingroup, _mux, _pupd, _tri, _io)       \
109         {                                                       \
110                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
111                 .func           = TEGRA_MUX_##_mux,             \
112                 .pupd           = TEGRA_PUPD_##_pupd,           \
113                 .tristate       = TEGRA_TRI_##_tri,             \
114                 .io             = TEGRA_PIN_##_io,              \
115                 .lock           = TEGRA_PIN_LOCK_DEFAULT,       \
116                 .od             = TEGRA_PIN_OD_DEFAULT,         \
117                 .ioreset        = TEGRA_PIN_IO_RESET_DEFAULT,   \
118         }
119
120 #define I2C_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _od) \
121         {                                                       \
122                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
123                 .func           = TEGRA_MUX_##_mux,             \
124                 .pupd           = TEGRA_PUPD_##_pupd,           \
125                 .tristate       = TEGRA_TRI_##_tri,             \
126                 .io             = TEGRA_PIN_##_io,              \
127                 .lock           = TEGRA_PIN_LOCK_##_lock,       \
128                 .od             = TEGRA_PIN_OD_##_od,           \
129                 .ioreset        = TEGRA_PIN_IO_RESET_DEFAULT,   \
130         }
131
132 #define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
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_##_lock,       \
140                 .od             = TEGRA_PIN_OD_DEFAULT,         \
141                 .ioreset        = TEGRA_PIN_IO_RESET_##_ioreset \
142         }
143 #define CEC_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _od) \
144         {                                                       \
145                 .pingroup       = TEGRA_PINGROUP_##_pingroup,   \
146                         .func           = TEGRA_MUX_##_mux,             \
147                         .pupd           = TEGRA_PUPD_##_pupd,           \
148                         .tristate       = TEGRA_TRI_##_tri,             \
149                         .io             = TEGRA_PIN_##_io,              \
150                         .lock           = TEGRA_PIN_LOCK_##_lock,       \
151                         .od             = TEGRA_PIN_OD_##_od,           \
152                         .ioreset        = TEGRA_PIN_IO_RESET_DEFAULT,   \
153         }
154
155 static __initdata struct tegra_pingroup_config cardhu_pinmux_common[] = {
156         /* SDMMC1 pinmux */
157         DEFAULT_PINMUX(SDMMC1_CLK,      SDMMC1,          NORMAL,     NORMAL,     INPUT),
158         DEFAULT_PINMUX(SDMMC1_CMD,      SDMMC1,          PULL_UP,    NORMAL,     INPUT),
159         DEFAULT_PINMUX(SDMMC1_DAT3,     SDMMC1,          PULL_UP,    NORMAL,     INPUT),
160         DEFAULT_PINMUX(SDMMC1_DAT2,     SDMMC1,          PULL_UP,    NORMAL,     INPUT),
161         DEFAULT_PINMUX(SDMMC1_DAT1,     SDMMC1,          PULL_UP,    NORMAL,     INPUT),
162         DEFAULT_PINMUX(SDMMC1_DAT0,     SDMMC1,          PULL_UP,    NORMAL,     INPUT),
163
164         /* SDMMC3 pinmux */
165         DEFAULT_PINMUX(SDMMC3_CLK,      SDMMC3,          NORMAL,     NORMAL,     INPUT),
166         DEFAULT_PINMUX(SDMMC3_CMD,      SDMMC3,          PULL_UP,    NORMAL,     INPUT),
167         DEFAULT_PINMUX(SDMMC3_DAT0,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
168         DEFAULT_PINMUX(SDMMC3_DAT1,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
169         DEFAULT_PINMUX(SDMMC3_DAT2,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
170         DEFAULT_PINMUX(SDMMC3_DAT3,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
171         DEFAULT_PINMUX(SDMMC3_DAT6,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
172         DEFAULT_PINMUX(SDMMC3_DAT7,     SDMMC3,          PULL_UP,    NORMAL,     INPUT),
173
174         /* SDMMC4 pinmux */
175         DEFAULT_PINMUX(SDMMC4_CLK,      SDMMC4,          NORMAL,     NORMAL,     INPUT),
176         DEFAULT_PINMUX(SDMMC4_CMD,      SDMMC4,          PULL_UP,    NORMAL,     INPUT),
177         DEFAULT_PINMUX(SDMMC4_DAT0,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
178         DEFAULT_PINMUX(SDMMC4_DAT1,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
179         DEFAULT_PINMUX(SDMMC4_DAT2,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
180         DEFAULT_PINMUX(SDMMC4_DAT3,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
181         DEFAULT_PINMUX(SDMMC4_DAT4,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
182         DEFAULT_PINMUX(SDMMC4_DAT5,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
183         DEFAULT_PINMUX(SDMMC4_DAT6,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
184         DEFAULT_PINMUX(SDMMC4_DAT7,     SDMMC4,          PULL_UP,    NORMAL,     INPUT),
185         DEFAULT_PINMUX(SDMMC4_RST_N,    RSVD1,           PULL_DOWN,  NORMAL,     INPUT),
186
187         /* I2C1 pinmux */
188         I2C_PINMUX(GEN1_I2C_SCL,        I2C1,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
189         I2C_PINMUX(GEN1_I2C_SDA,        I2C1,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
190
191         /* I2C2 pinmux */
192         I2C_PINMUX(GEN2_I2C_SCL,        I2C2,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
193         I2C_PINMUX(GEN2_I2C_SDA,        I2C2,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
194
195         /* I2C3 pinmux */
196         I2C_PINMUX(CAM_I2C_SCL,         I2C3,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
197         I2C_PINMUX(CAM_I2C_SDA,         I2C3,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
198
199         /* I2C4 pinmux */
200         I2C_PINMUX(DDC_SCL,             I2C4,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
201         I2C_PINMUX(DDC_SDA,             I2C4,           NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
202
203         /* Power I2C pinmux */
204         I2C_PINMUX(PWR_I2C_SCL,         I2CPWR,         NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
205         I2C_PINMUX(PWR_I2C_SDA,         I2CPWR,         NORMAL, NORMAL, INPUT,  DISABLE,        ENABLE),
206
207         /* HDMI-CEC  pinmux */
208         CEC_PINMUX(HDMI_CEC,    CEC,    NORMAL,        NORMAL, INPUT,  DISABLE,        ENABLE),
209
210         DEFAULT_PINMUX(ULPI_DATA0,      UARTA,           NORMAL,    NORMAL,     OUTPUT),
211         DEFAULT_PINMUX(ULPI_DATA1,      UARTA,           NORMAL,    NORMAL,     INPUT),
212         DEFAULT_PINMUX(ULPI_DATA2,      UARTA,           NORMAL,    NORMAL,     INPUT),
213         DEFAULT_PINMUX(ULPI_DATA3,      UARTA,           NORMAL,    NORMAL,     INPUT),
214         DEFAULT_PINMUX(ULPI_DATA4,      UARTA,           NORMAL,    NORMAL,     INPUT),
215         DEFAULT_PINMUX(ULPI_DATA5,      UARTA,           NORMAL,    NORMAL,     INPUT),
216         DEFAULT_PINMUX(ULPI_DATA6,      UARTA,           NORMAL,    NORMAL,     INPUT),
217         DEFAULT_PINMUX(ULPI_DATA7,      UARTA,           NORMAL,    NORMAL,     OUTPUT),
218         DEFAULT_PINMUX(ULPI_CLK,        UARTD,           NORMAL,    NORMAL,     OUTPUT),
219         DEFAULT_PINMUX(ULPI_DIR,        UARTD,           NORMAL,    NORMAL,     INPUT),
220         DEFAULT_PINMUX(ULPI_NXT,        UARTD,           NORMAL,    NORMAL,     INPUT),
221         DEFAULT_PINMUX(ULPI_STP,        UARTD,           NORMAL,    NORMAL,     OUTPUT),
222         DEFAULT_PINMUX(DAP3_FS,         I2S2,            NORMAL,    NORMAL,     INPUT),
223         DEFAULT_PINMUX(DAP3_DIN,        I2S2,            NORMAL,    NORMAL,     INPUT),
224         DEFAULT_PINMUX(DAP3_DOUT,       I2S2,            NORMAL,    NORMAL,     INPUT),
225         DEFAULT_PINMUX(DAP3_SCLK,       I2S2,            NORMAL,    NORMAL,     INPUT),
226         DEFAULT_PINMUX(GPIO_PV2,        RSVD1,           NORMAL,    NORMAL,     OUTPUT),
227         DEFAULT_PINMUX(GPIO_PV3,        RSVD1,           NORMAL,    NORMAL,     OUTPUT),
228         DEFAULT_PINMUX(CLK2_OUT,        EXTPERIPH2,      NORMAL,    NORMAL,     INPUT),
229         DEFAULT_PINMUX(CLK2_REQ,        DAP,             NORMAL,    NORMAL,     INPUT),
230         DEFAULT_PINMUX(LCD_PWR1,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
231         DEFAULT_PINMUX(LCD_PWR2,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
232         DEFAULT_PINMUX(LCD_SDIN,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
233         DEFAULT_PINMUX(LCD_SDOUT,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
234         DEFAULT_PINMUX(LCD_WR_N,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
235         DEFAULT_PINMUX(LCD_DC0,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
236         DEFAULT_PINMUX(LCD_PWR0,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
237         DEFAULT_PINMUX(LCD_PCLK,        DISPLAYA,        NORMAL,    NORMAL,     INPUT),
238         DEFAULT_PINMUX(LCD_DE,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
239         DEFAULT_PINMUX(LCD_HSYNC,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
240         DEFAULT_PINMUX(LCD_VSYNC,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
241         DEFAULT_PINMUX(LCD_D0,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
242         DEFAULT_PINMUX(LCD_D1,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
243         DEFAULT_PINMUX(LCD_D2,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
244         DEFAULT_PINMUX(LCD_D3,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
245         DEFAULT_PINMUX(LCD_D4,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
246         DEFAULT_PINMUX(LCD_D5,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
247         DEFAULT_PINMUX(LCD_D6,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
248         DEFAULT_PINMUX(LCD_D7,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
249         DEFAULT_PINMUX(LCD_D8,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
250         DEFAULT_PINMUX(LCD_D9,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
251         DEFAULT_PINMUX(LCD_D10,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
252         DEFAULT_PINMUX(LCD_D11,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
253         DEFAULT_PINMUX(LCD_D12,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
254         DEFAULT_PINMUX(LCD_D13,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
255         DEFAULT_PINMUX(LCD_D14,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
256         DEFAULT_PINMUX(LCD_D15,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
257         DEFAULT_PINMUX(LCD_D16,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
258         DEFAULT_PINMUX(LCD_D17,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
259         DEFAULT_PINMUX(LCD_D18,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
260         DEFAULT_PINMUX(LCD_D19,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
261         DEFAULT_PINMUX(LCD_D20,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
262         DEFAULT_PINMUX(LCD_D21,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
263         DEFAULT_PINMUX(LCD_D22,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
264         DEFAULT_PINMUX(LCD_D23,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
265         DEFAULT_PINMUX(LCD_DC1,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
266         DEFAULT_PINMUX(CRT_HSYNC,       CRT,             NORMAL,    NORMAL,     OUTPUT),
267         DEFAULT_PINMUX(CRT_VSYNC,       CRT,             NORMAL,    NORMAL,     OUTPUT),
268         DEFAULT_PINMUX(VI_D0,           RSVD1,           NORMAL,    NORMAL,     INPUT),
269         DEFAULT_PINMUX(VI_D1,           SDMMC2,          NORMAL,    NORMAL,     INPUT),
270         DEFAULT_PINMUX(VI_D2,           SDMMC2,          NORMAL,    NORMAL,     INPUT),
271         DEFAULT_PINMUX(VI_D3,           SDMMC2,          NORMAL,    NORMAL,     INPUT),
272         DEFAULT_PINMUX(VI_D4,           VI,              NORMAL,    NORMAL,     OUTPUT),
273         DEFAULT_PINMUX(VI_D5,           SDMMC2,          NORMAL,    NORMAL,     INPUT),
274         DEFAULT_PINMUX(VI_D7,           SDMMC2,          NORMAL,    NORMAL,     INPUT),
275         DEFAULT_PINMUX(VI_D10,          RSVD1,           NORMAL,    NORMAL,     INPUT),
276         DEFAULT_PINMUX(VI_MCLK,         VI,              PULL_UP,   NORMAL,     INPUT),
277
278         DEFAULT_PINMUX(UART2_RXD,       IRDA,            NORMAL,    NORMAL,     INPUT),
279         DEFAULT_PINMUX(UART2_TXD,       IRDA,            NORMAL,    NORMAL,     OUTPUT),
280         DEFAULT_PINMUX(UART2_RTS_N,     UARTB,           NORMAL,    NORMAL,     OUTPUT),
281         DEFAULT_PINMUX(UART2_CTS_N,     UARTB,           NORMAL,    NORMAL,     INPUT),
282         DEFAULT_PINMUX(UART3_TXD,       UARTC,           NORMAL,    NORMAL,     OUTPUT),
283         DEFAULT_PINMUX(UART3_RXD,       UARTC,           NORMAL,    NORMAL,     INPUT),
284         DEFAULT_PINMUX(UART3_CTS_N,     UARTC,           NORMAL,    NORMAL,     INPUT),
285         DEFAULT_PINMUX(UART3_RTS_N,     UARTC,           NORMAL,    NORMAL,     OUTPUT),
286         DEFAULT_PINMUX(GPIO_PU0,        RSVD1,           NORMAL,    NORMAL,     INPUT),
287         DEFAULT_PINMUX(GPIO_PU1,        RSVD1,           NORMAL,    NORMAL,     OUTPUT),
288         DEFAULT_PINMUX(GPIO_PU2,        RSVD1,           NORMAL,    NORMAL,     INPUT),
289         DEFAULT_PINMUX(GPIO_PU3,        RSVD1,           NORMAL,    NORMAL,     INPUT),
290         DEFAULT_PINMUX(GPIO_PU4,        RSVD1,           NORMAL,    NORMAL,     OUTPUT),
291         DEFAULT_PINMUX(GPIO_PU5,        PWM2,            NORMAL,    NORMAL,     INPUT),
292         DEFAULT_PINMUX(GPIO_PU6,        RSVD1,           NORMAL,    NORMAL,     INPUT),
293         DEFAULT_PINMUX(DAP4_FS,         I2S3,            NORMAL,    NORMAL,     INPUT),
294         DEFAULT_PINMUX(DAP4_DIN,        I2S3,            NORMAL,    NORMAL,     INPUT),
295         DEFAULT_PINMUX(DAP4_DOUT,       I2S3,            NORMAL,    NORMAL,     INPUT),
296         DEFAULT_PINMUX(DAP4_SCLK,       I2S3,            NORMAL,    NORMAL,     INPUT),
297         DEFAULT_PINMUX(CLK3_OUT,        EXTPERIPH3,      NORMAL,    NORMAL,     OUTPUT),
298         DEFAULT_PINMUX(CLK3_REQ,        DEV3,            NORMAL,    NORMAL,     INPUT),
299         DEFAULT_PINMUX(GMI_WP_N,        GMI,             NORMAL,    NORMAL,     INPUT),
300
301         DEFAULT_PINMUX(KB_ROW5,         OWR,             NORMAL,    NORMAL,     OUTPUT),
302         DEFAULT_PINMUX(KB_ROW12,        KBC,             NORMAL,    NORMAL,     OUTPUT),
303         DEFAULT_PINMUX(KB_ROW14,        KBC,             NORMAL,    NORMAL,     OUTPUT),
304         DEFAULT_PINMUX(KB_ROW15,        KBC,             NORMAL,    NORMAL,     OUTPUT),
305
306 #if 0 /* for testing on Verbier */
307         DEFAULT_PINMUX(GMI_WAIT,        NAND,            NORMAL,    NORMAL,     INPUT),
308         DEFAULT_PINMUX(GMI_ADV_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
309         DEFAULT_PINMUX(GMI_CLK,         NAND,            NORMAL,    NORMAL,     OUTPUT),
310         DEFAULT_PINMUX(GMI_CS0_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
311         DEFAULT_PINMUX(GMI_CS1_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
312         DEFAULT_PINMUX(GMI_CS3_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
313         DEFAULT_PINMUX(GMI_CS4_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
314         DEFAULT_PINMUX(GMI_CS6_N,       NAND_ALT,        NORMAL,    NORMAL,     OUTPUT),
315         DEFAULT_PINMUX(GMI_CS7_N,       NAND_ALT,        NORMAL,    NORMAL,     OUTPUT),
316         DEFAULT_PINMUX(GMI_AD0,         NAND,            NORMAL,    NORMAL,     INPUT),
317         DEFAULT_PINMUX(GMI_AD1,         NAND,            NORMAL,    NORMAL,     INPUT),
318         DEFAULT_PINMUX(GMI_AD2,         NAND,            NORMAL,    NORMAL,     INPUT),
319         DEFAULT_PINMUX(GMI_AD3,         NAND,            NORMAL,    NORMAL,     INPUT),
320         DEFAULT_PINMUX(GMI_AD4,         NAND,            NORMAL,    NORMAL,     INPUT),
321         DEFAULT_PINMUX(GMI_AD5,         NAND,            NORMAL,    NORMAL,     INPUT),
322         DEFAULT_PINMUX(GMI_AD6,         NAND,            NORMAL,    NORMAL,     INPUT),
323         DEFAULT_PINMUX(GMI_AD7,         NAND,            NORMAL,    NORMAL,     INPUT),
324         DEFAULT_PINMUX(GMI_AD8,         NAND,            NORMAL,    NORMAL,     OUTPUT),
325         DEFAULT_PINMUX(GMI_AD9,         NAND,            NORMAL,    NORMAL,     INPUT),
326         DEFAULT_PINMUX(GMI_AD10,        NAND,            NORMAL,    NORMAL,     OUTPUT),
327         DEFAULT_PINMUX(GMI_AD11,        NAND,            NORMAL,    NORMAL,     INPUT),
328         DEFAULT_PINMUX(GMI_AD12,        NAND,            NORMAL,    NORMAL,     INPUT),
329         DEFAULT_PINMUX(GMI_AD13,        NAND,            NORMAL,    NORMAL,     INPUT),
330         DEFAULT_PINMUX(GMI_AD14,        NAND,            NORMAL,    NORMAL,     INPUT),
331         DEFAULT_PINMUX(GMI_AD15,        NAND,            NORMAL,    NORMAL,     INPUT),
332         DEFAULT_PINMUX(GMI_WR_N,        NAND,            NORMAL,    NORMAL,     OUTPUT),
333         DEFAULT_PINMUX(GMI_OE_N,        NAND,            NORMAL,    NORMAL,     OUTPUT),
334         DEFAULT_PINMUX(GMI_DQS,         NAND,            NORMAL,    NORMAL,     INPUT),
335 #else
336         DEFAULT_PINMUX(GMI_AD8,         PWM0,            NORMAL,    NORMAL,     OUTPUT), /* LCD1_BL_PWM */
337 #endif
338         DEFAULT_PINMUX(GMI_A16,         SPI4,            NORMAL,    NORMAL,     INPUT),
339         DEFAULT_PINMUX(GMI_A17,         SPI4,            NORMAL,    NORMAL,     INPUT),
340         DEFAULT_PINMUX(GMI_A18,         SPI4,            NORMAL,    NORMAL,     INPUT),
341         DEFAULT_PINMUX(GMI_A19,         SPI4,            NORMAL,    NORMAL,     INPUT),
342         DEFAULT_PINMUX(CAM_MCLK,        VI_ALT2,         PULL_UP,   NORMAL,     INPUT),
343         DEFAULT_PINMUX(GPIO_PCC1,       RSVD1,           NORMAL,    NORMAL,     INPUT),
344         DEFAULT_PINMUX(GPIO_PBB0,       RSVD1,           NORMAL,    NORMAL,     INPUT),
345         DEFAULT_PINMUX(GPIO_PBB3,       VGP3,            NORMAL,    NORMAL,     INPUT),
346         DEFAULT_PINMUX(GPIO_PBB5,       VGP5,            NORMAL,    NORMAL,     INPUT),
347         DEFAULT_PINMUX(GPIO_PBB6,       VGP6,            NORMAL,    NORMAL,     INPUT),
348         DEFAULT_PINMUX(GPIO_PBB7,       I2S4,            NORMAL,    NORMAL,     INPUT),
349         DEFAULT_PINMUX(GPIO_PCC2,       I2S4,            NORMAL,    NORMAL,     INPUT),
350         DEFAULT_PINMUX(JTAG_RTCK,       RTCK,            NORMAL,    NORMAL,     OUTPUT),
351
352         /*  KBC keys */
353         DEFAULT_PINMUX(KB_ROW0,         KBC,             PULL_UP,   NORMAL,     INPUT),
354         DEFAULT_PINMUX(KB_ROW1,         KBC,             PULL_UP,   NORMAL,     INPUT),
355         DEFAULT_PINMUX(KB_ROW2,         KBC,             PULL_UP,   NORMAL,     INPUT),
356         DEFAULT_PINMUX(KB_ROW3,         KBC,             PULL_UP,   NORMAL,     INPUT),
357         DEFAULT_PINMUX(KB_COL0,         KBC,             PULL_UP,   NORMAL,     INPUT),
358         DEFAULT_PINMUX(KB_COL1,         KBC,             PULL_UP,   NORMAL,     INPUT),
359         DEFAULT_PINMUX(KB_COL2,         KBC,             PULL_UP,   NORMAL,     INPUT),
360         DEFAULT_PINMUX(KB_COL3,         KBC,             PULL_UP,   NORMAL,     INPUT),
361         DEFAULT_PINMUX(KB_COL4,         KBC,             PULL_UP,   NORMAL,     INPUT),
362         DEFAULT_PINMUX(KB_COL5,         KBC,             PULL_UP,   NORMAL,     INPUT),
363         DEFAULT_PINMUX(GPIO_PV0,        RSVD,            PULL_UP,   NORMAL,     INPUT),
364
365         DEFAULT_PINMUX(CLK_32K_OUT,     BLINK,           NORMAL,    NORMAL,     OUTPUT),
366         DEFAULT_PINMUX(SYS_CLK_REQ,     SYSCLK,          NORMAL,    NORMAL,     OUTPUT),
367         DEFAULT_PINMUX(OWR,             OWR,             NORMAL,    NORMAL,     INPUT),
368         DEFAULT_PINMUX(DAP1_FS,         I2S0,            NORMAL,    NORMAL,     INPUT),
369         DEFAULT_PINMUX(DAP1_DIN,        I2S0,            NORMAL,    NORMAL,     INPUT),
370         DEFAULT_PINMUX(DAP1_DOUT,       I2S0,            NORMAL,    NORMAL,     INPUT),
371         DEFAULT_PINMUX(DAP1_SCLK,       I2S0,            NORMAL,    NORMAL,     INPUT),
372         DEFAULT_PINMUX(CLK1_REQ,        DAP,             NORMAL,    NORMAL,     INPUT),
373         DEFAULT_PINMUX(CLK1_OUT,        EXTPERIPH1,      NORMAL,    NORMAL,     INPUT),
374 #if 0 /* For HDA realtek Codec */
375         DEFAULT_PINMUX(SPDIF_IN,        DAP2,            PULL_DOWN, NORMAL,     INPUT),
376 #else
377         DEFAULT_PINMUX(SPDIF_IN,        SPDIF,           NORMAL,    NORMAL,     INPUT),
378 #endif
379         DEFAULT_PINMUX(SPDIF_OUT,       SPDIF,           NORMAL,    NORMAL,     OUTPUT),
380 #if 0 /* For HDA realtek Codec */
381         DEFAULT_PINMUX(DAP2_FS,         HDA,             PULL_DOWN, NORMAL,     INPUT),
382         DEFAULT_PINMUX(DAP2_DIN,        HDA,             PULL_DOWN, NORMAL,     INPUT),
383         DEFAULT_PINMUX(DAP2_DOUT,       HDA,             PULL_DOWN, NORMAL,     INPUT),
384         DEFAULT_PINMUX(DAP2_SCLK,       HDA,             PULL_DOWN, NORMAL,     INPUT),
385 #else
386         DEFAULT_PINMUX(DAP2_FS,         I2S1,            NORMAL,    NORMAL,     INPUT),
387         DEFAULT_PINMUX(DAP2_DIN,        I2S1,            NORMAL,    NORMAL,     INPUT),
388         DEFAULT_PINMUX(DAP2_DOUT,       I2S1,            NORMAL,    NORMAL,     INPUT),
389         DEFAULT_PINMUX(DAP2_SCLK,       I2S1,            NORMAL,    NORMAL,     INPUT),
390 #endif
391         DEFAULT_PINMUX(SPI2_CS1_N,      SPI2,            PULL_UP,   NORMAL,     INPUT),
392         DEFAULT_PINMUX(SPI1_MOSI,       SPI1,            NORMAL,    NORMAL,     INPUT),
393         DEFAULT_PINMUX(SPI1_SCK,        SPI1,            NORMAL,    NORMAL,     INPUT),
394         DEFAULT_PINMUX(SPI1_CS0_N,      SPI1,            NORMAL,    NORMAL,     INPUT),
395         DEFAULT_PINMUX(SPI1_MISO,       SPI1,            NORMAL,    NORMAL,     INPUT),
396         DEFAULT_PINMUX(PEX_L0_PRSNT_N,  PCIE,            NORMAL,    NORMAL,     INPUT),
397         DEFAULT_PINMUX(PEX_L0_RST_N,    PCIE,            NORMAL,    NORMAL,     OUTPUT),
398         DEFAULT_PINMUX(PEX_L0_CLKREQ_N, PCIE,            NORMAL,    NORMAL,     INPUT),
399         DEFAULT_PINMUX(PEX_WAKE_N,      PCIE,            NORMAL,    NORMAL,     INPUT),
400         DEFAULT_PINMUX(PEX_L1_PRSNT_N,  PCIE,            NORMAL,    NORMAL,     INPUT),
401         DEFAULT_PINMUX(PEX_L1_RST_N,    PCIE,            NORMAL,    NORMAL,     OUTPUT),
402         DEFAULT_PINMUX(PEX_L1_CLKREQ_N, PCIE,            NORMAL,    NORMAL,     INPUT),
403         DEFAULT_PINMUX(PEX_L2_PRSNT_N,  PCIE,            NORMAL,    NORMAL,     INPUT),
404         DEFAULT_PINMUX(PEX_L2_RST_N,    PCIE,            NORMAL,    NORMAL,     OUTPUT),
405         DEFAULT_PINMUX(PEX_L2_CLKREQ_N, PCIE,            NORMAL,    NORMAL,     INPUT),
406         DEFAULT_PINMUX(HDMI_CEC,        CEC,             NORMAL,    NORMAL,     INPUT),
407         DEFAULT_PINMUX(HDMI_INT,        RSVD0,           NORMAL,    TRISTATE,   INPUT),
408
409         /* Gpios */
410         /* SDMMC1 CD gpio */
411         DEFAULT_PINMUX(GMI_IORDY,       RSVD1,           PULL_UP,   NORMAL,     INPUT),
412         /* SDMMC1 WP gpio */
413         DEFAULT_PINMUX(VI_D11,          RSVD1,           PULL_UP,   NORMAL,     INPUT),
414         /* Touch panel GPIO */
415         /* Touch IRQ */
416         DEFAULT_PINMUX(GMI_AD12,        NAND,            PULL_UP,   NORMAL,     INPUT),
417
418         /* Touch RESET */
419         DEFAULT_PINMUX(GMI_AD14,        NAND,            NORMAL,    NORMAL,     OUTPUT),
420
421
422         /* Power rails GPIO */
423         DEFAULT_PINMUX(SPI2_SCK,        GMI,             NORMAL,    NORMAL,     INPUT),
424         DEFAULT_PINMUX(GPIO_PBB4,       VGP4,            NORMAL,    NORMAL,     INPUT),
425         DEFAULT_PINMUX(KB_ROW8,         KBC,             PULL_UP,   NORMAL,     INPUT),
426         DEFAULT_PINMUX(SDMMC3_DAT5,     SDMMC3,          PULL_UP,   NORMAL,     INPUT),
427         DEFAULT_PINMUX(SDMMC3_DAT4,     SDMMC3,          PULL_UP,   NORMAL,     INPUT),
428
429         VI_PINMUX(VI_D6,           VI,              NORMAL,    NORMAL,     OUTPUT, DISABLE, DISABLE),
430         VI_PINMUX(VI_D8,           SDMMC2,          NORMAL,    NORMAL,     INPUT,  DISABLE, DISABLE),
431         VI_PINMUX(VI_D9,           SDMMC2,          NORMAL,    NORMAL,     INPUT,  DISABLE, DISABLE),
432         VI_PINMUX(VI_PCLK,         RSVD1,           PULL_UP,   TRISTATE,   INPUT,  DISABLE, DISABLE),
433         VI_PINMUX(VI_HSYNC,        RSVD1,           NORMAL,    NORMAL,     INPUT,  DISABLE, DISABLE),
434         VI_PINMUX(VI_VSYNC,        RSVD1,           NORMAL,    NORMAL,     INPUT,  DISABLE, DISABLE),
435 };
436
437 static __initdata struct tegra_pingroup_config cardhu_pinmux_e118x[] = {
438         /* Power rails GPIO */
439         DEFAULT_PINMUX(SPI2_SCK,        SPI2,            NORMAL,    NORMAL,     INPUT),
440         DEFAULT_PINMUX(GMI_RST_N,       RSVD3,           PULL_UP,   TRISTATE,   INPUT),
441         DEFAULT_PINMUX(GMI_AD15,        NAND,            PULL_UP,   TRISTATE,   INPUT),
442 };
443
444 static __initdata struct tegra_pingroup_config cardhu_pinmux_pm311[] = {
445         /* Power rails GPIO */
446         DEFAULT_PINMUX(SPI2_SCK,        SPI2,            NORMAL,    NORMAL,     INPUT),
447         DEFAULT_PINMUX(PEX_L2_RST_N,    PCIE,            PULL_UP,   TRISTATE,   INPUT),
448         DEFAULT_PINMUX(PEX_L2_CLKREQ_N, PCIE,            PULL_UP,   TRISTATE,   INPUT),
449 };
450
451 static __initdata struct tegra_pingroup_config cardhu_pinmux_cardhu[] = {
452         DEFAULT_PINMUX(LCD_CS0_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
453         DEFAULT_PINMUX(LCD_SCK,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
454         DEFAULT_PINMUX(LCD_CS1_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
455         DEFAULT_PINMUX(LCD_M1,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
456
457         DEFAULT_PINMUX(GMI_CS2_N,       RSVD1,           PULL_UP,   NORMAL,     INPUT),
458         DEFAULT_PINMUX(GMI_AD8,         PWM0,            NORMAL,    NORMAL,     OUTPUT),
459         DEFAULT_PINMUX(GMI_AD10,        NAND,            NORMAL,    NORMAL,     OUTPUT),
460
461         /* Power rails GPIO */
462         DEFAULT_PINMUX(GMI_CS2_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
463         DEFAULT_PINMUX(GMI_RST_N,       RSVD3,           PULL_UP,   NORMAL,     INPUT),
464         DEFAULT_PINMUX(GMI_AD15,        NAND,            PULL_UP,   NORMAL,     INPUT),
465
466         DEFAULT_PINMUX(GMI_CS0_N,       GMI,             PULL_UP,   NORMAL,     INPUT),
467         DEFAULT_PINMUX(GMI_CS1_N,       GMI,             PULL_UP,   TRISTATE,   INPUT),
468         /*TP_IRQ*/
469         DEFAULT_PINMUX(GMI_CS4_N,       GMI,             PULL_UP,   NORMAL,     INPUT),
470         /*PCIE dock detect*/
471         DEFAULT_PINMUX(GPIO_PU4,        RSVD1,           PULL_UP,   NORMAL,     INPUT),
472 };
473
474 static __initdata struct tegra_pingroup_config cardhu_pinmux_cardhu_a03[] = {
475         DEFAULT_PINMUX(LCD_CS0_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
476         DEFAULT_PINMUX(LCD_SCK,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
477         DEFAULT_PINMUX(LCD_CS1_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
478         DEFAULT_PINMUX(LCD_M1,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
479
480         DEFAULT_PINMUX(GMI_CS2_N,       RSVD1,           PULL_UP,   NORMAL,     INPUT),
481         DEFAULT_PINMUX(GMI_AD8,         PWM0,            NORMAL,    NORMAL,     OUTPUT),
482         DEFAULT_PINMUX(GMI_AD10,        NAND,            NORMAL,    NORMAL,     OUTPUT),
483
484         /* Power rails GPIO */
485         DEFAULT_PINMUX(PEX_L0_PRSNT_N,  PCIE,            NORMAL,    NORMAL,     INPUT),
486         DEFAULT_PINMUX(PEX_L0_CLKREQ_N, PCIE,            NORMAL,    NORMAL,     INPUT),
487         DEFAULT_PINMUX(PEX_L1_CLKREQ_N, RSVD3,           PULL_UP,   NORMAL,     INPUT),
488         DEFAULT_PINMUX(PEX_L1_PRSNT_N,  RSVD3,           PULL_UP,   NORMAL,     INPUT),
489
490         /*PCIE dock detect*/
491         DEFAULT_PINMUX(GPIO_PU4,        RSVD1,           PULL_UP,   NORMAL,     INPUT),
492 };
493
494 static __initdata struct tegra_pingroup_config cardhu_pinmux_e1291_a04[] = {
495         DEFAULT_PINMUX(GMI_AD15,        NAND,            PULL_DOWN,   NORMAL,   OUTPUT),
496         DEFAULT_PINMUX(ULPI_DATA6,      UARTA,           NORMAL,    NORMAL,     OUTPUT),
497         DEFAULT_PINMUX(SPI2_MOSI,       SPI6,            NORMAL,    NORMAL,     INPUT),
498         DEFAULT_PINMUX(DAP3_SCLK,       RSVD1,           NORMAL,    NORMAL,     OUTPUT),
499
500         /*PCIE dock detect*/
501         DEFAULT_PINMUX(GPIO_PU4,        RSVD1,           PULL_UP,   NORMAL,     INPUT),
502 };
503
504 static __initdata struct tegra_pingroup_config cardhu_pinmux_pm315[] = {
505         DEFAULT_PINMUX(GMI_AD15,        NAND,            PULL_DOWN,   NORMAL,   OUTPUT),
506         DEFAULT_PINMUX(ULPI_DATA6,      UARTA,           NORMAL,    NORMAL,     OUTPUT),
507         DEFAULT_PINMUX(SPI2_MOSI,       SPI6,            NORMAL,    NORMAL,     INPUT),
508         DEFAULT_PINMUX(DAP3_SCLK,       RSVD1,           NORMAL,    NORMAL,     OUTPUT),
509         /* PCIE dock detect */
510         DEFAULT_PINMUX(GPIO_PU4,        RSVD1,           PULL_UP,   NORMAL,     INPUT),
511         /* CDC enable for realtek RTL5640 */
512         DEFAULT_PINMUX(SPI2_SCK,        SPI2,            NORMAL,    NORMAL,     OUTPUT),
513         DEFAULT_PINMUX(SPI2_CS1_N,      SPI2,            NORMAL,    NORMAL,     INPUT),
514         /* Power up for USB1, USB3 */
515         DEFAULT_PINMUX(GMI_AD13,        NAND,            PULL_UP,    NORMAL,    INPUT),
516 };
517
518 static __initdata struct tegra_pingroup_config cardhu_pinmux_e1198[] = {
519         DEFAULT_PINMUX(LCD_CS0_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
520         DEFAULT_PINMUX(LCD_SCK,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
521         DEFAULT_PINMUX(LCD_CS1_N,       DISPLAYA,        NORMAL,    NORMAL,     INPUT),
522         DEFAULT_PINMUX(LCD_M1,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
523
524         DEFAULT_PINMUX(GMI_CS2_N,       RSVD1,           PULL_UP,   NORMAL,     INPUT),
525         DEFAULT_PINMUX(GMI_AD8,         PWM0,            NORMAL,    NORMAL,     OUTPUT),
526         DEFAULT_PINMUX(GMI_AD10,        NAND,            NORMAL,    NORMAL,     OUTPUT),
527
528         /* SPI2 */
529         DEFAULT_PINMUX(SPI2_SCK,        SPI2,            PULL_UP,    NORMAL,     INPUT),
530         DEFAULT_PINMUX(SPI2_MOSI,       SPI2,            PULL_UP,    NORMAL,     INPUT),
531         DEFAULT_PINMUX(SPI2_MISO,       SPI2,            PULL_UP,    NORMAL,     INPUT),
532         DEFAULT_PINMUX(SPI2_CS0_N,      SPI2,            PULL_UP,    NORMAL,     INPUT),
533         DEFAULT_PINMUX(SPI2_CS2_N,      SPI2,            PULL_UP,    NORMAL,     INPUT),
534 };
535
536 static __initdata struct tegra_pingroup_config cardhu_pinmux_pm269_e1506[] = {
537         DEFAULT_PINMUX(LCD_M1,          DISPLAYA,        NORMAL,    NORMAL,     OUTPUT),
538         DEFAULT_PINMUX(LCD_DC1,         DISPLAYA,        NORMAL,    NORMAL,     OUTPUT),
539 };
540
541 static __initdata struct tegra_pingroup_config unused_pins_lowpower[] = {
542         DEFAULT_PINMUX(GMI_WAIT,        NAND,           PULL_UP,    TRISTATE,     OUTPUT),
543         DEFAULT_PINMUX(GMI_ADV_N,       NAND,           NORMAL,     TRISTATE,     OUTPUT),
544         DEFAULT_PINMUX(GMI_CLK,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
545         DEFAULT_PINMUX(GMI_CS3_N,       NAND,           NORMAL,     NORMAL,       OUTPUT),
546         DEFAULT_PINMUX(GMI_CS6_N,       SATA,           NORMAL,     NORMAL,       OUTPUT),
547         DEFAULT_PINMUX(GMI_CS7_N,       NAND,           PULL_UP,    NORMAL,       INPUT),
548         DEFAULT_PINMUX(GMI_AD0,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
549         DEFAULT_PINMUX(GMI_AD1,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
550         DEFAULT_PINMUX(GMI_AD2,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
551         DEFAULT_PINMUX(GMI_AD3,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
552         DEFAULT_PINMUX(GMI_AD4,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
553         DEFAULT_PINMUX(GMI_AD5,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
554         DEFAULT_PINMUX(GMI_AD6,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
555         DEFAULT_PINMUX(GMI_AD7,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
556         DEFAULT_PINMUX(GMI_AD11,        NAND,           NORMAL,     NORMAL,       OUTPUT),
557         DEFAULT_PINMUX(GMI_AD13,        NAND,           PULL_UP,    NORMAL,       INPUT),
558         DEFAULT_PINMUX(GMI_WR_N,        NAND,           NORMAL,     TRISTATE,     OUTPUT),
559         DEFAULT_PINMUX(GMI_OE_N,        NAND,           NORMAL,     TRISTATE,     OUTPUT),
560         DEFAULT_PINMUX(GMI_DQS,         NAND,           NORMAL,     TRISTATE,     OUTPUT),
561 };
562
563 static __initdata struct tegra_pingroup_config unused_pins_lowpower_e1506[] = {
564         DEFAULT_PINMUX(LCD_D0,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
565         DEFAULT_PINMUX(LCD_D1,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
566         DEFAULT_PINMUX(LCD_D2,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
567         DEFAULT_PINMUX(LCD_D3,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
568         DEFAULT_PINMUX(LCD_D4,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
569         DEFAULT_PINMUX(LCD_D5,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
570         DEFAULT_PINMUX(LCD_D6,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
571         DEFAULT_PINMUX(LCD_D7,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
572         DEFAULT_PINMUX(LCD_D8,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
573         DEFAULT_PINMUX(LCD_D9,          DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
574         DEFAULT_PINMUX(LCD_D10,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
575         DEFAULT_PINMUX(LCD_D11,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
576         DEFAULT_PINMUX(LCD_D12,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
577         DEFAULT_PINMUX(LCD_D13,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
578         DEFAULT_PINMUX(LCD_D14,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
579         DEFAULT_PINMUX(LCD_D15,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
580         DEFAULT_PINMUX(LCD_D16,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
581         DEFAULT_PINMUX(LCD_D17,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
582         DEFAULT_PINMUX(LCD_D18,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
583         DEFAULT_PINMUX(LCD_D19,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
584         DEFAULT_PINMUX(LCD_D20,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
585         DEFAULT_PINMUX(LCD_D21,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
586         DEFAULT_PINMUX(LCD_D22,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
587         DEFAULT_PINMUX(LCD_D23,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
588
589         DEFAULT_PINMUX(LCD_DC0,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
590         DEFAULT_PINMUX(LCD_PWR0,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
591         DEFAULT_PINMUX(LCD_PWR1,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
592         DEFAULT_PINMUX(LCD_PWR2,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
593         DEFAULT_PINMUX(LCD_CS0_N,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
594         DEFAULT_PINMUX(LCD_CS1_N,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
595
596         DEFAULT_PINMUX(LCD_PCLK,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
597         DEFAULT_PINMUX(LCD_WR_N,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
598         DEFAULT_PINMUX(LCD_HSYNC,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
599         DEFAULT_PINMUX(LCD_VSYNC,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
600         DEFAULT_PINMUX(LCD_SCK,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
601         DEFAULT_PINMUX(LCD_SDOUT,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
602         DEFAULT_PINMUX(LCD_SDIN,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
603 };
604
605 static __initdata struct tegra_pingroup_config gmi_pins_269[] = {
606         /* Continuation of table unused_pins_lowpower only for PM269 */
607         DEFAULT_PINMUX(GMI_CS0_N,       NAND,           PULL_UP,    NORMAL,       OUTPUT),
608         DEFAULT_PINMUX(GMI_CS1_N,       NAND,           PULL_UP,    TRISTATE,     OUTPUT),
609         DEFAULT_PINMUX(GMI_CS2_N,       RSVD1,          NORMAL,     NORMAL,       INPUT),
610         DEFAULT_PINMUX(GMI_CS3_N,       NAND,           NORMAL,     TRISTATE,     OUTPUT),
611         DEFAULT_PINMUX(GMI_CS4_N,       NAND,           PULL_UP,    NORMAL,       INPUT),
612         DEFAULT_PINMUX(GMI_CS6_N,       SATA,           NORMAL,     TRISTATE,     OUTPUT),
613         DEFAULT_PINMUX(GMI_CS7_N,       NAND,           PULL_UP,    NORMAL,       INPUT),
614         DEFAULT_PINMUX(GMI_AD8,         PWM0,           NORMAL,     NORMAL,       OUTPUT),
615         DEFAULT_PINMUX(GMI_AD10,        NAND,           NORMAL,     NORMAL,       OUTPUT),
616         DEFAULT_PINMUX(GMI_AD11,        NAND,           NORMAL,     NORMAL,       OUTPUT),
617         DEFAULT_PINMUX(GMI_AD13,        NAND,           PULL_UP,    TRISTATE,     OUTPUT),
618         DEFAULT_PINMUX(GMI_AD15,        NAND,           PULL_UP,    TRISTATE,     INPUT),
619         DEFAULT_PINMUX(GMI_A16,         SPI4,           NORMAL,     NORMAL,       INPUT),
620         DEFAULT_PINMUX(GMI_A17,         SPI4,           NORMAL,     NORMAL,       INPUT),
621         DEFAULT_PINMUX(GMI_A18,         SPI4,           PULL_UP,    NORMAL,       INPUT),
622         DEFAULT_PINMUX(GMI_A19,         SPI4,           NORMAL,     NORMAL,       INPUT),
623         DEFAULT_PINMUX(GMI_RST_N,       NAND,           PULL_UP,    NORMAL,       INPUT),
624         DEFAULT_PINMUX(GMI_WP_N,        NAND,           NORMAL,     NORMAL,       INPUT),
625 };
626
627 static void __init cardhu_wm8903_audio_init(void)
628 {
629         int ret = gpio_request(TEGRA_GPIO_CDC_IRQ, "wm8903");
630         if (ret < 0) {
631                 pr_err("%s() Error in gpio_request() for gpio %d\n",
632                                         __func__, ret);
633         }
634         ret = gpio_direction_input(TEGRA_GPIO_CDC_IRQ);
635         if (ret < 0) {
636                 pr_err("%s() Error in setting gpio %d to in/out\n",
637                                         __func__, ret);
638                 gpio_free(TEGRA_GPIO_CDC_IRQ);
639         }
640 }
641
642 static void __init beaver_rt5640_audio_init(void)
643 {
644         int ret = gpio_request(TEGRA_GPIO_RTL_CDC_IRQ, "rt5640");
645         if (ret < 0)
646                 pr_err("%s() Error in gpio_request() for gpio %d\n",
647                                         __func__, ret);
648         ret = gpio_direction_input(TEGRA_GPIO_RTL_CDC_IRQ);
649         if (ret < 0) {
650                 pr_err("%s() Error in setting gpio %d to in/out\n",
651                                         __func__, ret);
652                 gpio_free(TEGRA_GPIO_RTL_CDC_IRQ);
653         }
654
655 }
656
657 #define GPIO_INIT_PIN_MODE(_gpio, _is_input, _value)    \
658         {                                       \
659                 .gpio_nr        = _gpio,        \
660                 .is_input       = _is_input,    \
661                 .value          = _value,       \
662         }
663
664
665 /* E1198-A01/E1291 specific  fab < A03 */
666 static struct gpio_init_pin_info init_gpio_mode_e1291_a02[] = {
667         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PH7, false, 0),
668         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PI4, false, 0),
669 };
670
671 /* E1198-A02/E1291 specific  fab = A03 */
672 static struct gpio_init_pin_info init_gpio_mode_e1291_a03[] = {
673         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD6, false, 0),
674         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD4, false, 0),
675 };
676
677 /* E1198-A02/E1291 specific  fab >= A04 */
678 static struct gpio_init_pin_info init_gpio_mode_e1291_a04[] = {
679         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD6, false, 0),
680         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD4, false, 0),
681         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PR2, false, 0),
682 };
683
684 static struct gpio_init_pin_info init_gpio_mode_pm315[] = {
685         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD6, false, 0),
686         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PDD4, false, 0),
687         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PH5, false, 1),
688         GPIO_INIT_PIN_MODE(TEGRA_GPIO_PR2, false, 0),
689 };
690
691 static void __init cardhu_gpio_init_configure(void)
692 {
693         struct board_info board_info;
694         int len;
695         int i;
696         struct gpio_init_pin_info *pins_info;
697
698         tegra_get_board_info(&board_info);
699
700         switch (board_info.board_id) {
701         case BOARD_E1198:
702                 if (board_info.fab < BOARD_FAB_A02) {
703                         len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
704                         pins_info = init_gpio_mode_e1291_a02;
705                 } else {
706                         len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
707                         pins_info = init_gpio_mode_e1291_a03;
708                 }
709                 break;
710         case BOARD_E1291:
711                 if (board_info.fab < BOARD_FAB_A03) {
712                         len = ARRAY_SIZE(init_gpio_mode_e1291_a02);
713                         pins_info = init_gpio_mode_e1291_a02;
714                 } else if (board_info.fab == BOARD_FAB_A03) {
715                         len = ARRAY_SIZE(init_gpio_mode_e1291_a03);
716                         pins_info = init_gpio_mode_e1291_a03;
717                 } else {
718                         len = ARRAY_SIZE(init_gpio_mode_e1291_a04);
719                         pins_info = init_gpio_mode_e1291_a04;
720                 }
721                 break;
722         case BOARD_PM315:
723                 len = ARRAY_SIZE(init_gpio_mode_pm315);
724                 pins_info = init_gpio_mode_pm315;
725                 break;
726         default:
727                 return;
728         }
729
730         for (i = 0; i < len; ++i) {
731                 tegra_gpio_init_configure(pins_info->gpio_nr,
732                         pins_info->is_input, pins_info->value);
733                 pins_info++;
734         }
735 }
736
737 int __init cardhu_gpio_init(void)
738 {
739         struct board_info board_info;
740
741         tegra_get_board_info(&board_info);
742         cardhu_gpio_init_configure();
743         if (board_info.board_id == BOARD_PM315)
744                 beaver_rt5640_audio_init();
745         else
746                 cardhu_wm8903_audio_init();
747
748         return 0;
749 }
750
751 int __init cardhu_pinmux_init(void)
752 {
753         struct board_info board_info;
754         struct board_info display_board_info;
755
756         tegra30_default_pinmux();
757
758         tegra_pinmux_config_table(cardhu_pinmux_common, ARRAY_SIZE(cardhu_pinmux_common));
759         tegra_drive_pinmux_config_table(cardhu_drive_pinmux,
760                                         ARRAY_SIZE(cardhu_drive_pinmux));
761
762         tegra_get_board_info(&board_info);
763         tegra_get_display_board_info(&display_board_info);
764         switch (board_info.board_id) {
765         case BOARD_E1198:
766                 tegra_pinmux_config_table(cardhu_pinmux_e1198,
767                                         ARRAY_SIZE(cardhu_pinmux_e1198));
768                 tegra_pinmux_config_table(unused_pins_lowpower,
769                                         ARRAY_SIZE(unused_pins_lowpower));
770                 if (board_info.fab >= BOARD_FAB_A02)
771                         tegra_pinmux_config_table(cardhu_pinmux_cardhu_a03,
772                                         ARRAY_SIZE(cardhu_pinmux_cardhu_a03));
773                 break;
774         case BOARD_E1291:
775                 if (board_info.fab < BOARD_FAB_A03) {
776                         tegra_pinmux_config_table(cardhu_pinmux_cardhu,
777                                         ARRAY_SIZE(cardhu_pinmux_cardhu));
778                         tegra_pinmux_config_table(unused_pins_lowpower,
779                                         ARRAY_SIZE(unused_pins_lowpower));
780                 } else {
781                         tegra_pinmux_config_table(cardhu_pinmux_cardhu_a03,
782                                         ARRAY_SIZE(cardhu_pinmux_cardhu_a03));
783                 }
784                 if (board_info.fab >= BOARD_FAB_A04)
785                         tegra_pinmux_config_table(cardhu_pinmux_e1291_a04,
786                                         ARRAY_SIZE(cardhu_pinmux_e1291_a04));
787                 break;
788         case BOARD_PM315:
789                 tegra_pinmux_config_table(cardhu_pinmux_cardhu_a03,
790                                 ARRAY_SIZE(cardhu_pinmux_cardhu_a03));
791                 tegra_pinmux_config_table(cardhu_pinmux_pm315,
792                                 ARRAY_SIZE(cardhu_pinmux_pm315));
793                 break;
794         case BOARD_PM269:
795         case BOARD_PM305:
796         case BOARD_PM311:
797         case BOARD_E1257:
798                 if (board_info.board_id == BOARD_PM311 || board_info.board_id == BOARD_PM305) {
799                         tegra_pinmux_config_table(cardhu_pinmux_pm311,
800                                         ARRAY_SIZE(cardhu_pinmux_pm311));
801                 } else {
802                         tegra_pinmux_config_table(cardhu_pinmux_e118x,
803                                         ARRAY_SIZE(cardhu_pinmux_e118x));
804                 }
805
806                 if (display_board_info.board_id == BOARD_DISPLAY_E1506) {
807                         tegra_pinmux_config_table(cardhu_pinmux_pm269_e1506,
808                                         ARRAY_SIZE(cardhu_pinmux_pm269_e1506));
809                         tegra_pinmux_config_table(unused_pins_lowpower_e1506,
810                                         ARRAY_SIZE(unused_pins_lowpower_e1506));
811                 }
812
813                 tegra_pinmux_config_table(unused_pins_lowpower,
814                                         ARRAY_SIZE(unused_pins_lowpower));
815                 tegra_pinmux_config_table(gmi_pins_269,
816                                         ARRAY_SIZE(gmi_pins_269));
817                 break;
818         default:
819                 tegra_pinmux_config_table(cardhu_pinmux_e118x,
820                                         ARRAY_SIZE(cardhu_pinmux_e118x));
821                 break;
822         }
823
824         return 0;
825 }
826
827 #define PIN_GPIO_LPM(_name, _gpio, _is_input, _value)   \
828         {                                       \
829                 .name           = _name,        \
830                 .gpio_nr        = _gpio,        \
831                 .is_gpio        = true,         \
832                 .is_input       = _is_input,    \
833                 .value          = _value,       \
834         }
835
836 struct gpio_init_pin_info pin_lpm_cardhu_common[] = {
837         PIN_GPIO_LPM("GMI_CS3_N", TEGRA_GPIO_PK4, 0, 0),
838         PIN_GPIO_LPM("GMI_CS4_N", TEGRA_GPIO_PK2, 1, 0),
839         PIN_GPIO_LPM("GMI_CS7",   TEGRA_GPIO_PI6, 1, 0),
840         PIN_GPIO_LPM("GMI_CS0",   TEGRA_GPIO_PJ0, 1, 0),
841         PIN_GPIO_LPM("GMI_CS1",   TEGRA_GPIO_PJ2, 1, 0),
842         PIN_GPIO_LPM("GMI_WP_N",  TEGRA_GPIO_PC7, 1, 0),
843 };
844
845 /* E1198 without PM313 display board */
846 struct gpio_init_pin_info pin_lpm_cardhu_common_wo_pm313[] = {
847         PIN_GPIO_LPM("GMI_AD11",  TEGRA_GPIO_PH3, 0, 0),
848 };
849
850 struct gpio_init_pin_info vddio_gmi_pins_pm269[] = {
851         PIN_GPIO_LPM("GMI_CS3_N", TEGRA_GPIO_PK4, 0, 0),
852         PIN_GPIO_LPM("GMI_CS4_N", TEGRA_GPIO_PK2, 1, 0),
853         PIN_GPIO_LPM("GMI_CS7",   TEGRA_GPIO_PI6, 1, 0),
854         PIN_GPIO_LPM("GMI_CS0",   TEGRA_GPIO_PJ0, 1, 0),
855         PIN_GPIO_LPM("GMI_CS1",   TEGRA_GPIO_PJ2, 1, 0),
856         PIN_GPIO_LPM("GMI_WP_N",  TEGRA_GPIO_PC7, 1, 0),
857         PIN_GPIO_LPM("GMI_A16",   TEGRA_GPIO_PJ7, 0, 0),
858         PIN_GPIO_LPM("GMI_A17",   TEGRA_GPIO_PB0, 0, 0),
859         PIN_GPIO_LPM("GMI_A18",   TEGRA_GPIO_PB1, 1, 0),
860         PIN_GPIO_LPM("GMI_A19",   TEGRA_GPIO_PK7, 0, 0),
861 };
862
863 /* PM269 without PM313 display board */
864 struct gpio_init_pin_info vddio_gmi_pins_pm269_wo_pm313[] = {
865         PIN_GPIO_LPM("GMI_CS2",   TEGRA_GPIO_PK3, 1, 0),
866 };
867
868 struct gpio_init_pin_info vddio_gmi_pins_pm269_e1506[] = {
869         PIN_GPIO_LPM("GMI_CS2",   TEGRA_GPIO_PK3, 1, 0),
870 };
871
872 static struct gpio_init_pin_info cardhu_unused_gpio_pins_e1506[] = {
873         PIN_GPIO_LPM("LCD_D0",     TEGRA_GPIO_PE0,  0, 0),
874         PIN_GPIO_LPM("LCD_D1",     TEGRA_GPIO_PE1,  0, 0),
875         PIN_GPIO_LPM("LCD_D2",     TEGRA_GPIO_PE2,  0, 0),
876         PIN_GPIO_LPM("LCD_D3",     TEGRA_GPIO_PE3,  0, 0),
877         PIN_GPIO_LPM("LCD_D4",     TEGRA_GPIO_PE4,  0, 0),
878         PIN_GPIO_LPM("LCD_D5",     TEGRA_GPIO_PE5,  0, 0),
879         PIN_GPIO_LPM("LCD_D6",     TEGRA_GPIO_PE6,  0, 0),
880         PIN_GPIO_LPM("LCD_D7",     TEGRA_GPIO_PE7,  0, 0),
881         PIN_GPIO_LPM("LCD_D8",     TEGRA_GPIO_PF0,  0, 0),
882         PIN_GPIO_LPM("LCD_D9",     TEGRA_GPIO_PF1,  0, 0),
883         PIN_GPIO_LPM("LCD_D10",    TEGRA_GPIO_PF2,  0, 0),
884         PIN_GPIO_LPM("LCD_D11",    TEGRA_GPIO_PF3,  0, 0),
885         PIN_GPIO_LPM("LCD_D12",    TEGRA_GPIO_PF4,  0, 0),
886         PIN_GPIO_LPM("LCD_D13",    TEGRA_GPIO_PF5,  0, 0),
887         PIN_GPIO_LPM("LCD_D14",    TEGRA_GPIO_PF6,  0, 0),
888         PIN_GPIO_LPM("LCD_D15",    TEGRA_GPIO_PF7,  0, 0),
889         PIN_GPIO_LPM("LCD_D16",    TEGRA_GPIO_PM0,  0, 0),
890         PIN_GPIO_LPM("LCD_D17",    TEGRA_GPIO_PM1,  0, 0),
891         PIN_GPIO_LPM("LCD_D18",    TEGRA_GPIO_PM2,  0, 0),
892         PIN_GPIO_LPM("LCD_D19",    TEGRA_GPIO_PM3,  0, 0),
893         PIN_GPIO_LPM("LCD_D20",    TEGRA_GPIO_PM4,  0, 0),
894         PIN_GPIO_LPM("LCD_D21",    TEGRA_GPIO_PM5,  0, 0),
895         PIN_GPIO_LPM("LCD_D22",    TEGRA_GPIO_PM6,  0, 0),
896         PIN_GPIO_LPM("LCD_D23",    TEGRA_GPIO_PM7,  0, 0),
897
898         PIN_GPIO_LPM("LCD_DC0",     TEGRA_GPIO_PN6,  0, 0),
899         PIN_GPIO_LPM("LCD_PWR0",    TEGRA_GPIO_PB2,  0, 0),
900         PIN_GPIO_LPM("LCD_PWR1",    TEGRA_GPIO_PC1,  0, 0),
901         PIN_GPIO_LPM("LCD_PWR2",    TEGRA_GPIO_PC6,  0, 0),
902         PIN_GPIO_LPM("LCD_CS0_N",   TEGRA_GPIO_PN4,  0, 0),
903         PIN_GPIO_LPM("LCD_CS1_N",   TEGRA_GPIO_PW0,  0, 0),
904         PIN_GPIO_LPM("LCD_PCLK",    TEGRA_GPIO_PB3,  0, 0),
905         PIN_GPIO_LPM("LCD_WR_N",    TEGRA_GPIO_PZ3,  0, 0),
906         PIN_GPIO_LPM("LCD_HSYNC",   TEGRA_GPIO_PJ3,  0, 0),
907         PIN_GPIO_LPM("LCD_VSYNC",   TEGRA_GPIO_PJ4,  0, 0),
908         PIN_GPIO_LPM("LCD_SCK",     TEGRA_GPIO_PZ4,  0, 0),
909         PIN_GPIO_LPM("LCD_SDOUT",   TEGRA_GPIO_PN5,  0, 0),
910         PIN_GPIO_LPM("LCD_SDIN",    TEGRA_GPIO_PZ2,  0, 0),
911 };
912
913 static void set_unused_pin_gpio(struct gpio_init_pin_info *lpm_pin_info,
914                 int list_count)
915 {
916         int i;
917         struct gpio_init_pin_info *pin_info;
918         int ret;
919
920         for (i = 0; i < list_count; ++i) {
921                 pin_info = (struct gpio_init_pin_info *)(lpm_pin_info + i);
922                 if (!pin_info->is_gpio)
923                         continue;
924
925                 ret = gpio_request(pin_info->gpio_nr, pin_info->name);
926                 if (ret < 0) {
927                         pr_err("%s() Error in gpio_request() for gpio %d\n",
928                                         __func__, pin_info->gpio_nr);
929                         continue;
930                 }
931                 if (pin_info->is_input)
932                         ret = gpio_direction_input(pin_info->gpio_nr);
933                 else
934                         ret = gpio_direction_output(pin_info->gpio_nr,
935                                                         pin_info->value);
936                 if (ret < 0) {
937                         pr_err("%s() Error in setting gpio %d to in/out\n",
938                                 __func__, pin_info->gpio_nr);
939                         gpio_free(pin_info->gpio_nr);
940                         continue;
941                 }
942         }
943 }
944
945 /* Initialize the pins to desired state as per power/asic/system-eng
946  * recomendation */
947 int __init cardhu_pins_state_init(void)
948 {
949         struct board_info board_info;
950         struct board_info display_board_info;
951
952         tegra_get_board_info(&board_info);
953         tegra_get_display_board_info(&display_board_info);
954         if ((board_info.board_id == BOARD_E1291) ||
955                 (board_info.board_id == BOARD_E1198)) {
956                         set_unused_pin_gpio(&pin_lpm_cardhu_common[0],
957                                         ARRAY_SIZE(pin_lpm_cardhu_common));
958
959                         if (display_board_info.board_id != BOARD_DISPLAY_PM313) {
960                                 set_unused_pin_gpio(&pin_lpm_cardhu_common_wo_pm313[0],
961                                                 ARRAY_SIZE(pin_lpm_cardhu_common_wo_pm313));
962                         }
963         }
964
965         if ((board_info.board_id == BOARD_PM269) ||
966                 (board_info.board_id == BOARD_E1257) ||
967                 (board_info.board_id == BOARD_PM305) ||
968                 (board_info.board_id == BOARD_PM311)) {
969                         set_unused_pin_gpio(&vddio_gmi_pins_pm269[0],
970                                 ARRAY_SIZE(vddio_gmi_pins_pm269));
971
972                         if (display_board_info.board_id == BOARD_DISPLAY_E1506) {
973                                 set_unused_pin_gpio(&vddio_gmi_pins_pm269_e1506[0],
974                                                 ARRAY_SIZE(vddio_gmi_pins_pm269_e1506));
975                                 set_unused_pin_gpio(cardhu_unused_gpio_pins_e1506,
976                                                 ARRAY_SIZE(cardhu_unused_gpio_pins_e1506));
977                         } else if (display_board_info.board_id != BOARD_DISPLAY_PM313) {
978                                 set_unused_pin_gpio(&vddio_gmi_pins_pm269_wo_pm313[0],
979                                                 ARRAY_SIZE(vddio_gmi_pins_pm269_wo_pm313));
980                         }
981         }
982
983         return 0;
984 }