summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/pm.c2
-rw-r--r--arch/arm/mach-tegra/reset.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c
index ab00f9b6f78d..63b9b7d613fd 100644
--- a/arch/arm/mach-tegra/pm.c
+++ b/arch/arm/mach-tegra/pm.c
@@ -777,6 +777,7 @@ int tegra_suspend_dram(enum tegra_suspend_mode mode, unsigned int flags)
if (mode == TEGRA_SUSPEND_LP0) {
tegra_lp0_cpu_mode(true);
tegra_lp0_suspend_mc();
+ tegra_cpu_reset_handler_save();
}
suspend_cpu_complex(flags);
@@ -796,6 +797,7 @@ int tegra_suspend_dram(enum tegra_suspend_mode mode, unsigned int flags)
tegra_init_cache();
if (mode == TEGRA_SUSPEND_LP0) {
+ tegra_cpu_reset_handler_restore();
tegra_lp0_resume_mc();
tegra_lp0_cpu_mode(false);
} else if (mode == TEGRA_SUSPEND_LP1)
diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.c
index 1ae5a1407a37..8c076515ec4b 100644
--- a/arch/arm/mach-tegra/reset.c
+++ b/arch/arm/mach-tegra/reset.c
@@ -67,15 +67,13 @@ void tegra_cpu_reset_handler_enable(void)
}
#ifdef CONFIG_PM_SLEEP
-static unsigned long cpu_reset_handler_save[TEGRA_RESET_DATA_SIZE];
-
void tegra_cpu_reset_handler_save(void)
{
unsigned int i;
BUG_ON(!is_enabled);
for (i = 0; i < TEGRA_RESET_DATA_SIZE; i++)
- cpu_reset_handler_save[i] =
- tegra_cpu_reset_handler_ptr[i];
+ __tegra_cpu_reset_handler_data[i] =
+ tegra_cpu_reset_handler_ptr[i];
is_enabled = false;
}
@@ -83,9 +81,10 @@ void tegra_cpu_reset_handler_restore(void)
{
unsigned int i;
BUG_ON(is_enabled);
+ tegra_cpu_reset_handler_enable();
for (i = 0; i < TEGRA_RESET_DATA_SIZE; i++)
tegra_cpu_reset_handler_ptr[i] =
- cpu_reset_handler_save[i];
+ __tegra_cpu_reset_handler_data[i];
is_enabled = true;
}
#endif