summaryrefslogtreecommitdiff
path: root/arch/arm/mach-omap2/pm34xx.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/pm34xx.c')
-rw-r--r--arch/arm/mach-omap2/pm34xx.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index afe15f00637..6daf94a0223 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -62,6 +62,7 @@
/* pm34xx errata defined in pm.h */
u16 pm34xx_errata;
bool suspend_debug;
+bool suspend_offmode_ref_saved;
struct power_state {
struct powerdomain *pwrdm;
@@ -391,6 +392,12 @@ void omap_sram_idle(bool in_suspend)
omap3_cm_restore_context();
omap3_sram_restore_context();
omap2_sms_restore_context();
+
+ if (unlikely(!suspend_offmode_ref_saved)) {
+ suspend_offmode_ref_saved = true;
+ pm_dbg_regs_copy(3, 1);
+ pm_dbg_regs_copy(4, 2);
+ }
}
if (core_next_state == PWRDM_POWER_OFF) {
omap2_prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK,
@@ -457,8 +464,13 @@ restore:
}
if (ret) {
pr_err("Could not enter target state in pm_suspend\n");
- pm_dbg_regs_dump(1);
- pm_dbg_regs_dump(2);
+ if (suspend_offmode_ref_saved) {
+ pm_dbg_regs_dump_delta(1, 3);
+ pm_dbg_regs_dump_delta(2, 4);
+ } else {
+ pm_dbg_regs_dump(1);
+ pm_dbg_regs_dump(2);
+ }
} else
pr_info("Successfully put all powerdomains to target state\n");