aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/control.c
diff options
context:
space:
mode:
authorNishanth Menon <nm@ti.com>2010-12-20 15:05:06 -0500
committerKevin Hilman <khilman@deeprootsystems.com>2010-12-21 17:45:50 -0500
commit458e999eb14a301d4176783c8fcb277f5d009b4e (patch)
tree7300efdef971f91e4d7601f9bc1174fe9716f313 /arch/arm/mach-omap2/control.c
parent8cdfd83473d9b408b924b5d32777ac3fddd251ff (diff)
OMAP3630: PM: Erratum i608: disable RTA
Erratum id: i608 RTA (Retention Till Access) feature is not supported and leads to device stability issues when enabled. This impacts modules with embedded memories on OMAP3630 Workaround is to disable RTA on boot and coming out of core off. For disabling RTA coming out of off mode, we do this by overriding the restore pointer for 3630 as the first point of entry before caches are touched and is common for GP and HS devices. To disable earlier than this could be possible by modifying the PPA for HS devices, but not for GP devices. Cc: Kevin Hilman <khilman@deeprootsystems.com> Cc: Tony Lindgren <tony@atomide.com> Acked-by: Jean Pihet <j-pihet@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> [ambresh@ti.com: co-developer] Signed-off-by: Ambresh K <ambresh@ti.com> Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-omap2/control.c')
-rw-r--r--arch/arm/mach-omap2/control.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c
index 1fa3294b6048..27ed558fdf54 100644
--- a/arch/arm/mach-omap2/control.c
+++ b/arch/arm/mach-omap2/control.c
@@ -241,7 +241,10 @@ void omap3_save_scratchpad_contents(void)
241 241
242 /* Populate the Scratchpad contents */ 242 /* Populate the Scratchpad contents */
243 scratchpad_contents.boot_config_ptr = 0x0; 243 scratchpad_contents.boot_config_ptr = 0x0;
244 if (omap_rev() != OMAP3430_REV_ES3_0 && 244 if (cpu_is_omap3630())
245 scratchpad_contents.public_restore_ptr =
246 virt_to_phys(get_omap3630_restore_pointer());
247 else if (omap_rev() != OMAP3430_REV_ES3_0 &&
245 omap_rev() != OMAP3430_REV_ES3_1) 248 omap_rev() != OMAP3430_REV_ES3_1)
246 scratchpad_contents.public_restore_ptr = 249 scratchpad_contents.public_restore_ptr =
247 virt_to_phys(get_restore_pointer()); 250 virt_to_phys(get_restore_pointer());
@@ -474,4 +477,12 @@ void omap3_control_restore_context(void)
474 omap_ctrl_writel(control_context.csi, OMAP343X_CONTROL_CSI); 477 omap_ctrl_writel(control_context.csi, OMAP343X_CONTROL_CSI);
475 return; 478 return;
476} 479}
480
481void omap3630_ctrl_disable_rta(void)
482{
483 if (!cpu_is_omap3630())
484 return;
485 omap_ctrl_writel(OMAP36XX_RTA_DISABLE, OMAP36XX_CONTROL_MEM_RTA_CTRL);
486}
487
477#endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ 488#endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */