[ARM] tegra: ventana: fix pinmux for wifi
authorGary King <gking@nvidia.com>
Mon, 6 Sep 2010 01:03:08 +0000 (18:03 -0700)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:28:28 +0000 (16:28 -0700)
configure the drive pinmux for wifi and i2c, and configure
the tristate and pullups for the wifi pins correctly

Change-Id: I40cddea16aa66e3a286c7ccc93677d5459ae3717
Signed-off-by: Gary King <gking@nvidia.com>
arch/arm/mach-tegra/board-ventana-pinmux.c

index 5ea49544b5dd398ec7a3b3c295b332e6ce58d001..188934d6fa51fd99133d91f3c21b8fbc96a24886 100644 (file)
 #include <linux/init.h>
 #include <mach/pinmux.h>
 
+#define DEFAULT_DRIVE(_name)                                   \
+       {                                                       \
+               .pingroup = TEGRA_DRIVE_PINGROUP_##_name,       \
+               .hsm = TEGRA_HSM_DISABLE,                       \
+               .schmitt = TEGRA_SCHMITT_ENABLE,                \
+               .drive = TEGRA_DRIVE_DIV_1,                     \
+               .pull_down = TEGRA_PULL_31,                     \
+               .pull_up = TEGRA_PULL_31,                       \
+               .slew_rising = TEGRA_SLEW_SLOWEST,              \
+               .slew_falling = TEGRA_SLEW_SLOWEST,             \
+       }
+
+
+static __initdata struct tegra_drive_pingroup_config ventana_drive_pinmux[] = {
+       DEFAULT_DRIVE(DBG),
+       DEFAULT_DRIVE(DDC),
+       DEFAULT_DRIVE(VI1),
+       DEFAULT_DRIVE(VI2),
+       DEFAULT_DRIVE(SDIO1),
+};
+
 static __initdata struct tegra_pingroup_config ventana_pinmux[] = {
        {TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
@@ -104,13 +125,13 @@ static __initdata struct tegra_pingroup_config ventana_pinmux[] = {
        {TEGRA_PINGROUP_SDB,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_SDC,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_SDD,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-       {TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+       {TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_PULL_UP,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_SLXK,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,   TEGRA_TRI_TRISTATE},
-       {TEGRA_PINGROUP_SPDI,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-       {TEGRA_PINGROUP_SPDO,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+       {TEGRA_PINGROUP_SPDI,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+       {TEGRA_PINGROUP_SPDO,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
        {TEGRA_PINGROUP_SPIA,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_SPIB,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
        {TEGRA_PINGROUP_SPIC,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
@@ -140,4 +161,6 @@ static __initdata struct tegra_pingroup_config ventana_pinmux[] = {
 void __init ventana_pinmux_init(void)
 {
        tegra_pinmux_config_table(ventana_pinmux, ARRAY_SIZE(ventana_pinmux));
+       tegra_drive_pinmux_config_table(ventana_drive_pinmux,
+                                       ARRAY_SIZE(ventana_drive_pinmux));
 }