arm64: dts: qcom: apq8016-sbc: Fix regulator constraints
authorStephan Gerhold <stephan@gerhold.net>
Wed, 17 May 2023 18:48:40 +0000 (20:48 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 25 May 2023 04:50:47 +0000 (21:50 -0700)
For some reason DB410c has completely bogus regulator constraints that
actually just correspond to the programmable voltages which are already
provided by the regulator driver. Some of them are not just outside the
recommended operating conditions of the APQ8016E SoC but even exceed
the absolute maximum ratings, potentially risking permanent device
damage.

In practice it's not quite as dangerous thanks to the RPM firmware:
It turns out that it has its own voltage constraints and silently
clamps all regulator requests. For example, requesting 3.3V for L5
(allowed by the current regulator constraints!) still results in 1.8V
being programmed in the actual regulator hardware.

Experimentation with various voltages shows that the internal RPM
voltage constraints roughly correspond to the safe "specified range"
in the PM8916 Device Specification (rather than the "programmable
range" used inside apq8016-sbc.dtsi right now).

Combine those together with some fixed voltages used in the old
msm-3.10 device tree from Qualcomm to give DB410c some actually valid
voltage constraints.

Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Fixes: 4c7d53d16d77 ("arm64: dts: apq8016-sbc: add regulators support")
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230510-msm8916-regulators-v1-1-54d4960a05fc@gerhold.net
arch/arm64/boot/dts/qcom/apq8016-sbc.dts

index 59860a2223b83950cca71e23e58d10cf2d23a904..14cb217a13c1ea58a3a36daa60f7148f5d450f9d 100644 (file)
        vdd_l7-supply = <&pm8916_s4>;
 
        s3 {
-               regulator-min-microvolt = <375000>;
-               regulator-max-microvolt = <1562000>;
+               regulator-min-microvolt = <1250000>;
+               regulator-max-microvolt = <1350000>;
        };
 
        s4 {
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1850000>;
+               regulator-max-microvolt = <2150000>;
 
                regulator-always-on;
                regulator-boot-on;
        };
 
        l1 {
-               regulator-min-microvolt = <375000>;
-               regulator-max-microvolt = <1525000>;
+               regulator-min-microvolt = <1225000>;
+               regulator-max-microvolt = <1225000>;
        };
 
        l2 {
        };
 
        l4 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <2050000>;
+               regulator-max-microvolt = <2050000>;
        };
 
        l5 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
        };
 
        l6 {
        };
 
        l7 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
        };
 
        l8 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
        };
 
        l9 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
        };
 
        l10 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
        };
 
        l11 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <2950000>;
+               regulator-max-microvolt = <2950000>;
                regulator-allow-set-load;
                regulator-system-load = <200000>;
        };
 
        l12 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
        };
 
        l13 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <3075000>;
+               regulator-max-microvolt = <3075000>;
        };
 
        l14 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
        };
 
        /**
         * for mezzanine boards
         */
        l15 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
                regulator-always-on;
        };
 
        l16 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
        };
 
        l17 {
        };
 
        l18 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2700000>;
        };
 };