linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Chen <hzpeterchen@gmail.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Peter Chen <peter.chen@nxp.com>, <mark.rutland@arm.com>,
	<ulf.hansson@linaro.org>, <heiko@sntech.de>,
	<stephen.boyd@linaro.org>, <frank.li@nxp.com>,
	<linux-kernel@vger.kernel.org>, <gary.bisson@boundarydevices.com>,
	<festevam@gmail.com>, <stillcompiling@gmail.com>, <arnd@arndb.de>,
	<dbaryshkov@gmail.com>, <vaibhav.hiremath@linaro.org>,
	<krzk@kernel.org>, <mka@chromium.org>,
	<stern@rowland.harvard.edu>, <devicetree@vger.kernel.org>,
	<mail@maciej.szmigiero.name>, <pawel.moll@arm.com>,
	<linux-pm@vger.kernel.org>, <s.hauer@pengutronix.de>,
	<troy.kisky@boundarydevices.com>, <robh+dt@kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <hverkuil@xs4all.nl>,
	<oscar@naiandei.net>, <gregkh@linuxfoundation.org>,
	<linux-usb@vger.kernel.org>, <sre@kernel.org>,
	<broonie@kernel.org>, <p.zabel@pengutronix.de>,
	<shawnguo@kernel.org>, <jun.li@nxp.com>
Subject: Re: [PATCH v16 2/7] power: add power sequence library
Date: Fri, 7 Jul 2017 16:01:07 +0800	[thread overview]
Message-ID: <20170707080107.GC21909@b29397-desktop> (raw)
In-Reply-To: <2629938.X3D3UTyHBr@aspire.rjw.lan>

On Fri, Jul 07, 2017 at 03:13:48AM +0200, Rafael J. Wysocki wrote:
> > 
> > - Can I write new code for it or I need to depend on something?
> 
> There is nothing this code needs to depend on AFAICS, but there are existing
> solutions in this problem space (ACPI power management, genpd), so it needs to
> be careful enough about possible overlaps etc.
> 
> > I find there is already "power state" concept at documentation.
> > Documentation/ABI/testing/sysfs-devices-power_state
> 
> This is ACPI-specific and only in sysfs directories representing ACPI device
> objects (which aren't physical devices).
> 
> Anyway, since ACPI covers the problem space you are working in already,
> your code has to be mutually exclusive with it.
> 
> > - If I can write the new code for it, except the problems I want
> > to fix, are there any other use cases I need to consider?
> 
> I would start simple and focus on the particular problem at hand, that is
> devices with two power states ("on" and "off") where the "on" state
> depends on a number of clocks and/or GPIOs.  Still, I'd also avoid making
> design choices that might prevent it from being extended in the future
> if need be.
> 
> One major problem I can see is how to "attach" the power states framework
> to a particular device (once we have discovered that it should be used with
> that device).
> 
> For bus types that don't do power management of their own you could follow
> ACPI (and genpd) and provide a PM domain for this purpose, but bus types
> doing their own PM (like USB) will probably need to be treated differently.
> In those cases the bus type code will have to know that it should call some
> helpers to switch power states of devices.
> 

After thinking more, using a power state framework is seems too heavy
for this use case. This use case is just do some clock and gpio
operations before device is created, and do some put operations
after device is deleted. We just need some helpers in one structure
(called "power sequence" or "power state") for this purpose.

For the use case, the clock and gpio operation can be done after device
is created, the power domain is more suitable.

> > > 
> > > Moreover, it assumes that all of the platforms including the IP block driven
> > > by the controller driver in question will use the "power sequences" model,
> > > but what if there are more generally defined power domains on them?
> > 
> > No, the IP block doesn't need this "power sequence", the power stuffs
> > (clock, gpio, regulator) are described at firmware (eg, DT), and power
> > operations are carried out during the probe, the device and driver match
> > happens before power operation.
> > 
> > But for devices on the bus (bus is controlled by controller), the match
> > information (eg, product id/vendor id) is stored at device's firmware, the
> > controller device needs to talk with its child first to get the match
> > information before the child device's probe.
> 
> Actually, that may vary from bus to bus.  In some cases the enumeration is
> entirely firmware-based and in some cases devices are discoverable.
> 
> I guess you mean the latter situation and you are saying that subordinate
> devices may need to be turned "on" (by means of a "power sequence") in order
> to be enumerated.
> 
> Fair enough, but this is not what I meant.
> 
> The concern was that if drivers started to use "power sequences", they would
> become incompatible with alternative solutions in the same problem space,
> like genpd, but that need not be the case, so never mind.

"power sequence" is just used before the device is created and after the
device is deleted from the bus. I don't want to overlap with power
domain.

> 
> > > 
> > > It looks like the power management should really be carried out by an
> > > additional layer of code to avoid imposing platform dependencies on
> > > controller drivers.
> > > 
> > > Further, what if there are "power sequences" for the host controllers
> > > themselves?  Who's expected to operate those "power sequences" then?
> > 
> > See above.
> 
> Let me rephrase.  Assume that your host controller is a platform device and
> it is not "on" when the SoC comes up.  It has to be turned "on" via a "power
> sequence".  Who's expected to do that for it?
> 

We can use power domain for it, doesn't need "power sequence" in this
series introduces.

-- 

Best Regards,
Peter Chen

  reply	other threads:[~2017-07-07  8:01 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-21  6:42 [PATCH v16 0/7] power: add power sequence library Peter Chen
2017-06-21  6:42 ` [PATCH v16 1/7] binding-doc: power: pwrseq-generic: add binding doc for generic " Peter Chen
2017-06-21  6:42 ` [PATCH v16 2/7] power: add " Peter Chen
2017-07-05  0:44   ` Rafael J. Wysocki
2017-07-05 11:54     ` Peter Chen
2017-07-07  1:13       ` Rafael J. Wysocki
2017-07-07  8:01         ` Peter Chen [this message]
2017-07-07 13:03           ` Rafael J. Wysocki
2017-07-08  5:51             ` Peter Chen
2017-07-08 12:14               ` Rafael J. Wysocki
2017-07-10  2:28                 ` Peter Chen
2017-07-17 13:39                   ` Rafael J. Wysocki
2017-07-18  4:29                     ` Peter Chen
2017-07-18 17:06                       ` Rafael J. Wysocki
2017-07-19  2:56                         ` Peter Chen
2017-07-19 11:34                           ` Rafael J. Wysocki
2017-07-20  9:35                             ` Peter Chen
2017-06-21  6:42 ` [PATCH v16 3/7] binding-doc: usb: usb-device: add optional properties for power sequence Peter Chen
2017-06-21  6:42 ` [PATCH v16 4/7] usb: core: add power sequence handling for USB devices Peter Chen
2017-06-21  6:42 ` [PATCH v16 5/7] ARM: dts: imx6qdl: Enable usb node children with <reg> Peter Chen
2017-06-21  6:42 ` [PATCH v16 6/7] ARM: dts: imx6qdl-udoo.dtsi: fix onboard USB HUB property Peter Chen
2017-06-21  6:42 ` [PATCH v16 7/7] ARM: dts: imx6q-evi: Fix onboard hub reset line Peter Chen

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=20170707080107.GC21909@b29397-desktop \
    --to=hzpeterchen@gmail.com \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=dbaryshkov@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=frank.li@nxp.com \
    --cc=gary.bisson@boundarydevices.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heiko@sntech.de \
    --cc=hverkuil@xs4all.nl \
    --cc=jun.li@nxp.com \
    --cc=krzk@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mail@maciej.szmigiero.name \
    --cc=mark.rutland@arm.com \
    --cc=mka@chromium.org \
    --cc=oscar@naiandei.net \
    --cc=p.zabel@pengutronix.de \
    --cc=pawel.moll@arm.com \
    --cc=peter.chen@nxp.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=sre@kernel.org \
    --cc=stephen.boyd@linaro.org \
    --cc=stern@rowland.harvard.edu \
    --cc=stillcompiling@gmail.com \
    --cc=troy.kisky@boundarydevices.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vaibhav.hiremath@linaro.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).