RE: [PATCHv6 4/9] OMAP3: PM: Removed pwrdm state hacking from omap_sram_idle

2010-03-02 Thread Tero.Kristo
 

-Original Message-
From: ext Kevin Hilman [mailto:khil...@deeprootsystems.com] 
Sent: 02 March, 2010 01:32
To: Kristo Tero (Nokia-D/Tampere)
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCHv6 4/9] OMAP3: PM: Removed pwrdm state 
hacking from omap_sram_idle

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

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

 Following hacks will be moved inside cpuidle in subsequent patch:

 - CAM domain prevents idle completely
 - PER should not go OFF if core remains active

 This simplifies the design and allows cpuidle to keep better 
track of which
 power states system will actually enter.

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

I think this should be combined with PATCH 7.  IOW, the removal and
re-addition should be in the same patch.

Ok, will change this.


Kevin

 ---
  arch/arm/mach-omap2/pm34xx.c |   19 ++-
  1 files changed, 2 insertions(+), 17 deletions(-)

 diff --git a/arch/arm/mach-omap2/pm34xx.c 
b/arch/arm/mach-omap2/pm34xx.c
 index c2d80fc..cdbedcf 100644
 --- a/arch/arm/mach-omap2/pm34xx.c
 +++ b/arch/arm/mach-omap2/pm34xx.c
 @@ -93,7 +93,6 @@ static int (*_omap_save_secure_sram)(u32 *addr);
  
  static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
  static struct powerdomain *core_pwrdm, *per_pwrdm;
 -static struct powerdomain *cam_pwrdm;
  
  static struct prm_setup_vc prm_setup = {
  .clksetup = 0xff,
 @@ -373,7 +372,6 @@ void omap_sram_idle(void)
  int core_next_state = PWRDM_POWER_ON;
  int core_prev_state, per_prev_state;
  u32 sdrc_pwr = 0;
 -int per_state_modified = 0;
  
  if (!_omap_sram_idle)
  return;
 @@ -411,20 +409,11 @@ void omap_sram_idle(void)
  core_next_state = omap3_pwrdm_read_next_pwrst(core_pwrdm);
  if (per_next_state  PWRDM_POWER_ON) {
  omap2_gpio_prepare_for_idle(per_next_state);
 -if (per_next_state == PWRDM_POWER_OFF) {
 -if (core_next_state == PWRDM_POWER_ON) {
 -per_next_state = PWRDM_POWER_RET;
 -pwrdm_set_next_pwrst(per_pwrdm, 
per_next_state);
 -per_state_modified = 1;
 -} else
 -omap3_per_save_context();
 -}
 +if (per_next_state == PWRDM_POWER_OFF)
 +omap3_per_save_context();
  omap_uart_prepare_idle(2);
  }
  
 -if (pwrdm_read_pwrst(cam_pwrdm) == PWRDM_POWER_ON)
 -omap2_clkdm_deny_idle(mpu_pwrdm-pwrdm_clkdms[0]);
 -
  /*
   * Disable smartreflex before entering WFI.
   * Only needed if we are going to enter retention or off.
 @@ -554,8 +543,6 @@ void omap_sram_idle(void)
  }
  omap2_gpio_resume_after_idle();
  omap_uart_resume_idle(2);
 -if (per_state_modified)
 -pwrdm_set_next_pwrst(per_pwrdm, 
PWRDM_POWER_OFF);
  }
  
  /* Disable IO-PAD and IO-CHAIN wakeup */
 @@ -564,7 +551,6 @@ void omap_sram_idle(void)
  omap3_disable_io_chain();
  }
  
 -
  pwrdm_post_transition();
  }
  
 @@ -1239,7 +1225,6 @@ static int __init omap3_pm_init(void)
  neon_pwrdm = pwrdm_lookup(neon_pwrdm);
  per_pwrdm = pwrdm_lookup(per_pwrdm);
  core_pwrdm = pwrdm_lookup(core_pwrdm);
 -cam_pwrdm = pwrdm_lookup(cam_pwrdm);
  
  neon_clkdm = clkdm_lookup(neon_clkdm);
  mpu_clkdm = clkdm_lookup(mpu_clkdm);
 -- 
 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


Re: [PATCHv6 4/9] OMAP3: PM: Removed pwrdm state hacking from omap_sram_idle

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

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

 Following hacks will be moved inside cpuidle in subsequent patch:

 - CAM domain prevents idle completely
 - PER should not go OFF if core remains active

 This simplifies the design and allows cpuidle to keep better track of which
 power states system will actually enter.

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

I think this should be combined with PATCH 7.  IOW, the removal and
re-addition should be in the same patch.

Kevin

 ---
  arch/arm/mach-omap2/pm34xx.c |   19 ++-
  1 files changed, 2 insertions(+), 17 deletions(-)

 diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
 index c2d80fc..cdbedcf 100644
 --- a/arch/arm/mach-omap2/pm34xx.c
 +++ b/arch/arm/mach-omap2/pm34xx.c
 @@ -93,7 +93,6 @@ static int (*_omap_save_secure_sram)(u32 *addr);
  
  static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
  static struct powerdomain *core_pwrdm, *per_pwrdm;
 -static struct powerdomain *cam_pwrdm;
  
  static struct prm_setup_vc prm_setup = {
   .clksetup = 0xff,
 @@ -373,7 +372,6 @@ void omap_sram_idle(void)
   int core_next_state = PWRDM_POWER_ON;
   int core_prev_state, per_prev_state;
   u32 sdrc_pwr = 0;
 - int per_state_modified = 0;
  
   if (!_omap_sram_idle)
   return;
 @@ -411,20 +409,11 @@ void omap_sram_idle(void)
   core_next_state = omap3_pwrdm_read_next_pwrst(core_pwrdm);
   if (per_next_state  PWRDM_POWER_ON) {
   omap2_gpio_prepare_for_idle(per_next_state);
 - if (per_next_state == PWRDM_POWER_OFF) {
 - if (core_next_state == PWRDM_POWER_ON) {
 - per_next_state = PWRDM_POWER_RET;
 - pwrdm_set_next_pwrst(per_pwrdm, per_next_state);
 - per_state_modified = 1;
 - } else
 - omap3_per_save_context();
 - }
 + if (per_next_state == PWRDM_POWER_OFF)
 + omap3_per_save_context();
   omap_uart_prepare_idle(2);
   }
  
 - if (pwrdm_read_pwrst(cam_pwrdm) == PWRDM_POWER_ON)
 - omap2_clkdm_deny_idle(mpu_pwrdm-pwrdm_clkdms[0]);
 -
   /*
* Disable smartreflex before entering WFI.
* Only needed if we are going to enter retention or off.
 @@ -554,8 +543,6 @@ void omap_sram_idle(void)
   }
   omap2_gpio_resume_after_idle();
   omap_uart_resume_idle(2);
 - if (per_state_modified)
 - pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
   }
  
   /* Disable IO-PAD and IO-CHAIN wakeup */
 @@ -564,7 +551,6 @@ void omap_sram_idle(void)
   omap3_disable_io_chain();
   }
  
 -
   pwrdm_post_transition();
  }
  
 @@ -1239,7 +1225,6 @@ static int __init omap3_pm_init(void)
   neon_pwrdm = pwrdm_lookup(neon_pwrdm);
   per_pwrdm = pwrdm_lookup(per_pwrdm);
   core_pwrdm = pwrdm_lookup(core_pwrdm);
 - cam_pwrdm = pwrdm_lookup(cam_pwrdm);
  
   neon_clkdm = clkdm_lookup(neon_clkdm);
   mpu_clkdm = clkdm_lookup(mpu_clkdm);
 -- 
 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


[PATCHv6 4/9] OMAP3: PM: Removed pwrdm state hacking from omap_sram_idle

2010-02-12 Thread Tero Kristo
From: Tero Kristo tero.kri...@nokia.com

Following hacks will be moved inside cpuidle in subsequent patch:

- CAM domain prevents idle completely
- PER should not go OFF if core remains active

This simplifies the design and allows cpuidle to keep better track of which
power states system will actually enter.

Signed-off-by: Tero Kristo tero.kri...@nokia.com
---
 arch/arm/mach-omap2/pm34xx.c |   19 ++-
 1 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index c2d80fc..cdbedcf 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -93,7 +93,6 @@ static int (*_omap_save_secure_sram)(u32 *addr);
 
 static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
 static struct powerdomain *core_pwrdm, *per_pwrdm;
-static struct powerdomain *cam_pwrdm;
 
 static struct prm_setup_vc prm_setup = {
.clksetup = 0xff,
@@ -373,7 +372,6 @@ void omap_sram_idle(void)
int core_next_state = PWRDM_POWER_ON;
int core_prev_state, per_prev_state;
u32 sdrc_pwr = 0;
-   int per_state_modified = 0;
 
if (!_omap_sram_idle)
return;
@@ -411,20 +409,11 @@ void omap_sram_idle(void)
core_next_state = omap3_pwrdm_read_next_pwrst(core_pwrdm);
if (per_next_state  PWRDM_POWER_ON) {
omap2_gpio_prepare_for_idle(per_next_state);
-   if (per_next_state == PWRDM_POWER_OFF) {
-   if (core_next_state == PWRDM_POWER_ON) {
-   per_next_state = PWRDM_POWER_RET;
-   pwrdm_set_next_pwrst(per_pwrdm, per_next_state);
-   per_state_modified = 1;
-   } else
-   omap3_per_save_context();
-   }
+   if (per_next_state == PWRDM_POWER_OFF)
+   omap3_per_save_context();
omap_uart_prepare_idle(2);
}
 
-   if (pwrdm_read_pwrst(cam_pwrdm) == PWRDM_POWER_ON)
-   omap2_clkdm_deny_idle(mpu_pwrdm-pwrdm_clkdms[0]);
-
/*
 * Disable smartreflex before entering WFI.
 * Only needed if we are going to enter retention or off.
@@ -554,8 +543,6 @@ void omap_sram_idle(void)
}
omap2_gpio_resume_after_idle();
omap_uart_resume_idle(2);
-   if (per_state_modified)
-   pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
}
 
/* Disable IO-PAD and IO-CHAIN wakeup */
@@ -564,7 +551,6 @@ void omap_sram_idle(void)
omap3_disable_io_chain();
}
 
-
pwrdm_post_transition();
 }
 
@@ -1239,7 +1225,6 @@ static int __init omap3_pm_init(void)
neon_pwrdm = pwrdm_lookup(neon_pwrdm);
per_pwrdm = pwrdm_lookup(per_pwrdm);
core_pwrdm = pwrdm_lookup(core_pwrdm);
-   cam_pwrdm = pwrdm_lookup(cam_pwrdm);
 
neon_clkdm = clkdm_lookup(neon_clkdm);
mpu_clkdm = clkdm_lookup(mpu_clkdm);
-- 
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