From: Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Kevin Hilman <khilman-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Alexandre Courbot
<gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Rafael Wysocki <rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org>,
Ulf Hansson <ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Ian Campbell
<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
Vince Hsu <vinceh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH V4 12/16] Documentation: DT: bindings: Add power domain info for NVIDIA PMC
Date: Wed, 9 Dec 2015 12:23:47 +0000 [thread overview]
Message-ID: <56681D53.9090600@nvidia.com> (raw)
In-Reply-To: <7h4mfslpyd.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
On 08/12/15 19:07, Kevin Hilman wrote:
> Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> writes:
>
>> Add power-domain binding documentation for the NVIDIA PMC driver in
>> order to support generic power-domains.
>>
>> Signed-off-by: Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>>
>> ---
>>
>> Please note that I have been debating whether I add this
>> "nvidia,powergate-clock-disable" property or just leave the clocks
>> disabled by default. Some downstream kernels leave the clocks enabled
>> for the audio power-domain because the clocks required for powering up
>> the power-domain are needed by all modules within the power-domain.
>> However are the same time there are other power-domains that may need
>> to be on, but not always clocked and so having the ability to specify if
>> the clocks should be disabled seems useful. However, I can also remove
>> this and just have the appropriate devices turn on the clocks as well.
>> ---
>> .../bindings/arm/tegra/nvidia,tegra20-pmc.txt | 61 ++++++++++++++++++++++
>> 1 file changed, 61 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
>> index 838e1a69ec0a..8e4641db51a9 100644
>> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
>> +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
>> @@ -1,5 +1,7 @@
>> NVIDIA Tegra Power Management Controller (PMC)
>>
>> +== Power Management Controller Node ==
>> +
>> The PMC block interacts with an external Power Management Unit. The PMC
>> mostly controls the entry and exit of the system from different sleep
>> modes. It provides power-gating controllers for SoC and CPU power-islands.
>> @@ -69,6 +71,10 @@ Optional properties for hardware-triggered thermal reset (inside 'i2c-thermtrip'
>> Defaults to 0. Valid values are described in section 12.5.2
>> "Pinmux Support" of the Tegra4 Technical Reference Manual.
>>
>> +Optional nodes:
>> +- pm-domains : This node contains a hierarchy of PM domain nodes, which should
>> + match the power-domains on the Tegra SoC.
>> +
>> Example:
>>
>> / SoC dts including file
>> @@ -114,3 +120,58 @@ pmc@7000f400 {
>> };
>> ...
>> };
>> +
>> +
>> +== PM Domain Nodes ==
>> +
>> +Each of the PM domain nodes represents a power-domain on the Tegra SoC
>> +that can be power-gated by the PMC and should be named appropriately.
>> +
>> +Required properties:
>> + - clocks: Must contain an entry for each clock required by the PMC for
>> + controlling a power-gate. See ../clocks/clock-bindings.txt for details.
>
> We've had this discussiona for a couple of other SoCs, so I need to
> ask...
>
> Presumably these are not device clocks that a runtime PM enabled driver
> should be managing for a device, right? IOW, We want to make sure that the
> PM domain isn't managing clocks for drivers that should be doing it.
>
> I understand there are legitimate reasons for the PM domain to manage
> clocks in addition to device drivers (e.g. for synchronous reset), but
> just want to be sure it's not a shortcut for having a proper driver.
So some clocks may also be used by devices, but they are needed as part
of the power ungating/gating sequence. The general power-up sequence for
tegra is ...
1. Enable the power-domain
2. Enable the clock(s)
3. Remove signal clamps
4. De-assert reset(s)
5. Disable clocks (optional)
You may say we should only handle #1 above for the powering up sequence,
but we can't do this. The reason is that there is one bit for each
power-domain that controls the signaling clamps and so we need to turn
on all the clocks specified in the TRM before we do this. Once we have
done this and released the reset(s), we can then disable the clocks
again (shown above an optional as it is not mandatory from a design
perspective) and then the devices in the power-domain should enable the
clocks they need as and when they want them.
Please note that I 100% agree that all clocks required by a device are
handled by the device and we do not implement any short-cuts here. The
only question I had was if there are clocks that may be bus clocks in
the power-domain that are required by all device in the power-domain.
However, may be this should be represented as a bus driver and all the
devices are children of it?
Hope that helps.
Cheers
Jon
next prev parent reply other threads:[~2015-12-09 12:23 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-04 14:57 [PATCH V4 00/16] Add generic PM domain support for Tegra Jon Hunter
2015-12-04 14:57 ` [PATCH V4 01/16] reset: add of_reset_control_get_by_index() Jon Hunter
2015-12-04 14:57 ` [PATCH V4 02/16] soc: tegra: pmc: Add missing structure members to kernel-doc Jon Hunter
[not found] ` <1449241037-22193-3-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-25 13:20 ` Thierry Reding
2015-12-04 14:57 ` [PATCH V4 03/16] soc: tegra: pmc: Fix sparse warning for tegra_pmc_init_tsense_reset Jon Hunter
2016-01-25 13:21 ` Thierry Reding
2015-12-04 14:57 ` [PATCH V4 04/16] soc: tegra: pmc: Remove debugfs entry on probe failure Jon Hunter
[not found] ` <1449241037-22193-5-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-25 13:25 ` Thierry Reding
2015-12-04 14:57 ` [PATCH V4 05/16] soc: tegra: pmc: Avoid extra remapping of PMC registers Jon Hunter
2016-01-14 13:45 ` Thierry Reding
2016-01-14 16:35 ` Jon Hunter
2016-01-14 17:24 ` Thierry Reding
2016-01-14 19:02 ` Jon Hunter
2015-12-04 14:57 ` [PATCH V4 06/16] soc: tegra: pmc: Wait for powergate state to change Jon Hunter
[not found] ` <1449241037-22193-7-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-14 14:01 ` Thierry Reding
2016-01-15 9:06 ` Jon Hunter
2015-12-04 14:57 ` [PATCH V4 07/16] soc: tegra: pmc: Remove non-existing power partitions for T210 Jon Hunter
2016-01-25 13:27 ` Thierry Reding
2015-12-04 14:57 ` [PATCH V4 08/16] soc: tegra: pmc: Fix checking of valid partitions Jon Hunter
2016-01-14 14:11 ` Thierry Reding
2016-01-15 9:08 ` Jon Hunter
2015-12-04 14:57 ` [PATCH V4 09/16] soc: tegra: pmc: Ensure partitions can be toggled on/off by PMC Jon Hunter
[not found] ` <1449241037-22193-10-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-14 14:14 ` Thierry Reding
2016-01-15 9:32 ` Jon Hunter
2015-12-04 14:57 ` [PATCH V4 10/16] PM / Domains: Add function to remove a pm-domain Jon Hunter
2015-12-04 14:57 ` [PATCH V4 11/16] Documentation: DT: bindings: Update NVIDIA PMC for Tegra210 Jon Hunter
2015-12-06 0:31 ` Rob Herring
2015-12-07 9:54 ` Jon Hunter
2015-12-04 14:57 ` [PATCH V4 12/16] Documentation: DT: bindings: Add power domain info for NVIDIA PMC Jon Hunter
[not found] ` <1449241037-22193-13-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-12-06 0:37 ` Rob Herring
2015-12-07 9:56 ` Jon Hunter
2016-01-14 14:41 ` Thierry Reding
2016-01-15 9:43 ` Jon Hunter
2015-12-08 19:07 ` Kevin Hilman
[not found] ` <7h4mfslpyd.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2015-12-09 12:23 ` Jon Hunter [this message]
[not found] ` <56681D53.9090600-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-12-09 12:33 ` Jon Hunter
[not found] ` <56681F9A.6080200-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-12-15 0:42 ` Kevin Hilman
2015-12-15 0:34 ` Kevin Hilman
2015-12-04 14:57 ` [PATCH V4 13/16] soc: tegra: pmc: Add generic PM domain support Jon Hunter
2016-01-14 14:39 ` Thierry Reding
2016-01-15 9:42 ` Jon Hunter
[not found] ` <5698BF00.6090102-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-01-15 10:01 ` Lucas Stach
2015-12-04 14:57 ` [PATCH V4 14/16] clk: tegra210: Add the APB2APE audio clock Jon Hunter
[not found] ` <1449241037-22193-1-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-12-04 14:57 ` [PATCH V4 15/16] ARM64: tegra: Add audio PM domain device node for Tegra210 Jon Hunter
2015-12-04 14:57 ` [PATCH V4 16/16] ARM64: tegra: select PM_GENERIC_DOMAINS Jon Hunter
[not found] ` <1449241037-22193-17-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-12-15 19:54 ` Ulf Hansson
[not found] ` <CAPDyKFrcuK4iCo7Tg1Q_XjB7Y-+=s-ax1vzK4UEu9FfPnuProw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-16 9:40 ` Jon Hunter
2015-12-16 9:47 ` Ulf Hansson
[not found] ` <CAPDyKFpZoZZapqanFyUzT_jZ6DLBnGXOXEyDHosWpphAjzhy7A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-16 11:40 ` Jon Hunter
2015-12-16 12:51 ` Ulf Hansson
2016-01-13 17:03 ` Thierry Reding
2016-01-13 20:43 ` Arnd Bergmann
2016-01-14 8:57 ` Ulf Hansson
2016-01-14 9:21 ` Arnd Bergmann
2016-01-14 10:29 ` Thierry Reding
2016-01-14 11:11 ` Arnd Bergmann
2016-01-26 17:30 ` Thierry Reding
[not found] ` <20160126173001.GA11062-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2016-01-26 21:52 ` Kevin Hilman
2016-01-14 17:16 ` Jon Hunter
2016-01-26 17:01 ` Jon Hunter
2016-01-27 9:43 ` Ulf Hansson
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=56681D53.9090600@nvidia.com \
--to=jonathanh-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=khilman-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=vinceh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.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).