[ARM] tegra: suspend: Save protected aperture across LP0
authorColin Cross <ccross@android.com>
Tue, 19 Oct 2010 23:08:48 +0000 (16:08 -0700)
committerColin Cross <ccross@android.com>
Wed, 20 Oct 2010 21:30:17 +0000 (14:30 -0700)
Change-Id: Iab66c566957cfbac8ddab615ec92e57c2164ab68
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/mach-tegra/suspend.c

index c7be121ea8d15bcf736a82e1966ef338ae2bc19c..3b64aa56b0637b2f3c47aaf8aa544df57d02ca9f 100644 (file)
@@ -461,13 +461,14 @@ static void tegra_debug_uart_resume(void)
 
 #define MC_SECURITY_START      0x6c
 #define MC_SECURITY_SIZE       0x70
+#define MC_SECURITY_CFG2       0x7c
 
 static int tegra_suspend_enter(suspend_state_t state)
 {
        struct irq_desc *desc;
        void __iomem *mc = IO_ADDRESS(TEGRA_MC_BASE);
        unsigned long flags;
-       u32 mc_data[2];
+       u32 mc_data[3] = {0, 0, 0};
        int irq;
        bool do_lp0 = (current_suspend_mode == TEGRA_SUSPEND_LP0);
        bool do_lp2 = (current_suspend_mode == TEGRA_SUSPEND_LP2);
@@ -494,6 +495,7 @@ static int tegra_suspend_enter(suspend_state_t state)
 
                mc_data[0] = readl(mc + MC_SECURITY_START);
                mc_data[1] = readl(mc + MC_SECURITY_SIZE);
+               mc_data[2] = readl(mc + MC_SECURITY_CFG2);
        }
 
        for_each_irq_desc(irq, desc) {
@@ -521,6 +523,7 @@ static int tegra_suspend_enter(suspend_state_t state)
        if (do_lp0) {
                writel(mc_data[0], mc + MC_SECURITY_START);
                writel(mc_data[1], mc + MC_SECURITY_SIZE);
+               writel(mc_data[2], mc + MC_SECURITY_CFG2);
 
                tegra_clk_resume();
                tegra_gpio_resume();