diff options
author | Jin Qian <jqian@nvidia.com> | 2011-08-23 18:15:32 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:48:50 -0800 |
commit | 9d5db80b8fbfd5454a9927a19d6e3ce2432bec9e (patch) | |
tree | 74219a87cdc8add4b7c2176dfac83a67b162e28f /arch/arm/mach-tegra | |
parent | f4292da9e98e5707730264f8ddba867c6d9a2aa6 (diff) |
ARM: tegra: power: restore reset handler after lp0
Bug 862504
Change-Id: I910f4f229a2040d13d79e2a4f64fd2558509d9e7
Reviewed-on: http://git-master/r/50241
Reviewed-by: Jin Qian <jqian@nvidia.com>
Tested-by: Jin Qian <jqian@nvidia.com>
Reviewed-by: Aleksandr Frid <afrid@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Rebase-Id: R3c4d055f1c2ebad76ad2a9305d5e02f5a4411400
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/pm.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-tegra/reset.c | 9 |
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 |