linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Mundt <lethal@linux-sh.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: linux-sh@vger.kernel.org, Greg KH <gregkh@suse.de>,
	LKML <linux-kernel@vger.kernel.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>
Subject: Re: [Update][PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM
Date: Tue, 19 Apr 2011 22:20:04 +0000	[thread overview]
Message-ID: <20110419222004.GA9664@linux-sh.org> (raw)
In-Reply-To: <201104200010.50656.rjw@sisk.pl>

On Wed, Apr 20, 2011 at 12:10:50AM +0200, Rafael J. Wysocki wrote:
> On Tuesday, April 19, 2011, Paul Mundt wrote:
> > On Tue, Apr 19, 2011 at 11:42:26PM +0200, Rafael J. Wysocki wrote:
> > > On Tuesday, April 19, 2011, Magnus Damm wrote:
> > > > Do you have any plans to add support for multiple clocks per struct
> > > > device? I had some plans to play around with that myself, but if we're
> > > > moving the code to a common place then this obviously becomes a bit
> > > > more complicated.
> > > > 
> > > > It's rather common that each hardware block in an SoC is connected to
> > > > more than a single clock. This needs to be managed by software
> > > > somehow.
> > > > 
> > > > So if the plan is to make to the code generic, how about allowing the
> > > > architecture to associate clocks with each struct device somehow?
> > > 
> > > Hmm.  For now, my patchset generally reorganizes the existing code without
> > > adding new functionality.  Of course, it is possible to add new functionality
> > > on top of it, but I'd prefer to focus on the "real" power domains support
> > > first (which I think should be done in a generic way too).
> > > 
> > Multiple clocks is not new functionality, it's the common case for the
> > bulk of the platforms, and something that is already presently handled.
> 
> OK
> 
> > > The plan is to share as much code as it makes sense between platforms and
> > > architectures.
> > 
> > An admirable plan, but the framework needs to be able to provide at least
> > the current required level of functionality in order for it to be
> > adopted, too.
> 
> Sure.
> 
> > On Mon, Apr 18, 2011 at 09:57:28PM +0200, Rafael J. Wysocki wrote:
> > > @@ -24,23 +24,18 @@
> > >  #ifdef CONFIG_PM_RUNTIME
> > >  static int omap1_pm_runtime_suspend(struct device *dev)
> > >  {
> > > -	struct clk *iclk, *fclk;
> > > -	int ret = 0;
> > > +	int ret;
> > >  
> > >  	dev_dbg(dev, "%s\n", __func__);
> > >  
> > >  	ret = pm_generic_runtime_suspend(dev);
> > > +	if (ret)
> > > +		return ret;
> > >  
> > > -	fclk = clk_get(dev, "fck");
> > > -	if (!IS_ERR(fclk)) {
> > > -		clk_disable(fclk);
> > > -		clk_put(fclk);
> > > -	}
> > > -
> > > -	iclk = clk_get(dev, "ick");
> > > -	if (!IS_ERR(iclk)) {
> > > -		clk_disable(iclk);
> > > -		clk_put(iclk);
> > > +	ret = pm_runtime_clock_suspend(dev);
> > > +	if (ret) {
> > > +		pm_generic_runtime_resume(dev);
> > > +		return ret;
> > >  	}
> > >  
> > >  	return 0;
> > 
> > The before and after changes here are not functionally equivalent. You've
> > gone from an explicit multi-clock scheme to a single encapsulated one via
> > pm_runtime_clock_suspend().
> 
> You're refferring to the OMAP changes I suppose?

Yes, but we have similar use cases on SH, too.

> > Almost every single SH IP block is likewise abstracted in to a function
> > and interface clock, and OMAP and others are where we modelled this
> > abstraction on top of in the first place, so there are certainly users
> > there too.
> 
> In fact, the shmobile runtime PM code in arch/arm/mach-shmobile/pm_runtime.c
> uses only one clock right now.
> 
That's more due to general laziness than design. The code in
arch/sh/kernel/cpu/shmobile/pm_runtime.c goes through a hwblk abstraction
that functionally maps out for some CPUs via one API what is the function
clock on other CPUs. The hwblk API was never carried over to the ARM
side, and so a simplistic single clock case was implemented instead, and
the drivers with multiple clocks all performed manual clock gating on
their multiple clocks outside of the context of runtime PM.

OMAP1 clearly has a demonstratable case for multiple clocks that are
runtime PM managed, and this is exactly the sort of use case that SH
requires, too. If we can migrate off of and kill off some short-lived
ill-conceived APIs in the process, great. IOW, if you solve the OMAP1
problem then we can easily fix up ARM SH/R-Mobile and regular SH parts to
comply uniformly.

  reply	other threads:[~2011-04-19 22:20 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-13  0:05 [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-13 14:17 ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-13 16:15   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Grant Likely
2011-04-14 23:12     ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-15 14:38       ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Grant Likely
2011-04-15 14:39       ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-14 18:20 ` [RFC][PATCH] PM: Make power domain callbacks take precedence over Magnus Damm
2011-04-14 22:45   ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-15 14:34     ` [RFC][PATCH] PM: Make power domain callbacks take precedence Alan Stern
2011-04-15 23:18       ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-16 17:15         ` [RFC][PATCH] PM: Make power domain callbacks take precedence Kevin Hilman
2011-04-16 23:12           ` [RFC][PATCH] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-14 23:16 ` [RFC][PATCH 0/2] Remove __weak definitions of platform PM callbacks Rafael J. Wysocki
2011-04-14 23:18   ` [RFC][PATCH 1/2] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-14 23:19   ` [RFC][PATCH 2/2] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-16 17:17 ` [RFC][PATCH] PM: Make power domain callbacks take precedence Kevin Hilman
2011-04-16 23:35 ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains Rafael J. Wysocki
2011-04-16 23:36   ` [PATCH 1/9] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-16 23:37   ` [PATCH 2/9] PM: Export platform bus type's default PM callbacks Rafael J. Wysocki
2011-04-16 23:38   ` [PATCH 3/9] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-16 23:38   ` [PATCH 4/9] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-16 23:39   ` [PATCH 5/9] OMAP2+ / PM: Move runtime PM implementation to use power domains Rafael J. Wysocki
2011-04-16 23:40   ` [PATCH 6/9] PM / Runtime: Add subsystem data field to struct dev_pm_info Rafael J. Wysocki
2011-04-16 23:42   ` [PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Rafael J. Wysocki
2011-04-18 19:59     ` [Update][PATCH " Rafael J. Wysocki
2011-04-19 10:18       ` [Update][PATCH 7/9] PM / Runtime: Add generic clock manipulation Magnus Damm
2011-04-19 21:42         ` [Update][PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Rafael J. Wysocki
2011-04-19 21:59           ` Paul Mundt
2011-04-19 22:10             ` Rafael J. Wysocki
2011-04-19 22:20               ` Paul Mundt [this message]
2011-04-19 22:50                 ` Rafael J. Wysocki
2011-04-19 10:58     ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock Mark Brown
2011-04-19 21:35       ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock manipulation rountines for runtime PM Rafael J. Wysocki
2011-04-20 11:57         ` [linux-pm] [PATCH 7/9] PM / Runtime: Add generic clock Mark Brown
2011-04-16 23:43   ` [PATCH 8/9] OMAP1 / PM: Use generic clock manipulation routines for runtime PM Rafael J. Wysocki
2011-04-18  8:18     ` Paul Mundt
2011-04-18 19:57       ` Rafael J. Wysocki
2011-04-16 23:44   ` [PATCH 9/9] PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops" Rafael J. Wysocki
2011-04-24 21:30   ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power domains (v2) Rafael J. Wysocki
2011-04-24 21:36     ` [PATCH 1/9] PM: Make power domain callbacks take precedence over subsystem ones Rafael J. Wysocki
2011-04-24 21:37     ` [PATCH 2/9] PM: Export platform bus type's default PM callbacks Rafael J. Wysocki
2011-04-24 21:38     ` [PATCH 3/9] shmobile: Use power domains for platform runtime PM Rafael J. Wysocki
2011-04-24 21:39     ` [PATCH 4/9] PM / Platform: Use generic runtime PM callbacks directly Rafael J. Wysocki
2011-04-24 21:41     ` [PATCH 5/9] OMAP2+ / PM: move runtime PM implementation to use device power domains Rafael J. Wysocki
2011-04-24 21:42     ` [PATCH 6/9] PM / Runtime: Add subsystem data field to struct dev_pm_info Rafael J. Wysocki
2011-04-24 21:42     ` [PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v2) Rafael J. Wysocki
2011-04-27 21:48       ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Rafael J. Wysocki
2011-04-27 23:04         ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation Colin Cross
2011-04-28  0:58           ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Rafael J. Wysocki
2011-04-28  1:06             ` Rafael J. Wysocki
2011-04-28  1:33               ` Rafael J. Wysocki
2011-04-28 19:36                 ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v5) Rafael J. Wysocki
2011-04-29 19:35                   ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation Stephen Boyd
2011-04-29 20:29                     ` [Update x2][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v5) Rafael J. Wysocki
2011-04-29 22:04                       ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v6) Rafael J. Wysocki
2011-05-03 17:00                         ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation Stephen Boyd
2011-05-03 17:38                           ` [Update x3][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v6) Rafael J. Wysocki
2011-04-29 20:50             ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation Grant Likely
2011-04-29 21:07               ` [Update][PATCH 7/9] PM / Runtime: Generic clock manipulation rountines for runtime PM (v3) Rafael J. Wysocki
2011-04-24 21:43     ` [PATCH 8/9] OMAP1 / PM: Use generic clock manipulation routines for runtime PM Rafael J. Wysocki
2011-05-16 10:16       ` Kevin Hilman
2011-05-16 18:26         ` Rafael J. Wysocki
2011-04-24 21:44     ` [PATCH 9/9] PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops" Rafael J. Wysocki
2011-04-24 23:36     ` [PATCH 0/9] PM: Rework shmobile and OMAP runtime PM using power Greg KH

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=20110419222004.GA9664@linux-sh.org \
    --to=lethal@linux-sh.org \
    --cc=grant.likely@secretlab.ca \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /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;
as well as URLs for NNTP newsgroup(s).