diff mbox series

[v2] arm64: dts: apq8096-db820c: Fix VDD core voltage

Message ID 1578401755-26211-1-git-send-email-loic.poulain@linaro.org (mailing list archive)
State New, archived
Headers show
Series [v2] arm64: dts: apq8096-db820c: Fix VDD core voltage | expand

Commit Message

Loic Poulain Jan. 7, 2020, 12:55 p.m. UTC
APQ8096 has its VDD APC (Power for quad Kryo applications
microprocessors) powered by PM8996 PMIC S9, S10, S11 tri-phase
regulators (gang). The bootloader may have configured these
regulators with non sustainable default values, leading to sporadic
hangs under CPU stress tests (cpufreq-bench). Ideally we should enable
voltage scaling along with frequency scaling, but for now just set the
regulator gang value to a sane voltage, capable of supporting highest
frequencies (turbo).

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
---
 v2: Move pm8994_spmi_regulators node to pm8994 dtsi
     Move syscon to msm8996 dtsi
     lower case for addresses

 arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 16 ++++++++++++++++
 arch/arm64/boot/dts/qcom/msm8996.dtsi        |  5 +++++
 arch/arm64/boot/dts/qcom/pm8994.dtsi         |  4 ++++
 3 files changed, 25 insertions(+)

Comments

Bjorn Andersson Jan. 7, 2020, 11:55 p.m. UTC | #1
On Tue 07 Jan 04:55 PST 2020, Loic Poulain wrote:

> APQ8096 has its VDD APC (Power for quad Kryo applications
> microprocessors) powered by PM8996 PMIC S9, S10, S11 tri-phase
> regulators (gang). The bootloader may have configured these
> regulators with non sustainable default values, leading to sporadic
> hangs under CPU stress tests (cpufreq-bench). Ideally we should enable
> voltage scaling along with frequency scaling, but for now just set the
> regulator gang value to a sane voltage, capable of supporting highest
> frequencies (turbo).
> 
> Signed-off-by: Loic Poulain <loic.poulain@linaro.org>

Thanks for the update Loic, this looks good, so I've picked it up for
5.6

Regards,
Bjorn

> ---
>  v2: Move pm8994_spmi_regulators node to pm8994 dtsi
>      Move syscon to msm8996 dtsi
>      lower case for addresses
> 
>  arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 16 ++++++++++++++++
>  arch/arm64/boot/dts/qcom/msm8996.dtsi        |  5 +++++
>  arch/arm64/boot/dts/qcom/pm8994.dtsi         |  4 ++++
>  3 files changed, 25 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> index dba3488..89c7b19 100644
> --- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> @@ -669,6 +669,22 @@
>  	};
>  };
>  
> +&pm8994_spmi_regulators {
> +	qcom,saw-reg = <&saw3>;
> +	s9 {
> +		qcom,saw-slave;
> +	};
> +	s10 {
> +		qcom,saw-slave;
> +	};
> +	s11 {
> +		qcom,saw-leader;
> +		regulator-always-on;
> +		regulator-min-microvolt = <1230000>;
> +		regulator-max-microvolt = <1230000>;
> +	};
> +};
> +
>  &spmi_bus {
>  	pmic@0 {
>  		pon@800 {
> diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> index 4ca2e7b..715f26e 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> @@ -611,6 +611,11 @@
>  			reg = <0x7a0000 0x18000>;
>  		};
>  
> +		saw3: syscon@9a10000 {
> +			compatible = "syscon";
> +			reg = <0x09a10000 0x1000>;
> +		};
> +
>  		intc: interrupt-controller@9bc0000 {
>  			compatible = "qcom,msm8996-gic-v3", "arm,gic-v3";
>  			#interrupt-cells = <3>;
> diff --git a/arch/arm64/boot/dts/qcom/pm8994.dtsi b/arch/arm64/boot/dts/qcom/pm8994.dtsi
> index 76b5a3e..7e4f777 100644
> --- a/arch/arm64/boot/dts/qcom/pm8994.dtsi
> +++ b/arch/arm64/boot/dts/qcom/pm8994.dtsi
> @@ -85,5 +85,9 @@
>  		reg = <0x1 SPMI_USID>;
>  		#address-cells = <1>;
>  		#size-cells = <0>;
> +
> +		pm8994_spmi_regulators: regulators {
> +			compatible = "qcom,pm8994-regulators";
> +		};
>  	};
>  };
> -- 
> 2.7.4
>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
index dba3488..89c7b19 100644
--- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
@@ -669,6 +669,22 @@ 
 	};
 };
 
+&pm8994_spmi_regulators {
+	qcom,saw-reg = <&saw3>;
+	s9 {
+		qcom,saw-slave;
+	};
+	s10 {
+		qcom,saw-slave;
+	};
+	s11 {
+		qcom,saw-leader;
+		regulator-always-on;
+		regulator-min-microvolt = <1230000>;
+		regulator-max-microvolt = <1230000>;
+	};
+};
+
 &spmi_bus {
 	pmic@0 {
 		pon@800 {
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 4ca2e7b..715f26e 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -611,6 +611,11 @@ 
 			reg = <0x7a0000 0x18000>;
 		};
 
+		saw3: syscon@9a10000 {
+			compatible = "syscon";
+			reg = <0x09a10000 0x1000>;
+		};
+
 		intc: interrupt-controller@9bc0000 {
 			compatible = "qcom,msm8996-gic-v3", "arm,gic-v3";
 			#interrupt-cells = <3>;
diff --git a/arch/arm64/boot/dts/qcom/pm8994.dtsi b/arch/arm64/boot/dts/qcom/pm8994.dtsi
index 76b5a3e..7e4f777 100644
--- a/arch/arm64/boot/dts/qcom/pm8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8994.dtsi
@@ -85,5 +85,9 @@ 
 		reg = <0x1 SPMI_USID>;
 		#address-cells = <1>;
 		#size-cells = <0>;
+
+		pm8994_spmi_regulators: regulators {
+			compatible = "qcom,pm8994-regulators";
+		};
 	};
 };