[PATCH] OMAP3: PM: fix save secure RAM to restore MPU power state

Tero.Kristo at nokia.com Tero.Kristo at nokia.com
Wed Jan 26 04:27:03 EST 2011



>-----Original Message-----
>From: ext Kevin Hilman [mailto:khilman at ti.com]
>Sent: 26 January, 2011 02:50
>To: linux-omap at vger.kernel.org
>Cc: linux-arm-kernel at lists.infradead.org; Kristo Tero (Nokia-MS/Tampere)
>Subject: [PATCH] OMAP3: PM: fix save secure RAM to restore MPU power
>state
>
>Currently, on HS/EMU devices, MPU power state forced to on during PM
>init by the save secure RAM code.  Rather than forcing the state of
>MPU powerdomain to on, simply read the current value and restore it
>after the ROM code has run.
>
>This only affects the !CPUidle case since when CPUidle is enabled, the
>MPU power state is dynamically changed by CPUidle.  In the !CPUidle
>case, MPU power state is initialized once at init and never touched.
>
>Cc: Tero Kristo <tero.kristo at nokia.com>
>Signed-off-by: Kevin Hilman <khilman at ti.com>
>---
>If no objectsions, will be queued in my pm-fixes branch for 2.6.38-rc.

Looks good to me. Ack, if you need one.
 
>
> arch/arm/mach-omap2/pm34xx.c |    7 ++++---
> 1 files changed, 4 insertions(+), 3 deletions(-)
>
>diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>index 8cbbead..1916038 100644
>--- a/arch/arm/mach-omap2/pm34xx.c
>+++ b/arch/arm/mach-omap2/pm34xx.c
>@@ -168,9 +168,10 @@ static void omap3_core_restore_context(void)
>  * once during boot sequence, but this works as we are not using secure
>  * services.
>  */
>-static void omap3_save_secure_ram_context(u32 target_mpu_state)
>+static void omap3_save_secure_ram_context(void)
> {
> 	u32 ret;
>+	int mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
>
> 	if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
> 		/*
>@@ -181,7 +182,7 @@ static void omap3_save_secure_ram_context(u32
>target_mpu_state)
> 		pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON);
> 		ret = _omap_save_secure_sram((u32 *)
> 				__pa(omap3_secure_ram_storage));
>-		pwrdm_set_next_pwrst(mpu_pwrdm, target_mpu_state);
>+		pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state);
> 		/* Following is for error tracking, it should not happen */
> 		if (ret) {
> 			printk(KERN_ERR "save_secure_sram() returns %08x\n",
>@@ -1094,7 +1095,7 @@ static int __init omap3_pm_init(void)
> 		local_fiq_disable();
>
> 		omap_dma_global_context_save();
>-		omap3_save_secure_ram_context(PWRDM_POWER_ON);
>+		omap3_save_secure_ram_context();
> 		omap_dma_global_context_restore();
>
> 		local_irq_enable();
>--
>1.7.3.5




More information about the linux-arm-kernel mailing list