From: Kevin Hilman <khilman@kernel.org>
To: Alexander Aring <alex.aring@gmail.com>
Cc: linux-rpi-kernel@lists.infradead.org, robh+dt@kernel.org,
pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
swarren@wwwdotorg.org, lee@kernel.org, eric@anholt.net,
linux@arm.linux.org.uk, f.fainelli@gmail.com, rjui@broadcom.com,
sbranden@broadcom.com, rjw@rjwysocki.net, ulf.hansson@linaro.org,
len.brown@intel.com, pavel@ucw.cz, gregkh@linuxfoundation.org,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
bcm-kernel-feedback-list@broadcom.com, linux-pm@vger.kernel.org,
kernel@pengutronix.de
Subject: Re: [PATCH 2/3] ARM: bcm2835: add rpi power domain driver
Date: Tue, 01 Dec 2015 15:27:57 -0800 [thread overview]
Message-ID: <7hr3j5696q.fsf@deeprootsystems.com> (raw)
In-Reply-To: <20151201210037.GB2074@omega> (Alexander Aring's message of "Tue, 1 Dec 2015 22:00:42 +0100")
Alexander Aring <alex.aring@gmail.com> writes:
> Hi,
>
> On Mon, Nov 30, 2015 at 03:51:56PM -0800, Kevin Hilman wrote:
>> Alexander Aring <alex.aring@gmail.com> writes:
>>
>> > This patch adds support for RPi several Power Domains and enable support
>> > to enable the USB Power Domain when it's not enabled before.
>> >
>> > This patch based on Eric Anholt's patch to support Power Domains. He had
>> > an issue about -EPROBE_DEFER inside the power domain subsystem, this
>> > issue was solved by commit <311fa6a> ("PM / Domains: Return -EPROBE_DEFER
>> > if we fail to init or turn-on domain").
>>
>> [...]
>>
>> > +#define RPI_POWER_DOMAIN(_domain, _name) \
>> > + [_domain] = { \
>>
>> Using _domain as the array index is going to create a sparsely filled
>> array here, wasting memory. I'm not sure what the other domain numbers
>> are for other domains to know if this is a big waste or not, but it's
>> still a bit wasteful.
>>
>> In any case, AFAICT, it doesn't look like you need to have the array
>> index match the domain number anyways since you're using container_of().
>>
>> So I suggest just removing this array index part, and just creating them
>> in arrary order. Then your _probe function isn't going to try to setup
>> 3 non-enabled domains before it finally hits the USB domain.
>>
>
> The idea is here to keeping the _same_ power domains indexes for
> device-tree power domain API like the RPi firmware provides it.
>
> If somebody dumps the devicetree and see the power domain index, if
> he/she does then a firmware API power domain index mapping it is wrong.
> Because we need then a separate mapping:
>
> $ARRAY_DEFINED_INDEX <-> $RPI_FIRMWARE_POWER_DOMAIN_API_INDEX
>
> With the current solution to make a 1:1 mapping it there is no
> confusing anymore, because:
>
> $ARRAY_DEFINED_INDEX == $RPI_FIRMWARE_POWER_DOMAIN_API_INDEX
I'm not proposing to change the DT numbers or the firmware numbers. All
I'm proposing is that those numbers don't need to be mapped to the array
index. IOW, in your structure definition macro:
+#define RPI_POWER_DOMAIN(_domain, _name) \
+ [_domain] = { \
+ .domain = _domain, \
[...]
just drop the " [_domain] = { " line.
> Also there exists power domains 1-10 (so far I know), 1-2 are currently
> not used (and dummy-calls inside the rpi firmware implementation). So
> later they should be provided anyway.
They could then be added in any order in the struture.
> There exists a little improvement to let the for (i = 0; i < num_domains
> ...) start at "i = 1", the entry with index "0" will be a waste of memory
> then and it's not provided by the firmware API as a power domain.
Even index 0 will not be wasted with the above approach.
Kevin
next prev parent reply other threads:[~2015-12-01 23:28 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-19 18:08 [PATCH 0/3] ARM: bcm2835: add support for rpi power domain driver Alexander Aring
2015-11-19 18:08 ` [PATCH 1/3] power: domain: add pm_genpd_uninit Alexander Aring
[not found] ` <1447956490-22930-2-git-send-email-alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-11-24 20:22 ` Ulf Hansson
2015-11-30 23:19 ` Kevin Hilman
2015-11-19 18:08 ` [PATCH 2/3] ARM: bcm2835: add rpi power domain driver Alexander Aring
2015-11-24 20:44 ` Ulf Hansson
[not found] ` <CAPDyKFqiGe+E6WRELduZJoKwFRkgnFxBvPjEa3jX04EAC3vXrA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-11-24 21:02 ` Alexander Aring
2015-11-25 19:33 ` Eric Anholt
2015-11-24 21:43 ` Eric Anholt
2015-11-30 23:51 ` Kevin Hilman
2015-12-01 21:00 ` Alexander Aring
2015-12-01 23:27 ` Kevin Hilman [this message]
2015-12-04 9:22 ` Alexander Aring
2015-11-19 18:08 ` [PATCH 3/3] devicetree: add rpi power domain driver bindings Alexander Aring
2015-11-20 16:14 ` Rob Herring
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=7hr3j5696q.fsf@deeprootsystems.com \
--to=khilman@kernel.org \
--cc=alex.aring@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=devicetree@vger.kernel.org \
--cc=eric@anholt.net \
--cc=f.fainelli@gmail.com \
--cc=galak@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=kernel@pengutronix.de \
--cc=lee@kernel.org \
--cc=len.brown@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=linux@arm.linux.org.uk \
--cc=mark.rutland@arm.com \
--cc=pavel@ucw.cz \
--cc=pawel.moll@arm.com \
--cc=rjui@broadcom.com \
--cc=rjw@rjwysocki.net \
--cc=robh+dt@kernel.org \
--cc=sbranden@broadcom.com \
--cc=swarren@wwwdotorg.org \
--cc=ulf.hansson@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).