public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Benoit Cousson <b-cousson@ti.com>
To: paul@pwsan.com, rnayak@ti.com
Cc: santosh.shilimkar@ti.com, linux-omap@vger.kernel.org
Subject: [PATCH v2 4/7] OMAP2+: PM: idle clkdms only if already in idle
Date: Fri, 24 Jun 2011 14:06:30 +0200	[thread overview]
Message-ID: <1308917193-16912-5-git-send-email-b-cousson@ti.com> (raw)
In-Reply-To: <1308917193-16912-1-git-send-email-b-cousson@ti.com>

From: Nayak, Rajendra <rnayak@ti.com>

The omap_set_pwrdm_state function forces clockdomains
to idle, without checking the existing idle state
programmed, instead based solely on the HW capability
of the clockdomain to support idle.
This is wrong and the clockdomains should be idled
post a state_switch *only* if idle transitions on the
clockdomain were already enabled.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 arch/arm/mach-omap2/pm.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index d48813f..840b0e1 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -108,6 +108,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state)
 	u32 cur_state;
 	int sleep_switch = -1;
 	int ret = 0;
+	int hwsup = 0;
 
 	if (pwrdm == NULL || IS_ERR(pwrdm))
 		return -EINVAL;
@@ -127,6 +128,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state)
 			(pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE)) {
 			sleep_switch = LOWPOWERSTATE_SWITCH;
 		} else {
+			hwsup = clkdm_is_idle(pwrdm->pwrdm_clkdms[0]);
 			clkdm_wakeup(pwrdm->pwrdm_clkdms[0]);
 			pwrdm_wait_transition(pwrdm);
 			sleep_switch = FORCEWAKEUP_SWITCH;
@@ -142,7 +144,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state)
 
 	switch (sleep_switch) {
 	case FORCEWAKEUP_SWITCH:
-		if (pwrdm->pwrdm_clkdms[0]->flags & CLKDM_CAN_ENABLE_AUTO)
+		if (hwsup)
 			clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]);
 		else
 			clkdm_sleep(pwrdm->pwrdm_clkdms[0]);
-- 
1.7.0.4


  parent reply	other threads:[~2011-06-24 12:08 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-24 12:06 [PATCH v2 0/7] Fix module-mode enable sequence on OMAP4 Benoit Cousson
2011-06-24 12:06 ` [PATCH v2 1/7] OMAP2+: clockdomain: Add an api to read idle mode Benoit Cousson
2011-06-24 12:06 ` [PATCH v2 2/7] OMAP2+: clockdomain: Add SoC support for clkdm_is_idle Benoit Cousson
2011-06-24 12:06 ` [PATCH v2 3/7] OMAP2+: PM: Initialise sleep_switch to a non-valid value Benoit Cousson
2011-06-24 12:06 ` Benoit Cousson [this message]
2011-06-24 12:06 ` [PATCH v2 5/7] OMAP4: PM: TEMP: Prevent l3init from idling/force sleep Benoit Cousson
2011-06-24 12:06 ` [PATCH v2 6/7] OMAP2+: clockdomain: Add 2 APIs to control clockdomain from hwmod framework Benoit Cousson
2011-06-26 20:07   ` Todd Poynor
2011-06-27  9:18     ` Cousson, Benoit
2011-06-24 12:06 ` [PATCH v2 7/7] OMAP2+: hwmod: Follow the recommended PRCM module enable sequence Benoit Cousson
2011-06-24 13:23 ` [PATCH v2 0/7] Fix module-mode enable sequence on OMAP4 Rajendra Nayak
2011-06-24 13:31   ` Cousson, Benoit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1308917193-16912-5-git-send-email-b-cousson@ti.com \
    --to=b-cousson@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    --cc=rnayak@ti.com \
    --cc=santosh.shilimkar@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox