Revert "Merge commit 'main-jb-2012.08.03-B4' into t114-0806"
[linux-2.6.git] / arch / arm / mach-tegra / board-enterprise-pinmux.c
index 7abe9ca..71aff6e 100644 (file)
@@ -88,6 +88,9 @@ static __initdata struct tegra_drive_pingroup_config enterprise_drive_pinmux[] =
 
        /* UART3 */
        SET_DRIVE(UART3,        DISABLE, ENABLE, DIV_1, 31, 31, FASTEST, FASTEST),
+
+       /* SDMMC1 */
+       SET_DRIVE(SDIO1,        DISABLE, DISABLE, DIV_1, 46, 42, FAST, FAST),
 };
 
 #define DEFAULT_PINMUX(_pingroup, _mux, _pupd, _tri, _io)      \
@@ -138,7 +141,7 @@ static __initdata struct tegra_drive_pingroup_config enterprise_drive_pinmux[] =
                .ioreset        = TEGRA_PIN_IO_RESET_##_ioreset \
        }
 
-static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
+static __initdata struct tegra_pingroup_config enterprise_pinmux_common[] = {
        /* SDMMC1 pinmux */
        DEFAULT_PINMUX(SDMMC1_CLK,      SDMMC1,          NORMAL,     NORMAL,     INPUT),
        DEFAULT_PINMUX(SDMMC1_CMD,      SDMMC1,          PULL_UP,    NORMAL,     INPUT),
@@ -219,7 +222,7 @@ static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
        DEFAULT_PINMUX(LCD_D5,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(LCD_D6,          RSVD1,           NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(LCD_D7,          RSVD1,           NORMAL,    NORMAL,     OUTPUT),
-       DEFAULT_PINMUX(LCD_D8,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
+       DEFAULT_PINMUX(LCD_D8,          DISPLAYA,        NORMAL,    TRISTATE,   INPUT),
        DEFAULT_PINMUX(LCD_D9,          DISPLAYA,        NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(LCD_D11,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(LCD_D12,         DISPLAYA,        NORMAL,    NORMAL,     INPUT),
@@ -261,7 +264,7 @@ static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
        DEFAULT_PINMUX(GPIO_PU3,        UARTA,           NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GPIO_PU4,        PWM1,            NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GPIO_PU5,        PWM2,            NORMAL,    NORMAL,     INPUT),
-       DEFAULT_PINMUX(GPIO_PU6,        PWM3,            NORMAL,    NORMAL,     OUTPUT),
+       DEFAULT_PINMUX(GPIO_PU6,        PWM3,            NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(DAP4_FS,         I2S3,            NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(DAP4_DIN,        I2S3,            NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(DAP4_DOUT,       I2S3,            NORMAL,    NORMAL,     INPUT),
@@ -269,6 +272,9 @@ static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
        DEFAULT_PINMUX(GMI_AD8,         PWM0,            NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GMI_AD9,         NAND,            NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GMI_AD10,        NAND,            NORMAL,    NORMAL,     OUTPUT),
+#if IS_EXTERNAL_PWM
+       DEFAULT_PINMUX(GMI_AD11,        PWM3,            NORMAL,    NORMAL,     OUTPUT),
+#endif
        DEFAULT_PINMUX(GMI_A16,         UARTD,           NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GMI_A17,         UARTD,           NORMAL,    NORMAL,     INPUT),
        DEFAULT_PINMUX(GMI_A18,         UARTD,           NORMAL,    NORMAL,     INPUT),
@@ -361,7 +367,12 @@ static __initdata struct tegra_pingroup_config enterprise_pinmux[] = {
        VI_PINMUX(VI_VSYNC,        RSVD1,           NORMAL,    NORMAL,     INPUT,  DISABLE, DISABLE),
 };
 
-static __initdata struct tegra_pingroup_config enterprise_unused_pinmux[] = {
+static __initdata struct tegra_pingroup_config enterprise_pinmux_a03[] = {
+       DEFAULT_PINMUX(LCD_PWR0,        DISPLAYA,        NORMAL,    NORMAL,     OUTPUT),
+       DEFAULT_PINMUX(LCD_D10,         DISPLAYA,        NORMAL,    NORMAL,     OUTPUT),
+};
+
+static __initdata struct tegra_pingroup_config enterprise_unused_pinmux_common[] = {
        DEFAULT_PINMUX(CLK2_OUT,       EXTPERIPH2,       PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(CLK2_REQ,       DAP,              PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(CLK3_OUT,       EXTPERIPH3,       PULL_DOWN,    TRISTATE,  OUTPUT),
@@ -378,7 +389,9 @@ static __initdata struct tegra_pingroup_config enterprise_unused_pinmux[] = {
        DEFAULT_PINMUX(GMI_AD5,         GMI,             NORMAL,       TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(GMI_AD6,         GMI,             NORMAL,       TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(GMI_AD7,         GMI,             NORMAL,       TRISTATE,  OUTPUT),
+#if !(IS_EXTERNAL_PWM)
        DEFAULT_PINMUX(GMI_AD11,        GMI,             PULL_DOWN,    TRISTATE,  OUTPUT),
+#endif
        DEFAULT_PINMUX(GMI_CS0_N,       GMI,             PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(GMI_CS2_N,       GMI,             PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(GMI_CS3_N,       GMI,             PULL_DOWN,    TRISTATE,  OUTPUT),
@@ -400,8 +413,6 @@ static __initdata struct tegra_pingroup_config enterprise_unused_pinmux[] = {
        DEFAULT_PINMUX(LCD_WR_N,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(LCD_HSYNC,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(LCD_VSYNC,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
-       DEFAULT_PINMUX(LCD_D10,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
-       DEFAULT_PINMUX(LCD_PWR0,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(LCD_SCK,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(LCD_SDOUT,       DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
        DEFAULT_PINMUX(LCD_SDIN,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
@@ -419,6 +430,11 @@ static __initdata struct tegra_pingroup_config enterprise_unused_pinmux[] = {
        DEFAULT_PINMUX(SPI2_MISO,       SPI2,            PULL_DOWN,    TRISTATE,  OUTPUT),
 };
 
+static __initdata struct tegra_pingroup_config enterprise_unused_pinmux_a02[] = {
+       DEFAULT_PINMUX(LCD_D10,         DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
+       DEFAULT_PINMUX(LCD_PWR0,        DISPLAYA,        PULL_DOWN,    TRISTATE,  OUTPUT),
+};
+
 static struct tegra_gpio_table gpio_table[] = {
        { .gpio = TEGRA_GPIO_HP_DET,            .enable = true  },
 };
@@ -439,7 +455,7 @@ struct pin_info_low_power_mode {
                .is_input       = _is_input,    \
                .value          = _value,       \
        }
-static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins[] = {
+static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins_common[] = {
        PIN_GPIO_LPM("CLK2_OUT",     TEGRA_GPIO_PW5,   0, 0),
        PIN_GPIO_LPM("CLK2_REQ",     TEGRA_GPIO_PCC5,  0, 0),
        PIN_GPIO_LPM("CLK3_OUT",     TEGRA_GPIO_PEE0,  0, 0),
@@ -456,7 +472,9 @@ static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins[] =
        PIN_GPIO_LPM("GMI_AD5",      TEGRA_GPIO_PG5,  0, 0),
        PIN_GPIO_LPM("GMI_AD6",      TEGRA_GPIO_PG6,  0, 0),
        PIN_GPIO_LPM("GMI_AD7",      TEGRA_GPIO_PG7,  0, 0),
+#if !(IS_EXTERNAL_PWM)
        PIN_GPIO_LPM("GMI_AD11",     TEGRA_GPIO_PH3,  0, 0),
+#endif
        PIN_GPIO_LPM("GMI_CS0_N",    TEGRA_GPIO_PJ0,  0, 0),
        PIN_GPIO_LPM("GMI_CS2_N",    TEGRA_GPIO_PK3,  0, 0),
        PIN_GPIO_LPM("GMI_CS3_N",    TEGRA_GPIO_PK4,  0, 0),
@@ -479,8 +497,6 @@ static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins[] =
        PIN_GPIO_LPM("LCD_WR_N",     TEGRA_GPIO_PZ3,  0, 0),
        PIN_GPIO_LPM("LCD_HSYNC",    TEGRA_GPIO_PJ3,  0, 0),
        PIN_GPIO_LPM("LCD_VSYNC",    TEGRA_GPIO_PJ4,  0, 0),
-       PIN_GPIO_LPM("LCD_D10",      TEGRA_GPIO_PF2,  0, 0),
-       PIN_GPIO_LPM("LCD_PWR0",     TEGRA_GPIO_PB2,  0, 0),
        PIN_GPIO_LPM("LCD_SCK",      TEGRA_GPIO_PZ4,  0, 0),
        PIN_GPIO_LPM("LCD_SDOUT",    TEGRA_GPIO_PN5,  0, 0),
        PIN_GPIO_LPM("LCD_SDIN",     TEGRA_GPIO_PZ2,  0, 0),
@@ -498,6 +514,11 @@ static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins[] =
        PIN_GPIO_LPM("SPI2_MISO",    TEGRA_GPIO_PX1,  0, 0),
 };
 
+static __initdata struct pin_info_low_power_mode enterprise_unused_gpio_pins_a02[] = {
+       PIN_GPIO_LPM("LCD_D10",      TEGRA_GPIO_PF2,  0, 0),
+       PIN_GPIO_LPM("LCD_PWR0",     TEGRA_GPIO_PB2,  0, 0),
+};
+
 static void enterprise_set_unused_pin_gpio(struct pin_info_low_power_mode *lpm_pin_info,
                int list_count)
 {
@@ -527,22 +548,35 @@ static void enterprise_set_unused_pin_gpio(struct pin_info_low_power_mode *lpm_p
                        gpio_free(pin_info->gpio_nr);
                        continue;
                }
-               tegra_gpio_enable(pin_info->gpio_nr);
        }
 }
 
 int __init enterprise_pinmux_init(void)
 {
+       struct board_info board_info;
+       tegra_get_board_info(&board_info);
+
        tegra30_default_pinmux();
 
-       tegra_pinmux_config_table(enterprise_pinmux, ARRAY_SIZE(enterprise_pinmux));
+       tegra_pinmux_config_table(enterprise_pinmux_common, ARRAY_SIZE(enterprise_pinmux_common));
        tegra_drive_pinmux_config_table(enterprise_drive_pinmux,
                                        ARRAY_SIZE(enterprise_drive_pinmux));
-       tegra_pinmux_config_table(enterprise_unused_pinmux,
-                               ARRAY_SIZE(enterprise_unused_pinmux));
+       tegra_pinmux_config_table(enterprise_unused_pinmux_common,
+                               ARRAY_SIZE(enterprise_unused_pinmux_common));
 
        tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
-       enterprise_set_unused_pin_gpio(enterprise_unused_gpio_pins,
-                       ARRAY_SIZE(enterprise_unused_gpio_pins));
+       enterprise_set_unused_pin_gpio(enterprise_unused_gpio_pins_common,
+                       ARRAY_SIZE(enterprise_unused_gpio_pins_common));
+
+       if (board_info.fab < BOARD_FAB_A03) {
+               tegra_pinmux_config_table(enterprise_unused_pinmux_a02,
+                                         ARRAY_SIZE(enterprise_unused_pinmux_a02));
+               enterprise_set_unused_pin_gpio(enterprise_unused_gpio_pins_a02,
+                                              ARRAY_SIZE(enterprise_unused_gpio_pins_a02));
+       } else {
+               tegra_pinmux_config_table(enterprise_pinmux_a03,
+                                         ARRAY_SIZE(enterprise_pinmux_a03));
+       }
+
        return 0;
 }