ARM: tegra: pluto: set sleep-time pinmux settings for VDDIO_GMI_AP
Eric Miao [Fri, 15 Mar 2013 08:11:17 +0000 (16:11 +0800)]
Reconfigure GMI pins to save additional power on rail VDDIO_GMI_AP
during sleep time.

Bug 1247754

Change-Id: I79559c75b800d3b208a4677b83974fb71d615ce2
Signed-off-by: Eric Miao <emiao@nvidia.com>
Reviewed-on: http://git-master/r/212014
(cherry picked from commit 24a95e11a4a7abab5402c50d88d8558ee37cff9d)
Reviewed-on: http://git-master/r/214957
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>

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

index 23e8e43..0d5ec7e 100644 (file)
@@ -242,6 +242,35 @@ static __initdata struct tegra_pingroup_config pluto_pinmux_set_nontristate[] =
 
 #include "board-pluto-pinmux-t11x.h"
 
+#ifdef CONFIG_PM_SLEEP
+/* pinmux settings during low power mode for power saving purpose */
+static struct tegra_pingroup_config pluto_sleep_pinmux[] = {
+       DEFAULT_PINMUX(GMI_AD14,    DTV,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_AD15,    DTV,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_AD8,     DTV,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_WAIT,    DTV,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_AD6,     SPI4,    NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_AD7,     SPI4,    NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_CS6_N,   SPI4,    NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_WR_N,    SPI4,    NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_CS1_N,   SOC,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_OE_N,    SOC,     NORMAL,    TRISTATE,  INPUT),
+       DEFAULT_PINMUX(GMI_AD10,    GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_AD12,    GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_AD13,    GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_AD14,    GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_AD8,     GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_ADV_N,   GMI,     NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_CLK,     GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_CS0_N,   GMI,     NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_CS3_N,   GMI,     NORMAL,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GMI_CS4_N,   GMI,     NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_CS7_N,   GMI,     NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_IORDY,   GMI,     NORMAL,    NORMAL,    INPUT),
+       DEFAULT_PINMUX(GMI_RST_N,   GMI,     NORMAL,    NORMAL,    INPUT),
+};
+#endif
+
 static void __init pluto_gpio_init_configure(void)
 {
        int len;
@@ -269,6 +298,7 @@ int __init pluto_pinmux_init(void)
                                        ARRAY_SIZE(pluto_drive_pinmux));
        tegra_pinmux_config_table(unused_pins_lowpower,
                ARRAY_SIZE(unused_pins_lowpower));
-
+       tegra11x_set_sleep_pinmux(pluto_sleep_pinmux,
+               ARRAY_SIZE(pluto_sleep_pinmux));
        return 0;
 }