linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE.
  2010-04-15  1:41 Mike Chan
@ 2010-04-15  1:41 ` Mike Chan
  0 siblings, 0 replies; 5+ messages in thread
From: Mike Chan @ 2010-04-15  1:41 UTC (permalink / raw)
  Cc: khilman, tony, paul, linux-omap, linux-kernel, linux-arm-kernel,
	Mike Chan

We can remove this wakeup dependency since now, when
GPIO2-6 are enabled for IO-pad wakeup, PER domain is gauranteed
to be awake or be woken up to service.

The previous dependency did not handle all corner cases. Since there
was no sleep dependency between CORE and PER domains, if PER enters
RET and CORE is ON, PER will not be active for GPIO handling.

Signed-off-by: Mike Chan <mike@android.com>
---
 arch/arm/mach-omap2/pm34xx.c |    8 --------
 1 files changed, 0 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 4ef322a..176870f 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -1086,14 +1086,6 @@ static int __init omap3_pm_init(void)
 	omap3_idle_init();
 
 	clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
-	/*
-	 * REVISIT: This wkdep is only necessary when GPIO2-6 are enabled for
-	 * IO-pad wakeup.  Otherwise it will unnecessarily waste power
-	 * waking up PER with every CORE wakeup - see
-	 * http://marc.info/?l=linux-omap&m=121852150710062&w=2
-	*/
-	clkdm_add_wkdep(per_clkdm, core_clkdm);
-
 	if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
 		omap3_secure_ram_storage =
 			kmalloc(0x803F, GFP_KERNEL);
-- 
1.7.0.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER
@ 2010-05-03 21:26 Mike Chan
  2010-05-03 21:26 ` [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE Mike Chan
  2010-05-03 22:40 ` [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Kevin Hilman
  0 siblings, 2 replies; 5+ messages in thread
From: Mike Chan @ 2010-05-03 21:26 UTC (permalink / raw)
  Cc: khilman, linux-omap, r-woodruff2, tony, Mike Chan

IO events can also come from GPIO modules, which reside in the PER domain.
It is possible for the PER to enter RET while CORE is still in ON.
If GPIO 2-6 are enabled for IO-pad wakeups, the PER domain will not
wakeup in this case, unless we enable it.

Signed-off-by: Mike Chan <mike@android.com>
---
 arch/arm/mach-omap2/pm34xx.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index ea0000b..2b2eaaa 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -371,6 +371,13 @@ void omap_sram_idle(void)
 	if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
 		pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
 
+	/* Enable IO-PAD and IO-CHAIN wakeups */
+	if (per_next_state < PWRDM_POWER_ON ||
+			core_next_state < PWRDM_POWER_ON) {
+		prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
+		omap3_enable_io_chain();
+	}
+
 	/* PER */
 	per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
 	core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
@@ -398,10 +405,8 @@ void omap_sram_idle(void)
 			omap3_core_save_context();
 			omap3_prcm_save_context();
 		}
-		/* Enable IO-PAD and IO-CHAIN wakeups */
-		prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
-		omap3_enable_io_chain();
 	}
+
 	omap3_intc_prepare_idle();
 
 	/*
@@ -463,7 +468,8 @@ void omap_sram_idle(void)
 	}
 
 	/* Disable IO-PAD and IO-CHAIN wakeup */
-	if (core_next_state < PWRDM_POWER_ON) {
+	if (per_next_state < PWRDM_POWER_ON ||
+			core_next_state < PWRDM_POWER_ON) {
 		prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
 		omap3_disable_io_chain();
 	}
-- 
1.7.0.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE.
  2010-05-03 21:26 [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Mike Chan
@ 2010-05-03 21:26 ` Mike Chan
  2010-05-03 22:40 ` [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Kevin Hilman
  1 sibling, 0 replies; 5+ messages in thread
From: Mike Chan @ 2010-05-03 21:26 UTC (permalink / raw)
  Cc: khilman, linux-omap, r-woodruff2, tony, Mike Chan

We can remove this wakeup dependency since now, when
GPIO2-6 are enabled for IO-pad wakeup, PER domain is gauranteed
to be awake or be woken up to service.

The previous dependency did not handle all corner cases. Since there
was no sleep dependency between CORE and PER domains, if PER enters
RET and CORE is ON, PER will not be active for GPIO handling.

Signed-off-by: Mike Chan <mike@android.com>
---
 arch/arm/mach-omap2/pm34xx.c |    8 --------
 1 files changed, 0 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 2b2eaaa..acf180b 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -1086,14 +1086,6 @@ static int __init omap3_pm_init(void)
 	omap3_idle_init();
 
 	clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
-	/*
-	 * REVISIT: This wkdep is only necessary when GPIO2-6 are enabled for
-	 * IO-pad wakeup.  Otherwise it will unnecessarily waste power
-	 * waking up PER with every CORE wakeup - see
-	 * http://marc.info/?l=linux-omap&m=121852150710062&w=2
-	*/
-	clkdm_add_wkdep(per_clkdm, core_clkdm);
-
 	if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
 		omap3_secure_ram_storage =
 			kmalloc(0x803F, GFP_KERNEL);
-- 
1.7.0.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER
  2010-05-03 21:26 [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Mike Chan
  2010-05-03 21:26 ` [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE Mike Chan
@ 2010-05-03 22:40 ` Kevin Hilman
  2010-05-03 22:58   ` Mike Chan
  1 sibling, 1 reply; 5+ messages in thread
From: Kevin Hilman @ 2010-05-03 22:40 UTC (permalink / raw)
  To: Mike Chan; +Cc: linux-omap, r-woodruff2, tony

Mike Chan <mike@android.com> writes:

> IO events can also come from GPIO modules, which reside in the PER domain.
> It is possible for the PER to enter RET while CORE is still in ON.
> If GPIO 2-6 are enabled for IO-pad wakeups, the PER domain will not
> wakeup in this case, unless we enable it.
>
> Signed-off-by: Mike Chan <mike@android.com>

Thanks for moving this up to before the potential transition of PER.

But...

> ---
>  arch/arm/mach-omap2/pm34xx.c |   14 ++++++++++----
>  1 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index ea0000b..2b2eaaa 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -371,6 +371,13 @@ void omap_sram_idle(void)
>  	if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
>  		pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
>  
> +	/* Enable IO-PAD and IO-CHAIN wakeups */
> +	if (per_next_state < PWRDM_POWER_ON ||
> +			core_next_state < PWRDM_POWER_ON) {
> +		prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
> +		omap3_enable_io_chain();
> +	}
> +

oops, both next_states will always be PWRDM_POWER_ON here as they
haven't yet been read...

>  	/* PER */
>  	per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>  	core_next_state = pwrdm_read_next_pwrst(core_pwrdm);

until here.

Kevin


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER
  2010-05-03 22:40 ` [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Kevin Hilman
@ 2010-05-03 22:58   ` Mike Chan
  0 siblings, 0 replies; 5+ messages in thread
From: Mike Chan @ 2010-05-03 22:58 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: linux-omap, r-woodruff2, tony

On Mon, May 3, 2010 at 3:40 PM, Kevin Hilman
<khilman@deeprootsystems.com> wrote:
> Mike Chan <mike@android.com> writes:
>
>> IO events can also come from GPIO modules, which reside in the PER domain.
>> It is possible for the PER to enter RET while CORE is still in ON.
>> If GPIO 2-6 are enabled for IO-pad wakeups, the PER domain will not
>> wakeup in this case, unless we enable it.
>>
>> Signed-off-by: Mike Chan <mike@android.com>
>
> Thanks for moving this up to before the potential transition of PER.
>
> But...
>
>> ---
>>  arch/arm/mach-omap2/pm34xx.c |   14 ++++++++++----
>>  1 files changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>> index ea0000b..2b2eaaa 100644
>> --- a/arch/arm/mach-omap2/pm34xx.c
>> +++ b/arch/arm/mach-omap2/pm34xx.c
>> @@ -371,6 +371,13 @@ void omap_sram_idle(void)
>>       if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
>>               pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
>>
>> +     /* Enable IO-PAD and IO-CHAIN wakeups */
>> +     if (per_next_state < PWRDM_POWER_ON ||
>> +                     core_next_state < PWRDM_POWER_ON) {
>> +             prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
>> +             omap3_enable_io_chain();
>> +     }
>> +
>
> oops, both next_states will always be PWRDM_POWER_ON here as they
> haven't yet been read...
>
>>       /* PER */
>>       per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>>       core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
>
> until here.

Sloppy me, I'll send out a v2 that fixes this. Thanks Kevin for catching this.

-- Mike

>
> Kevin
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-05-03 22:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-03 21:26 [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Mike Chan
2010-05-03 21:26 ` [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE Mike Chan
2010-05-03 22:40 ` [PATCH 1/2] omap: pm34xx: Enable IO / IO-CHAIN wakeups for PER Kevin Hilman
2010-05-03 22:58   ` Mike Chan
  -- strict thread matches above, loose matches on Subject: below --
2010-04-15  1:41 Mike Chan
2010-04-15  1:41 ` [PATCH 2/2] omap: pm34xx: Remove PER wakeup dependency on CORE Mike Chan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).