diff options
author | Nishanth Menon <nm@ti.com> | 2010-12-20 15:05:06 -0500 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-12-21 17:45:50 -0500 |
commit | 458e999eb14a301d4176783c8fcb277f5d009b4e (patch) | |
tree | 7300efdef971f91e4d7601f9bc1174fe9716f313 /arch/arm/mach-omap2/pm34xx.c | |
parent | 8cdfd83473d9b408b924b5d32777ac3fddd251ff (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/pm34xx.c')
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 288bee32e2b2..7dbc00005464 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -996,6 +996,8 @@ void omap_push_sram_idle(void) | |||
996 | 996 | ||
997 | static void __init pm_errata_configure(void) | 997 | static void __init pm_errata_configure(void) |
998 | { | 998 | { |
999 | if (cpu_is_omap3630()) | ||
1000 | pm34xx_errata |= PM_RTA_ERRATUM_i608; | ||
999 | } | 1001 | } |
1000 | 1002 | ||
1001 | static int __init omap3_pm_init(void) | 1003 | static int __init omap3_pm_init(void) |
@@ -1056,6 +1058,14 @@ static int __init omap3_pm_init(void) | |||
1056 | pm_idle = omap3_pm_idle; | 1058 | pm_idle = omap3_pm_idle; |
1057 | omap3_idle_init(); | 1059 | omap3_idle_init(); |
1058 | 1060 | ||
1061 | /* | ||
1062 | * RTA is disabled during initialization as per erratum i608 | ||
1063 | * it is safer to disable RTA by the bootloader, but we would like | ||
1064 | * to be doubly sure here and prevent any mishaps. | ||
1065 | */ | ||
1066 | if (IS_PM34XX_ERRATUM(PM_RTA_ERRATUM_i608)) | ||
1067 | omap3630_ctrl_disable_rta(); | ||
1068 | |||
1059 | clkdm_add_wkdep(neon_clkdm, mpu_clkdm); | 1069 | clkdm_add_wkdep(neon_clkdm, mpu_clkdm); |
1060 | if (omap_type() != OMAP2_DEVICE_TYPE_GP) { | 1070 | if (omap_type() != OMAP2_DEVICE_TYPE_GP) { |
1061 | omap3_secure_ram_storage = | 1071 | omap3_secure_ram_storage = |