18.08.2021 12:41, Ulf Hansson пишет: > On Wed, 18 Aug 2021 at 11:14, Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote: >> >> On 18-08-21, 10:29, Ulf Hansson wrote: >>> Me and Dmitry discussed adding a new genpd callback for this. I agreed >>> that it seems like a reasonable thing to add, if he insists. Either way gives the equal result. The new callback allows to remove the boilerplate dev_pm_opp_set_rate(clk_get_rate() code from the rpm-resume of consumer devices, that's it. >>> The intent was to invoke the new callback from __genpd_dev_pm_attach() >>> when the device has been attached to its genpd. This allows the >>> callback, to invoke clk_get_rate() and then dev_pm_opp_set_rate(), to >>> update the vote according to the current state of the HW. >> >> I wouldn't call dev_pm_opp_set_rate() from there, since it means >> configure and enable (both) for different resources, clk, regulator, >> genpd, etc.. > > Right, good point! > > dev_pm_opp_set_rate() is best called from consumer drivers, as they > need to be in control. >> What we need here is just configure. So something like this then: The intent wasn't to use dev_pm_opp_set_rate() from __genpd_dev_pm_attach(), but to set genpd->rpm_pstate in accordance to the h/w configuration. On Tegra we have a chain of PDs and it's not trivial to convert the device's OPP into pstate because only the parent domain can translate the required OPP. Viresh, please take a look at what I did in [1]. Maybe it could be done in another way. [1] https://patchwork.ozlabs.org/project/linux-tegra/patch/20210701232728.23591-3-digetx@xxxxxxxxx/