ARM: tegra: pcie: Remove dock detect variable
[linux-3.10.git] / arch / arm / mach-tegra / board-dalmore-pinmux.c
1 /*
2  * arch/arm/mach-tegra/board-dalmore-pinmux.c
3  *
4  * Copyright (C) 2012-2013, NVIDIA Corporation. All rights reserved.
5  *
6  * This software is licensed under the terms of the GNU General Public
7  * License version 2, as published by the Free Software Foundation, and
8  * may be copied, distributed, and modified under those terms.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  */
16
17 #include <linux/kernel.h>
18 #include <linux/init.h>
19 #include <linux/gpio.h>
20 #include <mach/pinmux.h>
21 #include <mach/gpio-tegra.h>
22 #include "board.h"
23 #include "board-dalmore.h"
24 #include "devices.h"
25 #include "gpio-names.h"
26 #include "tegra-board-id.h"
27
28 #include <mach/pinmux-t11.h>
29
30 static __initdata struct tegra_drive_pingroup_config dalmore_drive_pinmux[] = {
31         /* DEFAULT_DRIVE(<pin_group>), */
32         /* SDMMC1 */
33         SET_DRIVE(SDIO1, ENABLE, DISABLE, DIV_1, 36, 20, SLOW, SLOW),
34
35         /* SDMMC3 */
36         SET_DRIVE(SDIO3, ENABLE, DISABLE, DIV_1, 22, 36, FASTEST, FASTEST),
37
38         /* SDMMC4 */
39         SET_DRIVE_WITH_TYPE(GMA, ENABLE, DISABLE, DIV_1, 2, 2, FASTEST,
40                                                                 FASTEST, 1),
41 };
42
43 /* Initially setting all used GPIO's to non-TRISTATE */
44 static __initdata struct tegra_pingroup_config dalmore_pinmux_set_nontristate[] = {
45         DEFAULT_PINMUX(GPIO_X4_AUD,     SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
46         DEFAULT_PINMUX(GPIO_X5_AUD,     SAFE,   PULL_UP,      NORMAL,    INPUT),
47         DEFAULT_PINMUX(GPIO_X7_AUD,     SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
48         DEFAULT_PINMUX(GPIO_W2_AUD,     SAFE,   PULL_UP,      NORMAL,    INPUT),
49         DEFAULT_PINMUX(GPIO_W3_AUD,     SPI6,   PULL_UP,      NORMAL,    INPUT),
50         DEFAULT_PINMUX(GPIO_X1_AUD,     RSVD3,  PULL_DOWN,    NORMAL,    INPUT),
51         DEFAULT_PINMUX(GPIO_X3_AUD,     RSVD3,  PULL_UP,      NORMAL,    INPUT),
52
53         DEFAULT_PINMUX(DAP3_FS,         I2S2,   PULL_DOWN,    NORMAL,    OUTPUT),
54         DEFAULT_PINMUX(DAP3_DIN,        I2S2,   PULL_DOWN,    NORMAL,    OUTPUT),
55         DEFAULT_PINMUX(DAP3_DOUT,       I2S2,   PULL_DOWN,    NORMAL,    OUTPUT),
56         DEFAULT_PINMUX(DAP3_SCLK,       I2S2,   PULL_DOWN,    NORMAL,    OUTPUT),
57         DEFAULT_PINMUX(GPIO_PV0,        RSVD3,  NORMAL,       NORMAL,    INPUT),
58         DEFAULT_PINMUX(GPIO_PV1,        SAFE,   NORMAL,       NORMAL,    INPUT),
59
60         DEFAULT_PINMUX(GPIO_PBB3,       SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
61         DEFAULT_PINMUX(GPIO_PBB5,       SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
62         DEFAULT_PINMUX(GPIO_PBB6,       SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
63         DEFAULT_PINMUX(GPIO_PBB7,       SAFE,   PULL_DOWN,    NORMAL,    OUTPUT),
64         DEFAULT_PINMUX(GPIO_PCC1,       RSVD3,  PULL_DOWN,    NORMAL,    INPUT),
65         DEFAULT_PINMUX(GPIO_PCC2,       RSVD3,  PULL_DOWN,    NORMAL,    INPUT),
66
67         DEFAULT_PINMUX(GMI_AD0,         GMI,    NORMAL,       NORMAL,    OUTPUT),
68         DEFAULT_PINMUX(GMI_AD1,         GMI,    NORMAL,       NORMAL,    OUTPUT),
69         DEFAULT_PINMUX(GMI_AD10,        GMI,    PULL_DOWN,    NORMAL,    OUTPUT),
70         DEFAULT_PINMUX(GMI_AD11,        GMI,    PULL_DOWN,    NORMAL,    OUTPUT),
71         DEFAULT_PINMUX(GMI_AD12,        GMI,    PULL_UP,      NORMAL,    INPUT),
72         DEFAULT_PINMUX(GMI_AD13,        GMI,    PULL_DOWN,    NORMAL,    OUTPUT),
73         DEFAULT_PINMUX(GMI_AD2,         GMI,    NORMAL,       NORMAL,    INPUT),
74         DEFAULT_PINMUX(GMI_AD3,         GMI,    NORMAL,       NORMAL,    INPUT),
75         DEFAULT_PINMUX(GMI_AD8,         GMI,    PULL_DOWN,    NORMAL,    OUTPUT),
76         DEFAULT_PINMUX(GMI_ADV_N,       GMI,    PULL_UP,      NORMAL,    INPUT),
77         DEFAULT_PINMUX(GMI_CLK,         GMI,    PULL_DOWN,    NORMAL,    OUTPUT),
78         DEFAULT_PINMUX(GMI_CS0_N,       GMI,    PULL_UP,      NORMAL,    INPUT),
79         DEFAULT_PINMUX(GMI_CS2_N,       GMI,    PULL_UP,      NORMAL,    INPUT),
80         DEFAULT_PINMUX(GMI_CS3_N,       GMI,    PULL_UP,      NORMAL,    OUTPUT),
81         DEFAULT_PINMUX(GMI_CS4_N,       GMI,    PULL_UP,      NORMAL,    INPUT),
82         DEFAULT_PINMUX(GMI_CS7_N,       GMI,    PULL_UP,      NORMAL,    INPUT),
83         DEFAULT_PINMUX(GMI_DQS_P,       GMI,    PULL_UP,      NORMAL,    INPUT),
84         DEFAULT_PINMUX(GMI_IORDY,       GMI,    PULL_UP,      NORMAL,    INPUT),
85         DEFAULT_PINMUX(GMI_WP_N,        GMI,    PULL_UP,      NORMAL,    INPUT),
86
87         DEFAULT_PINMUX(SDMMC1_WP_N,     SPI4,   PULL_UP,      NORMAL,    OUTPUT),
88         DEFAULT_PINMUX(CLK2_REQ,        RSVD3,  NORMAL,       NORMAL,    OUTPUT),
89
90         DEFAULT_PINMUX(KB_COL3,         KBC,    PULL_UP,      NORMAL,    OUTPUT),
91         DEFAULT_PINMUX(KB_COL5,         KBC,    PULL_UP,      NORMAL,    INPUT),
92         DEFAULT_PINMUX(KB_COL6,         KBC,    PULL_UP,      NORMAL,    OUTPUT),
93         DEFAULT_PINMUX(KB_COL7,         KBC,    PULL_UP,      NORMAL,    OUTPUT),
94         DEFAULT_PINMUX(KB_ROW3,         KBC,    PULL_DOWN,    NORMAL,    INPUT),
95         DEFAULT_PINMUX(KB_ROW4,         KBC,    PULL_DOWN,    NORMAL,    INPUT),
96         DEFAULT_PINMUX(KB_ROW6,         KBC,    PULL_DOWN,    NORMAL,    INPUT),
97         DEFAULT_PINMUX(KB_ROW7,         KBC,    PULL_UP,      NORMAL,    INPUT),
98         DEFAULT_PINMUX(KB_ROW8,         KBC,    PULL_UP,      NORMAL,    INPUT),
99
100         DEFAULT_PINMUX(CLK3_REQ,        RSVD3,  NORMAL,      NORMAL,    OUTPUT),
101         DEFAULT_PINMUX(GPIO_PU4,        PWM1,  NORMAL,      NORMAL,    OUTPUT),
102         DEFAULT_PINMUX(GPIO_PU5,        PWM2,  NORMAL,      NORMAL,    INPUT),
103         DEFAULT_PINMUX(GPIO_PU6,        PWM3,  NORMAL,      NORMAL,    INPUT),
104
105         DEFAULT_PINMUX(HDMI_INT,        SAFE,  PULL_DOWN,    NORMAL,    INPUT),
106
107         DEFAULT_PINMUX(GMI_AD9,         PWM1,   NORMAL,    NORMAL,     OUTPUT),
108 };
109
110 #include "board-dalmore-pinmux-t11x.h"
111
112 static __initdata struct tegra_pingroup_config dalmore_e1611_1000[] = {
113         /* io rdy Lock rotation */
114         DEFAULT_PINMUX(GMI_IORDY,       GMI,    NORMAL, NORMAL, INPUT),
115 };
116
117 static __initdata struct tegra_pingroup_config dalmore_e1611_1001[] = {
118         /* kbcol1 rdy Lock rotation */
119         DEFAULT_PINMUX(KB_COL1,       KBC,         NORMAL,   NORMAL, INPUT),
120 };
121
122 /* THIS IS FOR EXPERIMENTAL OR WORKAROUND PURPOSES. ANYTHING INSIDE THIS TABLE
123  * SHOULD BE CONSIDERED TO BE PUSHED TO PINMUX SPREADSHEET FOR CONSISTENCY
124  */
125 static __initdata struct tegra_pingroup_config manual_config_pinmux[] = {
126 };
127
128 static void __init dalmore_gpio_init_configure(void)
129 {
130         int len;
131         int i;
132         struct gpio_init_pin_info *pins_info;
133
134         len = ARRAY_SIZE(init_gpio_mode_dalmore_common);
135         pins_info = init_gpio_mode_dalmore_common;
136
137         for (i = 0; i < len; ++i) {
138                 tegra_gpio_init_configure(pins_info->gpio_nr,
139                         pins_info->is_input, pins_info->value);
140                 pins_info++;
141         }
142 }
143
144 int __init dalmore_pinmux_init(void)
145 {
146         struct board_info board_info;
147
148         tegra_get_board_info(&board_info);
149
150         tegra_pinmux_config_table(dalmore_pinmux_set_nontristate,
151                                         ARRAY_SIZE(dalmore_pinmux_set_nontristate));
152         dalmore_gpio_init_configure();
153
154         tegra_pinmux_config_table(dalmore_pinmux_common, ARRAY_SIZE(dalmore_pinmux_common));
155         tegra_drive_pinmux_config_table(dalmore_drive_pinmux,
156                                         ARRAY_SIZE(dalmore_drive_pinmux));
157         tegra_pinmux_config_table(unused_pins_lowpower,
158                 ARRAY_SIZE(unused_pins_lowpower));
159
160         if ((board_info.board_id == BOARD_E1611) && (board_info.sku == 1000))
161                 tegra_pinmux_config_table(dalmore_e1611_1000,
162                         ARRAY_SIZE(dalmore_e1611_1000));
163         else if ((board_info.board_id == BOARD_E1611) && (board_info.sku == 1001))
164                 tegra_pinmux_config_table(dalmore_e1611_1001,
165                         ARRAY_SIZE(dalmore_e1611_1001));
166
167         tegra_pinmux_config_table(manual_config_pinmux,
168                 ARRAY_SIZE(manual_config_pinmux));
169
170         return 0;
171 }