Re: [PATCHv2 3/6] OMAP3: CPUidle: Fixed support for ON / INACTIVE states

2010-01-12 Thread Kevin Hilman
Tero Kristo tero.kri...@nokia.com writes:

 From: Tero Kristo tero.kri...@nokia.com

 New powerdomain code support for INACTIVE state removes the need to control
 clockdomains directly from cpuidle. Also, cpuidle state definitions can now
 directly support ON / INACTIVE simplifying the implementation.

 Signed-off-by: Tero Kristo tero.kri...@nokia.com

Looks good, will queue after patch 1 resolved.

Kevin

 ---
  arch/arm/mach-omap2/cpuidle34xx.c |   32 
  1 files changed, 4 insertions(+), 28 deletions(-)

 diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
 b/arch/arm/mach-omap2/cpuidle34xx.c
 index 1cfa5a6..4a81ef1 100644
 --- a/arch/arm/mach-omap2/cpuidle34xx.c
 +++ b/arch/arm/mach-omap2/cpuidle34xx.c
 @@ -91,20 +91,6 @@ static int omap3_idle_bm_check(void)
   return 0;
  }
  
 -static int _cpuidle_allow_idle(struct powerdomain *pwrdm,
 - struct clockdomain *clkdm)
 -{
 - omap2_clkdm_allow_idle(clkdm);
 - return 0;
 -}
 -
 -static int _cpuidle_deny_idle(struct powerdomain *pwrdm,
 - struct clockdomain *clkdm)
 -{
 - omap2_clkdm_deny_idle(clkdm);
 - return 0;
 -}
 -
  /**
   * omap3_enter_idle - Programs OMAP3 to enter the specified state
   * @dev: cpuidle device
 @@ -141,19 +127,9 @@ static int omap3_enter_idle(struct cpuidle_device *dev,
   if (omap_irq_pending() || need_resched())
   goto return_sleep_time;
  
 - if (cx-type == OMAP3_STATE_C1) {
 - pwrdm_for_each_clkdm(mpu_pd, _cpuidle_deny_idle);
 - pwrdm_for_each_clkdm(core_pd, _cpuidle_deny_idle);
 - }
 -
   /* Execute ARM wfi */
   omap_sram_idle();
  
 - if (cx-type == OMAP3_STATE_C1) {
 - pwrdm_for_each_clkdm(mpu_pd, _cpuidle_allow_idle);
 - pwrdm_for_each_clkdm(core_pd, _cpuidle_allow_idle);
 - }
 -
  return_sleep_time:
   getnstimeofday(ts_postidle);
   ts_idle = timespec_sub(ts_postidle, ts_preidle);
 @@ -246,8 +222,8 @@ void omap_init_power_states(void)
   cpuidle_params_table[OMAP3_STATE_C2].wake_latency;
   omap3_power_states[OMAP3_STATE_C2].threshold =
   cpuidle_params_table[OMAP3_STATE_C2].threshold;
 - omap3_power_states[OMAP3_STATE_C2].mpu_state = PWRDM_POWER_ON;
 - omap3_power_states[OMAP3_STATE_C2].core_state = PWRDM_POWER_ON;
 + omap3_power_states[OMAP3_STATE_C2].mpu_state = PWRDM_POWER_INACTIVE;
 + omap3_power_states[OMAP3_STATE_C2].core_state = PWRDM_POWER_INACTIVE;
   omap3_power_states[OMAP3_STATE_C2].flags = CPUIDLE_FLAG_TIME_VALID;
  
   /* C3 . MPU CSWR + Core inactive */
 @@ -261,7 +237,7 @@ void omap_init_power_states(void)
   omap3_power_states[OMAP3_STATE_C3].threshold =
   cpuidle_params_table[OMAP3_STATE_C3].threshold;
   omap3_power_states[OMAP3_STATE_C3].mpu_state = PWRDM_POWER_RET;
 - omap3_power_states[OMAP3_STATE_C3].core_state = PWRDM_POWER_ON;
 + omap3_power_states[OMAP3_STATE_C3].core_state = PWRDM_POWER_INACTIVE;
   omap3_power_states[OMAP3_STATE_C3].flags = CPUIDLE_FLAG_TIME_VALID |
   CPUIDLE_FLAG_CHECK_BM;
  
 @@ -276,7 +252,7 @@ void omap_init_power_states(void)
   omap3_power_states[OMAP3_STATE_C4].threshold =
   cpuidle_params_table[OMAP3_STATE_C4].threshold;
   omap3_power_states[OMAP3_STATE_C4].mpu_state = PWRDM_POWER_OFF;
 - omap3_power_states[OMAP3_STATE_C4].core_state = PWRDM_POWER_ON;
 + omap3_power_states[OMAP3_STATE_C4].core_state = PWRDM_POWER_INACTIVE;
   omap3_power_states[OMAP3_STATE_C4].flags = CPUIDLE_FLAG_TIME_VALID |
   CPUIDLE_FLAG_CHECK_BM;
  
 -- 
 1.5.4.3

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


[PATCHv2 3/6] OMAP3: CPUidle: Fixed support for ON / INACTIVE states

2009-12-04 Thread Tero Kristo
From: Tero Kristo tero.kri...@nokia.com

New powerdomain code support for INACTIVE state removes the need to control
clockdomains directly from cpuidle. Also, cpuidle state definitions can now
directly support ON / INACTIVE simplifying the implementation.

Signed-off-by: Tero Kristo tero.kri...@nokia.com
---
 arch/arm/mach-omap2/cpuidle34xx.c |   32 
 1 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
b/arch/arm/mach-omap2/cpuidle34xx.c
index 1cfa5a6..4a81ef1 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -91,20 +91,6 @@ static int omap3_idle_bm_check(void)
return 0;
 }
 
-static int _cpuidle_allow_idle(struct powerdomain *pwrdm,
-   struct clockdomain *clkdm)
-{
-   omap2_clkdm_allow_idle(clkdm);
-   return 0;
-}
-
-static int _cpuidle_deny_idle(struct powerdomain *pwrdm,
-   struct clockdomain *clkdm)
-{
-   omap2_clkdm_deny_idle(clkdm);
-   return 0;
-}
-
 /**
  * omap3_enter_idle - Programs OMAP3 to enter the specified state
  * @dev: cpuidle device
@@ -141,19 +127,9 @@ static int omap3_enter_idle(struct cpuidle_device *dev,
if (omap_irq_pending() || need_resched())
goto return_sleep_time;
 
-   if (cx-type == OMAP3_STATE_C1) {
-   pwrdm_for_each_clkdm(mpu_pd, _cpuidle_deny_idle);
-   pwrdm_for_each_clkdm(core_pd, _cpuidle_deny_idle);
-   }
-
/* Execute ARM wfi */
omap_sram_idle();
 
-   if (cx-type == OMAP3_STATE_C1) {
-   pwrdm_for_each_clkdm(mpu_pd, _cpuidle_allow_idle);
-   pwrdm_for_each_clkdm(core_pd, _cpuidle_allow_idle);
-   }
-
 return_sleep_time:
getnstimeofday(ts_postidle);
ts_idle = timespec_sub(ts_postidle, ts_preidle);
@@ -246,8 +222,8 @@ void omap_init_power_states(void)
cpuidle_params_table[OMAP3_STATE_C2].wake_latency;
omap3_power_states[OMAP3_STATE_C2].threshold =
cpuidle_params_table[OMAP3_STATE_C2].threshold;
-   omap3_power_states[OMAP3_STATE_C2].mpu_state = PWRDM_POWER_ON;
-   omap3_power_states[OMAP3_STATE_C2].core_state = PWRDM_POWER_ON;
+   omap3_power_states[OMAP3_STATE_C2].mpu_state = PWRDM_POWER_INACTIVE;
+   omap3_power_states[OMAP3_STATE_C2].core_state = PWRDM_POWER_INACTIVE;
omap3_power_states[OMAP3_STATE_C2].flags = CPUIDLE_FLAG_TIME_VALID;
 
/* C3 . MPU CSWR + Core inactive */
@@ -261,7 +237,7 @@ void omap_init_power_states(void)
omap3_power_states[OMAP3_STATE_C3].threshold =
cpuidle_params_table[OMAP3_STATE_C3].threshold;
omap3_power_states[OMAP3_STATE_C3].mpu_state = PWRDM_POWER_RET;
-   omap3_power_states[OMAP3_STATE_C3].core_state = PWRDM_POWER_ON;
+   omap3_power_states[OMAP3_STATE_C3].core_state = PWRDM_POWER_INACTIVE;
omap3_power_states[OMAP3_STATE_C3].flags = CPUIDLE_FLAG_TIME_VALID |
CPUIDLE_FLAG_CHECK_BM;
 
@@ -276,7 +252,7 @@ void omap_init_power_states(void)
omap3_power_states[OMAP3_STATE_C4].threshold =
cpuidle_params_table[OMAP3_STATE_C4].threshold;
omap3_power_states[OMAP3_STATE_C4].mpu_state = PWRDM_POWER_OFF;
-   omap3_power_states[OMAP3_STATE_C4].core_state = PWRDM_POWER_ON;
+   omap3_power_states[OMAP3_STATE_C4].core_state = PWRDM_POWER_INACTIVE;
omap3_power_states[OMAP3_STATE_C4].flags = CPUIDLE_FLAG_TIME_VALID |
CPUIDLE_FLAG_CHECK_BM;
 
-- 
1.5.4.3

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