From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
"Linux-sh list" <linux-sh@vger.kernel.org>,
Magnus Damm <magnus.damm@gmail.com>,
Kevin Hilman <khilman@ti.com>,
jean.pihet@newoldbits.com
Subject: Re: [PATCH 1/7] PM / Domains: Make it possible to use per-device start/stop routines
Date: Tue, 8 Nov 2011 21:38:57 +0100 [thread overview]
Message-ID: <201111082138.57448.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.64.1111080951040.10851@axis700.grange>
On Tuesday, November 08, 2011, Guennadi Liakhovetski wrote:
> Hi Rafael
>
> On Mon, 7 Nov 2011, Rafael J. Wysocki wrote:
>
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> >
> > The current generic PM domains code requires that the same .stop()
> > and .start() device callback routines be used for all devices in the
> > given domain, which is inflexible and may not cover some specific use
> > cases. For this reason, make it possible to use device specific
> > .start() and .stop() callback routines by adding corresponding
> > callback pointers to struct generic_pm_domain_data. Add a new helper
> > routine, pm_genpd_register_callbacks(), that can be used to populate
> > the new per-device callback pointers.
> >
> > Modify the shmobile's power domains code to allow drivers to add
> > their own code to be run during the device stop and start operations
> > with the help of the new callback pointers.
> >
> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> > ---
>
> [snip]
>
> > Index: linux/drivers/base/power/domain.c
> > ===================================================================
> > --- linux.orig/drivers/base/power/domain.c
> > +++ linux/drivers/base/power/domain.c
> > @@ -29,6 +29,36 @@ static struct generic_pm_domain *dev_to_
> > return pd_to_genpd(dev->pm_domain);
> > }
> >
> > +static int genpd_stop_dev(struct generic_pm_domain *genpd, struct device *dev)
> > +{
> > + int (*stop)(struct device *dev);
> > +
> > + stop = genpd->stop_device;
> > + if (stop)
> > + return stop(dev);
> > +
> > + stop = dev_gpd_data(dev)->ops.stop;
> > + if (stop)
> > + return stop(dev);
>
> With this implementation your approach is: in your genpd_stop_dev() and
> genpd_start_dev() you first check for the pm-domain _common_ .start() and
> .stop(), and if they exist, the specific ones will not be called. Then in
> your sh7372 pm domain implementation you do the domain-common part -
> switch the PM clock on or off, and you _again_ check for device-specific
> domains, and this time you call both of them.
>
> Do you have specific reasons to think, that calling both of them from
> genpd_stop_dev() / genpd_start_dev() might not fit some PM-domain
> implementations?
Not very specific, but the current way is more flexible, because it
allows the PM domain to do something completely different from the
default thing.
Also that follows the strategy used in dd.c for .probe().
Thanks,
Rafael
next prev parent reply other threads:[~2011-11-08 20:36 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-07 0:01 [PATCH 0/7] PM / Domains: Per-device callbacks and PM QoS Rafael J. Wysocki
2011-11-07 0:06 ` [PATCH 1/7] PM / Domains: Make it possible to use per-device start/stop routines Rafael J. Wysocki
2011-11-08 9:30 ` Guennadi Liakhovetski
2011-11-08 20:38 ` Rafael J. Wysocki [this message]
2011-11-07 0:06 ` [PATCH 2/7] PM / Domains: Make it possible to use per-device .active_wakeup() Rafael J. Wysocki
2011-11-08 10:27 ` Guennadi Liakhovetski
2011-11-08 20:40 ` Rafael J. Wysocki
2011-11-09 8:52 ` Guennadi Liakhovetski
2011-11-09 22:40 ` Rafael J. Wysocki
2011-11-09 23:02 ` Guennadi Liakhovetski
2011-11-07 0:07 ` [PATCH 3/7] PM / Domains: Introduce "save/restore state" device callbacks Rafael J. Wysocki
2011-11-07 0:08 ` [PATCH 4/7] PM / Domains: Rework system suspend callback routines Rafael J. Wysocki
2012-02-17 19:29 ` Pavel Machek
2012-02-17 21:01 ` Rafael J. Wysocki
2011-11-07 0:08 ` [PATCH 5/7] PM / Domains: Add device stop governor function (v3) Rafael J. Wysocki
2011-11-07 0:09 ` [PATCH 6/7] PM / Domains: Add default power off " Rafael J. Wysocki
2011-11-07 0:10 ` [PATCH 7/7] PM / Domains: Automatically update overoptimistic latency information Rafael J. Wysocki
2011-11-14 0:22 ` [update][PATCH 0/7] PM / Domains: Per-device callbacks and PM QoS Rafael J. Wysocki
2011-11-14 0:23 ` [update][PATCH 1/7] PM / Domains: Make it possible to use per-device domain callbacks Rafael J. Wysocki
2011-11-14 0:24 ` [update][PATCH 2/7] PM / Domains: Introduce "save/restore state" device callbacks Rafael J. Wysocki
2011-11-14 0:25 ` [update][PATCH 3/7] PM / Domains: Rework system suspend callback routines Rafael J. Wysocki
2011-11-14 0:26 ` [update][PATCH 4/7] PM / Runtime: Use device PM QoS constraints Rafael J. Wysocki
2011-11-14 0:27 ` [update][PATCH 5/7] PM / Domains: Add device stop governor function (v4) Rafael J. Wysocki
2011-11-14 0:27 ` [update][PATCH 6/7] PM / Domains: Add default power off " Rafael J. Wysocki
2011-11-14 0:28 ` [update][PATCH 7/7] PM / Domains: Automatically update overoptimistic latency information Rafael J. Wysocki
2011-11-19 13:56 ` [Update 2x][PATCH 0/7] PM / Domains: Per-device callbacks and PM QoS Rafael J. Wysocki
2011-11-19 13:58 ` [Update 2x][PATCH 1/7] PM / Domains: Make it possible to use per-device domain callbacks Rafael J. Wysocki
2011-11-19 13:59 ` [Update 2x][PATCH 2/7] PM / Domains: Introduce "save/restore state" device callbacks Rafael J. Wysocki
2011-11-19 13:59 ` [Update 2x][PATCH 3/7] PM / Domains: Rework system suspend callback routines Rafael J. Wysocki
2011-11-24 0:20 ` [Update 3x][PATCH 3/7] PM / Domains: Rework system suspend callback routines (v2) Rafael J. Wysocki
2011-11-19 14:00 ` [Update 2x][PATCH 4/7] PM / Runtime: Use device PM QoS constraints Rafael J. Wysocki
2011-11-30 23:20 ` [Update 3x][PATCH 4/7] PM / Runtime: Use device PM QoS constraints (v2) Rafael J. Wysocki
2011-11-19 14:01 ` [Update 2x][PATCH 5/7] PM / Domains: Add device stop governor function (v4) Rafael J. Wysocki
2011-11-19 14:01 ` [Update 2x][PATCH 6/7] PM / Domains: Add default power off " Rafael J. Wysocki
2011-11-19 14:02 ` [Update 2x][PATCH 7/7] PM / Domains: Automatically update overoptimistic latency information Rafael J. Wysocki
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=201111082138.57448.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=g.liakhovetski@gmx.de \
--cc=jean.pihet@newoldbits.com \
--cc=khilman@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.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