Message ID | 20220825094155.2.I430a56702ab0af65244e62667bb7743107de0c96@changeid |
---|---|
State | New |
Headers | show |
Series | arm64: dts: qcom: Fix broken regulator spec on RPMH boards | expand |
On Thu, Aug 25, 2022 at 09:42:00AM -0700, Douglas Anderson wrote: > This board uses RPMH, specifies "regulator-allow-set-load" for LDOs, > but doesn't specify any modes with "regulator-allowed-modes". > > Prior to commit efb0cb50c427 ("regulator: qcom-rpmh: Implement > get_optimum_mode(), not set_load()") the above meant that we were able > to set either LPM or HPM mode. After that commit (and fixes [1]) we'll > be stuck at the initial mode. Discussion of this has resulted in the > decision that the old dts files were wrong and should be fixed to > fully restore old functionality. > > Let's re-enable the old functionality by fixing the dts. > > [1] https://lore.kernel.org/r/20220824142229.RFT.v2.2.I6f77860e5cd98bf5c67208fa9edda4a08847c304@changeid > > Fixes: 519183af39b2 ("arm64: dts: qcom: add SA8540P and ADP") > Signed-off-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Andrew Halaney <ahalaney@redhat.com> > --- > > arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 45 ++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > index 9398f0349944..6d05cb54e32f 100644 > --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > @@ -36,6 +36,9 @@ vreg_l3a: ldo3 { > regulator-max-microvolt = <1208000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l5a: ldo5 { > @@ -44,6 +47,9 @@ vreg_l5a: ldo5 { > regulator-max-microvolt = <912000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7a: ldo7 { > @@ -52,6 +58,9 @@ vreg_l7a: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l13a: ldo13 { > @@ -60,6 +69,9 @@ vreg_l13a: ldo13 { > regulator-max-microvolt = <3072000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > > @@ -73,6 +85,9 @@ vreg_l1c: ldo1 { > regulator-max-microvolt = <912000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l2c: ldo2 { > @@ -81,6 +96,9 @@ vreg_l2c: ldo2 { > regulator-max-microvolt = <3072000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l3c: ldo3 { > @@ -89,6 +107,9 @@ vreg_l3c: ldo3 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l4c: ldo4 { > @@ -97,6 +118,9 @@ vreg_l4c: ldo4 { > regulator-max-microvolt = <1208000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l6c: ldo6 { > @@ -105,6 +129,9 @@ vreg_l6c: ldo6 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7c: ldo7 { > @@ -113,6 +140,9 @@ vreg_l7c: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l10c: ldo10 { > @@ -121,6 +151,9 @@ vreg_l10c: ldo10 { > regulator-max-microvolt = <2504000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l17c: ldo17 { > @@ -129,6 +162,9 @@ vreg_l17c: ldo17 { > regulator-max-microvolt = <2504000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > > @@ -142,6 +178,9 @@ vreg_l3g: ldo3 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7g: ldo7 { > @@ -150,6 +189,9 @@ vreg_l7g: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l8g: ldo8 { > @@ -158,6 +200,9 @@ vreg_l8g: ldo8 { > regulator-max-microvolt = <880000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > }; > -- > 2.37.2.672.g94769d06f0-goog >
On 25.08.2022 18:42, Douglas Anderson wrote: > This board uses RPMH, specifies "regulator-allow-set-load" for LDOs, > but doesn't specify any modes with "regulator-allowed-modes". > > Prior to commit efb0cb50c427 ("regulator: qcom-rpmh: Implement > get_optimum_mode(), not set_load()") the above meant that we were able > to set either LPM or HPM mode. After that commit (and fixes [1]) we'll > be stuck at the initial mode. Discussion of this has resulted in the > decision that the old dts files were wrong and should be fixed to > fully restore old functionality. > > Let's re-enable the old functionality by fixing the dts. > > [1] https://lore.kernel.org/r/20220824142229.RFT.v2.2.I6f77860e5cd98bf5c67208fa9edda4a08847c304@changeid > > Fixes: 519183af39b2 ("arm64: dts: qcom: add SA8540P and ADP") > Signed-off-by: Douglas Anderson <dianders@chromium.org> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@somainline.org> Konrad > > arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 45 ++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > index 9398f0349944..6d05cb54e32f 100644 > --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > @@ -36,6 +36,9 @@ vreg_l3a: ldo3 { > regulator-max-microvolt = <1208000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l5a: ldo5 { > @@ -44,6 +47,9 @@ vreg_l5a: ldo5 { > regulator-max-microvolt = <912000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7a: ldo7 { > @@ -52,6 +58,9 @@ vreg_l7a: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l13a: ldo13 { > @@ -60,6 +69,9 @@ vreg_l13a: ldo13 { > regulator-max-microvolt = <3072000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > > @@ -73,6 +85,9 @@ vreg_l1c: ldo1 { > regulator-max-microvolt = <912000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l2c: ldo2 { > @@ -81,6 +96,9 @@ vreg_l2c: ldo2 { > regulator-max-microvolt = <3072000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l3c: ldo3 { > @@ -89,6 +107,9 @@ vreg_l3c: ldo3 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l4c: ldo4 { > @@ -97,6 +118,9 @@ vreg_l4c: ldo4 { > regulator-max-microvolt = <1208000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l6c: ldo6 { > @@ -105,6 +129,9 @@ vreg_l6c: ldo6 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7c: ldo7 { > @@ -113,6 +140,9 @@ vreg_l7c: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l10c: ldo10 { > @@ -121,6 +151,9 @@ vreg_l10c: ldo10 { > regulator-max-microvolt = <2504000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l17c: ldo17 { > @@ -129,6 +162,9 @@ vreg_l17c: ldo17 { > regulator-max-microvolt = <2504000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > > @@ -142,6 +178,9 @@ vreg_l3g: ldo3 { > regulator-max-microvolt = <1200000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l7g: ldo7 { > @@ -150,6 +189,9 @@ vreg_l7g: ldo7 { > regulator-max-microvolt = <1800000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > > vreg_l8g: ldo8 { > @@ -158,6 +200,9 @@ vreg_l8g: ldo8 { > regulator-max-microvolt = <880000>; > regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > regulator-allow-set-load; > + regulator-allowed-modes = > + <RPMH_REGULATOR_MODE_LPM > + RPMH_REGULATOR_MODE_HPM>; > }; > }; > };
diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts index 9398f0349944..6d05cb54e32f 100644 --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts @@ -36,6 +36,9 @@ vreg_l3a: ldo3 { regulator-max-microvolt = <1208000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l5a: ldo5 { @@ -44,6 +47,9 @@ vreg_l5a: ldo5 { regulator-max-microvolt = <912000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l7a: ldo7 { @@ -52,6 +58,9 @@ vreg_l7a: ldo7 { regulator-max-microvolt = <1800000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l13a: ldo13 { @@ -60,6 +69,9 @@ vreg_l13a: ldo13 { regulator-max-microvolt = <3072000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; }; @@ -73,6 +85,9 @@ vreg_l1c: ldo1 { regulator-max-microvolt = <912000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l2c: ldo2 { @@ -81,6 +96,9 @@ vreg_l2c: ldo2 { regulator-max-microvolt = <3072000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l3c: ldo3 { @@ -89,6 +107,9 @@ vreg_l3c: ldo3 { regulator-max-microvolt = <1200000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l4c: ldo4 { @@ -97,6 +118,9 @@ vreg_l4c: ldo4 { regulator-max-microvolt = <1208000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l6c: ldo6 { @@ -105,6 +129,9 @@ vreg_l6c: ldo6 { regulator-max-microvolt = <1200000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l7c: ldo7 { @@ -113,6 +140,9 @@ vreg_l7c: ldo7 { regulator-max-microvolt = <1800000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l10c: ldo10 { @@ -121,6 +151,9 @@ vreg_l10c: ldo10 { regulator-max-microvolt = <2504000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l17c: ldo17 { @@ -129,6 +162,9 @@ vreg_l17c: ldo17 { regulator-max-microvolt = <2504000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; }; @@ -142,6 +178,9 @@ vreg_l3g: ldo3 { regulator-max-microvolt = <1200000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l7g: ldo7 { @@ -150,6 +189,9 @@ vreg_l7g: ldo7 { regulator-max-microvolt = <1800000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; vreg_l8g: ldo8 { @@ -158,6 +200,9 @@ vreg_l8g: ldo8 { regulator-max-microvolt = <880000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; regulator-allow-set-load; + regulator-allowed-modes = + <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; }; }; };
This board uses RPMH, specifies "regulator-allow-set-load" for LDOs, but doesn't specify any modes with "regulator-allowed-modes". Prior to commit efb0cb50c427 ("regulator: qcom-rpmh: Implement get_optimum_mode(), not set_load()") the above meant that we were able to set either LPM or HPM mode. After that commit (and fixes [1]) we'll be stuck at the initial mode. Discussion of this has resulted in the decision that the old dts files were wrong and should be fixed to fully restore old functionality. Let's re-enable the old functionality by fixing the dts. [1] https://lore.kernel.org/r/20220824142229.RFT.v2.2.I6f77860e5cd98bf5c67208fa9edda4a08847c304@changeid Fixes: 519183af39b2 ("arm64: dts: qcom: add SA8540P and ADP") Signed-off-by: Douglas Anderson <dianders@chromium.org> --- arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+)