Messages in this thread | | | Date | Tue, 1 Sep 2020 11:30:09 +0530 | From | Viresh Kumar <> | Subject | Re: [PATCH v2] opp: Power on (virtual) power domains managed by the OPP core |
| |
On 31-08-20, 17:49, Stephan Gerhold wrote: > I appreciate it, thank you! But actually after our discussion regarding > the "manage multiple power domains which might not always need to be on" > use case I would like to explore that a bit further before we decide on > a final solution that complicates changes later. > > The reason I mention this is that after our discussion I have been > (again) staring at the vendor implementation of CPU frequency scaling of > the platform I'm working on (qcom msm8916). Actually there seems to be yet > another power domain that is scaled only for some CPU frequencies within > the clock driver. (The vendor driver implies this is a requirement of > the PLL clock that is used for higher CPU frequencies, but not sure...) > > I don't fully understand how to implement this in mainline yet. I have > started some research on these "voltage requirements" for clocks, and > based on previous discussions [1] and patches [2] it seems like I'm > *not* supposed to add this to the clock driver, but rather as another > required-opp to the CPU OPP table. > > If that is the case, we would pretty much have a situation like you > described, a power domain that should only be scaled for some of the > OPPs (the higher CPU frequencies). > > But first I need to do some more research, and probably discuss how to > handle that power domain separately first. I think it would be easier if > we postpone this patch till then. I don't think anyone else needs this > patch at the moment.
Heh, okay, I can keep it out of my tree then :)
> [1]: https://lore.kernel.org/linux-clk/9439bd29e3ccd5424a8e9b464c8c7bd9@codeaurora.org/ > [2]: https://lore.kernel.org/linux-pm/20190320094918.20234-1-rnayak@codeaurora.org/ > > > Signed-off-by: Stephan Gerhold <stephan@gerhold.net> > > [ Viresh: Rearranged the code to remove extra loop and minor cleanup ] > > FWIW, the reason I put this into an extra loop is that the > dev_pm_domain_attach_by_name() might return -EPROBE_DEFER (or some other > error) for some of the power domains. If you create the device links > before attaching all domains you might unnecessarily turn on+off some of > them.
Hmm, but that shouldn't have any significant side affects, right ? And shouldn't result in some other sort of error. It makes the code look more sensible/readable and so I would prefer to keep a single loop if it doesn't make something not-work.
> Having it in a separate loop avoids that, because we only start powering > on the power domains when we know that all the power domains are > available.
-- viresh
| |