From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
LKML <linux-kernel@vger.kernel.org>,
Matthew Garrett <mjg59@srcf.ucam.org>,
Magnus Damm <magnus.damm@gmail.com>,
Grant Likely <grant.likely@secretlab.ca>,
Linux-sh list <linux-sh@vger.kernel.org>
Subject: Re: [RFC][PATCH 0/14] PM / shmobile: Pass power domain information via DT (was: Re: [RFD] PM: Device
Date: Tue, 24 Jul 2012 20:37:27 +0000 [thread overview]
Message-ID: <201207242237.28051.rjw@sisk.pl> (raw)
In-Reply-To: <201207241956.06986.arnd@arndb.de>
On Tuesday, July 24, 2012, Arnd Bergmann wrote:
> On Tuesday 24 July 2012, Rafael J. Wysocki wrote:
> > On Tuesday, July 24, 2012, Arnd Bergmann wrote:
> > > On Saturday 21 July 2012, Rafael J. Wysocki wrote:
>
> > >
> > > Sorry for taking so long to reply. I am really not that familiar with the
> > > power domain requirements, but I do have two comments on your approach:
> > >
> > > * I think when we want to add a generic concept to the device tree such
> > > as power domains, we should always make it specified in a generic way.
> >
> > Do we really want that? I'm a bit skeptical, because apparently nobody
> > cares, as the (zero) response to this patchset evidently indicates and
> > since nobody cares, it's probably better not to add such "generic" things
> > just yet.
>
> Well, the trouble with bindings is that they are much harder to change
> later, at least in incompatible ways.
Hmm, so I think you wanted to say that it might be burdensome to retain the
code handling the old binding once we had started to use a new generic one.
I can agree with that, but that's quite similar to user space interfaces.
Once we've exposed a user space interface of some kind and someone starts
to use it, we'll have to maintain it going forward for the user in question.
However, there is a way to deprecate old user space interfaces and it has
happened.
In this particular case the burden would be on Renesas, but I don't think it
would affect anybody else.
> > > You have used the "renesas,pmdomain" attribute, which is specific to
> > > one vendor and requires platform specific code to read it.
> > > Is there any reason not to put the code into the generic
> > > drivers/base/power/domain.c file (or near it) and make a binding that
> > > works for everyone?
> >
> > Yes, there is. A couple of them in fact.
> >
> > First off, power domains will always need platform-specific code to support
> > them, no matter what. The problem is that they tend to require special
> > handling, even within the same SoC, let alone different SoCs, and that handling
> > has to be implemented in an SoC-specific way, because it has to know various
> > things about the platform (like what to write to what register(s) at what time
> > and so on). Of course, that platform-specific code needs to know which
> > domain the given description corresponds to and there doesn't seem to be any
> > useful way to specify that through DTs.
>
> We have the same problem for a lot of other subsystems: clock, regulator,
> irq, gpio, pinctrl, dma, ...
>
> In each of these cases, we want a driver to be able to associate some
> property with a driver (or platform code) from another subsystem.
> We try to handle those using generic subsystem code that interprets
> regular property names.
For power domains those properties would be SoC-specific. That is, there may
be a different set of properties for each SoC in principle and it's going to
get quite messy relatively quickly.
> > Second, the generic code needed to support such a binding would have to be
> > quite complex and I don't see any advantage from adding it.
>
> The generic binding would only need to specify what the property
> looks like and how the possible values can be determined. We don't
> need to make that code generic right away but could wait until we
> have a couple of implementations before we pull out the common bits.
>
> The important part to me is writing the binding in a way that allows
> us to do this.
Admittedly, I have a little experience with writing DT bindings.
The regulator bindings look like we could do something similar for power
domains, but for one I don't want platform device objects to be created
for them in any case (that would make as much sense as creating a platform
device for a bus type).
> >
> > > * Mark suggested two options (string and phandle), and (you guessed it),
> >
> > To me, the Mark's suggestion was to follow the example of TI hwmods, which
> > I did. In fact, the power domains on Renesas platforms are an analogous
> > concept, so in my opinion handling them in analogy with hwmods makes a lot of
> > sense.
>
> I had never seen the hwmod binding before and if I had I would have
> given them the same comments. I definitely don't think we should be
> using it as a good example for common code.
Well, good to know. :-)
> > > IMHO using phandle makes it much easier to do this in a generic way,
> > > without having to document every possible string that this can be
> > > set to in the binding document. Obviously the phandle requires having
> > > a node in the device tree for each domain, but I think having that
> > > node is actually an advantage because it lets you describe the
> > > hierarchy of the domains there.
> >
> > I don't quite see how it is better. I could (and should in fact) represent
> > that hierarchy as an array of pairs of strings without adding any special
> > parsing code to the kernel (except for a simple routine walking that table
> > and calling pm_genpd_add_subdomain_names() for every pair).
> >
> > The only disadvantage of the current approach I can see is that whoever
> > creates a dts for a board based on the given SoC has to know the names of the
> > power domains to use in there. I don't think this is an overly burdensome
> > requirement.
>
> Well, it does mean that we need to maintain a separate binding document
> for each soc that has its own set of possible values.
I'm not sure we'll be able to avoid that anyway.
> > The other way around, the platform code supposed to handle the power domains
> > would need a way to match DT nodes against the domains, which also would
> > require some string-based identification and that would have to be documented
> > as well.
>
> The part that matches the pm-domain device nodes can and should be
> specific to the platform implementing the pm-domain. We can easily
> do the same thing we did for regulators, where each regulator can
> be either identified through its "reg" property in cases where that
> makes sense or through a "regulator-compatible" property in cases
> where we need a string representation.
Where can I find the code that parses the regulator bindings?
Rafael
next prev parent reply other threads:[~2012-07-24 20:37 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <201207032302.17805.rjw@sisk.pl>
[not found] ` <20120704115637.GS4111@opensource.wolfsonmicro.com>
[not found] ` <201207052217.48086.rjw@sisk.pl>
2012-07-16 21:15 ` [RFC][PATCH 0/14] PM / shmobile: Pass power domain information via DT (was: Re: [RFD] PM: Device tre Rafael J. Wysocki
2012-07-16 21:17 ` [RFC][PATCH 1/14] PM / Domains: Make it possible to use domain names when adding devices Rafael J. Wysocki
2012-07-16 21:18 ` [RFC][PATCH 2/14] ARM: shmobile: Use names of power domains for adding devices to them Rafael J. Wysocki
2012-07-16 21:19 ` [RFC][PATCH 3/14] ARM: shmobile: Drop r8a7779_add_device_to_domain() Rafael J. Wysocki
2012-07-16 21:20 ` [RFC][PATCH 4/14] PM / Domains: Make it possible to use names when adding subdomains Rafael J. Wysocki
2012-07-16 21:21 ` [RFC][PATCH 5/14] ARM: shmobile: Use domain names when adding subdomains to power domains Rafael J. Wysocki
2012-07-16 21:23 ` [RFC][PATCH 6/14] RM: shmobile: Add routine for automatic PM domains initialization Rafael J. Wysocki
2012-07-16 21:24 ` [RFC][PATCH 7/14] ARM: shmobile: Remove dead sh7372 power management code Rafael J. Wysocki
2012-07-16 21:25 ` [RFC][PATCH 8/14] PM / Domains: Add power-on function using names to identify domains Rafael J. Wysocki
2012-07-16 21:26 ` [RFC][PATCH 9/14] ARM: shmobile: Move sh7372's PM domain objects to a table Rafael J. Wysocki
2012-07-16 21:27 ` [RFC][PATCH 10/14] ARM: shmobile: Move r8a7740's " Rafael J. Wysocki
2012-07-16 21:28 ` [RFC][PATCH 11/14] ARM: shmobile: Move r8a7779's " Rafael J. Wysocki
2012-07-16 21:29 ` [RFC][PATCH 12/14] ARM: shmobile: Make rmobile_init_pm_domain() static Rafael J. Wysocki
2012-07-16 21:30 ` [RFC][PATCH 13/14] PM / Domains: Introduce pm_genpd_present() Rafael J. Wysocki
2012-07-16 21:32 ` [RFC][PATCH 14/14] ARM: shmobile: Add support for storing PM domain information in DTs Rafael J. Wysocki
2012-07-21 17:17 ` [RFC][PATCH 0/14] PM / shmobile: Pass power domain information via DT (was: Re: [RFD] PM: Device Rafael J. Wysocki
2012-07-24 15:20 ` Arnd Bergmann
2012-07-24 19:34 ` Rafael J. Wysocki
2012-07-24 19:56 ` Arnd Bergmann
2012-07-24 20:37 ` Rafael J. Wysocki [this message]
2012-07-25 9:29 ` Rafael J. Wysocki
2012-07-25 13:00 ` Arnd Bergmann
[not found] ` <201207251300.34892.arnd-r2nGTMty4D4@public.gmane.org>
2012-07-25 22:32 ` Rafael J. Wysocki
2012-07-26 0:38 ` Kevin Hilman
[not found] ` <87vchb4ar8.fsf-l0cyMroinI0@public.gmane.org>
2012-07-26 20:55 ` Rafael J. Wysocki
2012-07-26 21:09 ` Mark Brown
2012-07-26 21:34 ` Rafael J. Wysocki
2012-07-26 21:45 ` Kevin Hilman
2012-07-26 21:55 ` Mark Brown
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=201207242237.28051.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=arnd@arndb.de \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=grant.likely@secretlab.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mjg59@srcf.ucam.org \
/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).