arm64: dts: qcom: sm6115: Fix up cluster idle states

Message ID 20230613-topic-6115idlestates-v1-1-fa017052319d@linaro.org
State New
Headers
Series arm64: dts: qcom: sm6115: Fix up cluster idle states |

Commit Message

Konrad Dybcio June 13, 2023, 7:13 p.m. UTC
  The lowest nibble of the PSCI suspend param denotes the CPU state.
It was mistakenly set to mimic the cluster state, resulting in poking
PSCI with undocumented 0x2 and 0x4 states (both of which seem to be
implemented and undocumented). Also, GDHS cluster param was wrong for C1.

Fix that.

Fixes: b5de1a9ff1f2 ("arm64: dts: qcom: sm6115: Add CPU idle-states")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm6115.dtsi | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)


---
base-commit: 1f6ce8392d6ff486af5ca96df9ded5882c4b6977
change-id: 20230613-topic-6115idlestates-ba341792ebb2

Best regards,
  

Comments

Stephan Gerhold June 13, 2023, 7:31 p.m. UTC | #1
On Tue, Jun 13, 2023 at 09:13:47PM +0200, Konrad Dybcio wrote:
> The lowest nibble of the PSCI suspend param denotes the CPU state.
> It was mistakenly set to mimic the cluster state, resulting in poking
> PSCI with undocumented 0x2 and 0x4 states (both of which seem to be
> implemented and undocumented). Also, GDHS cluster param was wrong for C1.
> 
> Fix that.
> 
> Fixes: b5de1a9ff1f2 ("arm64: dts: qcom: sm6115: Add CPU idle-states")
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/sm6115.dtsi | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
> index 55118577bf92..07d8b842d7be 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
> @@ -225,7 +225,7 @@ domain-idle-states {
>  			CLUSTER_0_SLEEP_0: cluster-sleep-0-0 {
>  				/* GDHS */
>  				compatible = "domain-idle-state";
> -				arm,psci-suspend-param = <0x40000022>;
> +				arm,psci-suspend-param = <0x40000023>;

I think entering GDHS is also "Core is last in power level" "1=Cluster"
so (1 << 24) should be set here as well (i.e. 0x41...).

Otherwise the fixes look good, thanks for taking a look!

Thanks,
Stephan
  

Patch

diff --git a/arch/arm64/boot/dts/qcom/sm6115.dtsi b/arch/arm64/boot/dts/qcom/sm6115.dtsi
index 55118577bf92..07d8b842d7be 100644
--- a/arch/arm64/boot/dts/qcom/sm6115.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6115.dtsi
@@ -225,7 +225,7 @@  domain-idle-states {
 			CLUSTER_0_SLEEP_0: cluster-sleep-0-0 {
 				/* GDHS */
 				compatible = "domain-idle-state";
-				arm,psci-suspend-param = <0x40000022>;
+				arm,psci-suspend-param = <0x40000023>;
 				entry-latency-us = <360>;
 				exit-latency-us = <421>;
 				min-residency-us = <782>;
@@ -234,7 +234,7 @@  CLUSTER_0_SLEEP_0: cluster-sleep-0-0 {
 			CLUSTER_0_SLEEP_1: cluster-sleep-0-1 {
 				/* Power Collapse */
 				compatible = "domain-idle-state";
-				arm,psci-suspend-param = <0x41000044>;
+				arm,psci-suspend-param = <0x41000043>;
 				entry-latency-us = <800>;
 				exit-latency-us = <2118>;
 				min-residency-us = <7376>;
@@ -243,7 +243,7 @@  CLUSTER_0_SLEEP_1: cluster-sleep-0-1 {
 			CLUSTER_1_SLEEP_0: cluster-sleep-1-0 {
 				/* GDHS */
 				compatible = "domain-idle-state";
-				arm,psci-suspend-param = <0x40000042>;
+				arm,psci-suspend-param = <0x40000023>;
 				entry-latency-us = <314>;
 				exit-latency-us = <345>;
 				min-residency-us = <660>;
@@ -252,7 +252,7 @@  CLUSTER_1_SLEEP_0: cluster-sleep-1-0 {
 			CLUSTER_1_SLEEP_1: cluster-sleep-1-1 {
 				/* Power Collapse */
 				compatible = "domain-idle-state";
-				arm,psci-suspend-param = <0x41000044>;
+				arm,psci-suspend-param = <0x41000043>;
 				entry-latency-us = <640>;
 				exit-latency-us = <1654>;
 				min-residency-us = <8094>;