Message ID | 20240619140849.368580-1-ulf.hansson@linaro.org (mailing list archive) |
---|---|
Headers | show |
Series | OPP/pmdomain: Assign required_devs for required OPPs through genpd | expand |
On 19.06.2024 4:08 PM, Ulf Hansson wrote: > Through dev_pm_opp_set_config() the _opp_attach_genpd() allows consumer > drivers to hook up a device to its PM domains. This works for both a single > and multiple PM domains. Their corresponding virtual devices that are > created by genpd during attach, are later being assigned as the > required_devs for the corresponding required OPPs. > > In principle this works fine, but there are some problems. Especially as > the index for a "required-opps" may not necessarily need to match the index > for the "power-domain" in DT, in which case things gets screwed up. So, is this series essentially tackling a problem like this: pdp_A: power-domain-provider@aaaaaa { [...] opp-table { pdp_A_opp0: opp-0 { opp-level = <0>; }; }; }; pdp_B: power-domain-provider@bbbbbbb { [...] opp-table { pdp_B_opp0: opp-0 { opp-level = <0>; }; }; }; nice-device@ccccccc { [...] power-domains = <&pdp_A>, <&pdp_B>; // order doesn't match /\ required-opps = <&pdp_B_opp0>, <&pdp_A_opp0>; }; ? Konrad
On Sat, 22 Jun 2024 at 14:18, Konrad Dybcio <konrad.dybcio@linaro.org> wrote: > > On 19.06.2024 4:08 PM, Ulf Hansson wrote: > > Through dev_pm_opp_set_config() the _opp_attach_genpd() allows consumer > > drivers to hook up a device to its PM domains. This works for both a single > > and multiple PM domains. Their corresponding virtual devices that are > > created by genpd during attach, are later being assigned as the > > required_devs for the corresponding required OPPs. > > > > In principle this works fine, but there are some problems. Especially as > > the index for a "required-opps" may not necessarily need to match the index > > for the "power-domain" in DT, in which case things gets screwed up. > > So, is this series essentially tackling a problem like this: > > pdp_A: power-domain-provider@aaaaaa { > [...] > > opp-table { > pdp_A_opp0: opp-0 { > opp-level = <0>; > }; > }; > }; > > pdp_B: power-domain-provider@bbbbbbb { > [...] > > opp-table { > pdp_B_opp0: opp-0 { > opp-level = <0>; > }; > }; > }; > > nice-device@ccccccc { > [...] > > power-domains = <&pdp_A>, > <&pdp_B>; > // order doesn't match /\ > required-opps = <&pdp_B_opp0>, > <&pdp_A_opp0>; > }; > > > ? > Correct, this should be taken care off by $subject series. Kind regards Uffe