arm: tegra: cardhu: Unused vddio_gmi pins to low power
Laxman Dewangan [Wed, 20 Apr 2011 10:07:17 +0000 (15:07 +0530)]
Configuring the unused pins from VDDIO_GMI io rail to output/pulldown/
tristate mode to have low power consumption from this pins.

bug 807813

Original-Change-Id: I17eac7de6066a551f4729c23c5c7d232ca7881b6
Reviewed-on: http://git-master/r/28320
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Original-Change-Id: I5c7856b8e79625777216b714df7716d4879bb187

Rebase-Id: R9408202b3e78f0be3257ecf584aedb2855547011

arch/arm/mach-tegra/board-cardhu-pinmux.c

index 9056887..c59d75f 100644 (file)
@@ -406,6 +406,11 @@ static __initdata struct tegra_pingroup_config cardhu_pinmux_cardhu[] = {
        DEFAULT_PINMUX(GMI_CS2_N,       NAND,            NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(GMI_RST_N,       RSVD3,           PULL_UP,   TRISTATE,   INPUT),
        DEFAULT_PINMUX(GMI_AD15,        NAND,            PULL_UP,   TRISTATE,   INPUT),
+
+       DEFAULT_PINMUX(GMI_CS0_N,       GMI,             NORMAL,    NORMAL,     OUTPUT),
+       DEFAULT_PINMUX(GMI_CS1_N,       GMI,             NORMAL,    TRISTATE,   OUTPUT),
+       /*TP_IRQ*/
+       DEFAULT_PINMUX(GMI_CS4_N,       GMI,             NORMAL,    NORMAL,     INPUT),
 };
 
 static __initdata struct tegra_pingroup_config cardhu_pinmux_cardhu_a03[] = {
@@ -425,6 +430,27 @@ static __initdata struct tegra_pingroup_config cardhu_pinmux_e1198[] = {
        DEFAULT_PINMUX(SPI2_CS2_N,      SPI2,            PULL_UP,    NORMAL,     INPUT),
 };
 
+static __initdata struct tegra_pingroup_config unused_pins_lowpower[] = {
+       DEFAULT_PINMUX(GMI_WAIT,        GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_ADV_N,       GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_CLK,         GMI,            PULL_DOWN,  TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_CS3_N,       GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_CS6_N,       GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD0,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD1,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD2,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD3,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD4,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD5,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD6,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD7,         GMI,            NORMAL,     TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD9,         GMI,            PULL_DOWN,  TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_AD11,        GMI,            PULL_DOWN,  TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_WR_N,        GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_OE_N,        GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+       DEFAULT_PINMUX(GMI_DQS,         GMI,            PULL_UP,    TRISTATE,     OUTPUT),
+};
+
 int __init cardhu_pinmux_init(void)
 {
        struct board_info board_info;
@@ -439,14 +465,19 @@ int __init cardhu_pinmux_init(void)
                                        ARRAY_SIZE(cardhu_pinmux_cardhu));
                tegra_pinmux_config_table(cardhu_pinmux_e1198,
                                        ARRAY_SIZE(cardhu_pinmux_e1198));
+               tegra_pinmux_config_table(unused_pins_lowpower,
+                                       ARRAY_SIZE(unused_pins_lowpower));
                break;
        case BOARD_E1291:
-               if (board_info.fab < 0x3)
+               if (board_info.fab < 0x3) {
                        tegra_pinmux_config_table(cardhu_pinmux_cardhu,
                                        ARRAY_SIZE(cardhu_pinmux_cardhu));
-               else
+                       tegra_pinmux_config_table(unused_pins_lowpower,
+                                       ARRAY_SIZE(unused_pins_lowpower));
+               } else {
                        tegra_pinmux_config_table(cardhu_pinmux_cardhu_a03,
                                        ARRAY_SIZE(cardhu_pinmux_cardhu_a03));
+               }
                break;
        default:
                tegra_pinmux_config_table(cardhu_pinmux_e118x,