public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@ti.com>
To: Santosh <santosh.shilimkar@ti.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	linux-omap@vger.kernel.org, Govindraj R <govindraj.raja@ti.com>
Subject: Re: [POWER DOMAIN suspend callbacks] Observation.
Date: Tue, 23 Aug 2011 10:06:05 -0700	[thread overview]
Message-ID: <871uwcjbwi.fsf@ti.com> (raw)
In-Reply-To: <4E53B6FC.8030507@ti.com> (Santosh's message of "Tue, 23 Aug 2011 19:49:40 +0530")

Hi Santosh,

Santosh <santosh.shilimkar@ti.com> writes:

> Rafael, Kevin,
>
> On latest kernel( V3.1-rc1+), the subsystem(driver) suspend
> callbacks are not getting called because power domain callbcaks
> are populated.
>
> And as per commit 4d27e9dc{PM: Make power domain callbacks take
> precedence over subsystem ones}, it's expected bahavior.

Correct.

> Who is suppose to call the driver suspend callback?

If populated, the PM domain callbacks should call the driver callbacks.
If there are no PM domain callbacks, then the subsystem (in this case,
the platform_bus) should be calling the driver callbacks.

> Some drivers/subsystem would have state machine which needs to
> be suspended.
>
> Is the power domain suspend callback, suppose to take care of
> it ? If yes, then that seems to be missing for OMAP.

Yup, there's a bug.    They're not missing, just misplaced. ;)

When adding the noirq callbacks to ensure devices are idled late in
suspend by omap_device, I the patch commited mistakenly uses
SET_SYSTEM_SLEEP_PM_OPS(), which sets the "normal" suspend/resume
handlers and not the noirq handlers.

Can you try the patch below?  I only briefly tested it on omap3/n900 so
far.

This populates most of the PM domain methods with the same ones used by
the subystem (platform_bus) and only overrides the noirq methods with
custom versions.  This patch should make all the driver's suspend/resume
methods be called as expected.

After a bit more sanitiy testing, I'll post a real patch for the -rc
series.

Kevin

diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index d8f2299..7a0d248 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -626,7 +626,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
 		SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
 				   _od_runtime_idle)
 		USE_PLATFORM_PM_SLEEP_OPS
-		SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq)
+		.suspend_noirq = _od_suspend_noirq,
+		.resume_noirq = _od_resume_noirq,
 	}
 };
 

  parent reply	other threads:[~2011-08-23 17:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-23 14:19 [POWER DOMAIN suspend callbacks] Observation Santosh
2011-08-23 15:01 ` Govindraj
2011-08-23 17:06 ` Kevin Hilman [this message]
2011-08-24  6:17   ` Santosh
2011-08-24 23:38     ` Kevin Hilman

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=871uwcjbwi.fsf@ti.com \
    --to=khilman@ti.com \
    --cc=govindraj.raja@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=rjw@sisk.pl \
    --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