arm64: dts: qcom: x1e80100: add system power domain SS3 state
PATCH 1/1 arm64: dts: qcom: x1e80100: add system power domain SS3 state
Add the same PSCI state as seen on other Oryon-based SoCs like SM8750 and Glymur, seems to work fine on Hamoa as well.
---
Tested on a Dell Latitude 7455:
/sys/kernel/debug/pm_genpd/power-domain-system/idle_states:
State Time Spent(ms) Usage Rejected Above Below S0 69476 23006 195 21562 0
Seems to mostly be used in system suspend, though I've occasionally seen the counter increment a little bit during runtime as well.
--- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/qcom/x1e80100.dtsi +9 -1
@@ -303,6 +303,14 @@ cluster_cl5: cluster-sleep-1 { exit-latency-us = <4000>; min-residency-us = <7000>; }; + + domain_ss3: domain-sleep-0 { + compatible = "domain-idle-state"; + arm,psci-suspend-param = <0x0200c354>; + entry-latency-us = <2800>; + exit-latency-us = <4400>; + min-residency-us = <10150>; + }; }; };
@@ -449,7 +457,7 @@ cluster_pd2: power-domain-cpu-cluster2 { system_pd: power-domain-system { #power-domain-cells = <0>; - /* TODO: system-wide idle states */ + domain-idle-states = <&domain_ss3>; }; };
Signature · 1 line
2.51.0
Quoted 7 lines · Val Packett
Add the same PSCI state as seen on other Oryon-based SoCs like SM8750 and Glymur, seems to work fine on Hamoa as well.
Signed-off-by Val Packett <[email protected]>---
Tested on a Dell Latitude 7455:
Quoted 7 lines
/sys/kernel/debug/pm_genpd/power-domain-system/idle_states:State Time Spent(ms) Usage Rejected Above Below S0 69476 23006 195 21562 0Seems to mostly be used in system suspend, though I've occasionally seen the counter increment a little bit during runtime as well.
---
FWIW the exact same state is hardcoded to be present if you use PSCI_SYSTEM_SUSPEND (which is mapped to deep in /sys/power/mem_sleep)
Quoted 8 lines
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)arch/arm64/boot/dts/qcom/x1e80100.dtsi +0
-0
arch/arm64/boot/dts/qcom/x1e80100.dtsi cluster_cl5: cluster-sleep-1 { · line 312
Quoted 10 lines
arch/arm64/boot/dts/qcom/x1e80100.dtsi +7
-0@@ -303,6 +303,14 @@ cluster_cl5: cluster-sleep-1 { exit-latency-us = <4000>; min-residency-us = <7000>; }; + + domain_ss3: domain-sleep-0 { + compatible = "domain-idle-state"; + arm,psci-suspend-param = <0x0200c354>; + entry-latency-us = <2800>; + exit-latency-us = <4400>; + min-residency-us = <10150>;
You seem to have copied these time numbers from 8750 as well, but it's not a great idea, since they're tuned for getting a good perf/pwr profile for a mobile phone
I attached an old patch I had laying around that described all three states exposed in the windows DSDT (although I'm not sure if that's exactly beneficial without additional tuning too)
+Mukesh please take a look
Konrad
From df74e0e5f669b136a08f758651771423b8be9c61 Mon Sep 17 00:00:00 2001
From: Konrad Dybcio <[email protected]>
Date: Mon, 15 Jul 2024 16:16:41 +0200
Subject: [PATCH] arm64: dts: qcom: x1e80100: Add system sleep states
Add the missing system-wide sleep states based on the information found in the DSDT.
DRIPS is a non-obvious name, but it's the state that the device enters for Modern Standby on Windows (see [1], [2]).
The entry latency numbers (which were not provided anywhere) could use some tuning, for starters I set them equal to exit latency, which is not an entirely unreasonable estimate..
[1] https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/prepare-hardware-for-modern-standby
[2] https://dl.dell.com/manuals/all-products/esuprt_solutions_int/esuprt_solutions_int_solutions_resources/client-mobile-solution-resources_white-papers45_en-us.pdf
--- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 31 +++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/qcom/x1e80100.dtsi +30 -1
@@ -302,6 +302,33 @@ CLUSTER_CL5: cluster-sleep-1 { exit-latency-us = <2500>; min-residency-us = <7000>; }; + + SYSTEM_SLEEP0: system-sleep-0 { + compatible = "domain-idle-state"; + idle-state-name = "system-sleep0"; + arm,psci-suspend-param = <0x02000154>; + entry-latency-us = <500>; + exit-latency-us = <500>; + min-residency-us = <7500>; + }; + + SYSTEM_SLEEP1: system-sleep-1 { + compatible = "domain-idle-state"; + idle-state-name = "system-sleep1"; + arm,psci-suspend-param = <0x02000254>; + entry-latency-us = <3000>; + exit-latency-us = <3000>; + min-residency-us = <8000>; + }; + + SYSTEM_DRIPS: system-sleep-2 { + compatible = "domain-idle-state"; + idle-state-name = "drips"; + arm,psci-suspend-param = <0x0200c354>; + entry-latency-us = <5000>; + exit-latency-us = <5000>; + min-residency-us = <9000>; + }; }; };
@@ -435,7 +462,9 @@ CLUSTER_PD2: power-domain-cpu-cluster2 { SYSTEM_PD: power-domain-system { #power-domain-cells = <0>; - /* TODO: system-wide idle states */ + domain-idle-states = <&SYSTEM_SLEEP0>, + <&SYSTEM_SLEEP1>, + <&SYSTEM_DRIPS>; }; };
Signature · 1 line
2.51.0
Quoted 42 lines · Konrad Dybcio
Quoted 7 lines · Val Packett
Add the same PSCI state as seen on other Oryon-based SoCs like SM8750 and Glymur, seems to work fine on Hamoa as well.
Signed-off-by Val Packett <[email protected]>---
Tested on a Dell Latitude 7455:Quoted 7 lines
/sys/kernel/debug/pm_genpd/power-domain-system/idle_states:State Time Spent(ms) Usage Rejected Above Below S0 69476 23006 195 21562 0Seems to mostly be used in system suspend, though I've occasionally seen the counter increment a little bit during runtime as well.
---FWIW the exact same state is hardcoded to be present if you use
PSCI_SYSTEM_SUSPEND(which is mapped todeepin/sys/power/mem_sleep)Quoted 8 lines
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)arch/arm64/boot/dts/qcom/x1e80100.dtsi +0
-0arch/arm64/boot/dts/qcom/x1e80100.dtsi cluster_cl5: cluster-sleep-1 { · line 312
Quoted 10 lines
arch/arm64/boot/dts/qcom/x1e80100.dtsi +7
-0@@ -303,6 +303,14 @@ cluster_cl5: cluster-sleep-1 { exit-latency-us = <4000>; min-residency-us = <7000>; }; + + domain_ss3: domain-sleep-0 { + compatible = "domain-idle-state"; + arm,psci-suspend-param = <0x0200c354>; + entry-latency-us = <2800>; + exit-latency-us = <4400>; + min-residency-us = <10150>;You seem to have copied these time numbers from 8750 as well, but it's not a great idea, since they're tuned for getting a good perf/pwr profile for a mobile phone
Quoted 5 lines
I attached an old patch I had laying around that described all three states exposed in the windows DSDT (although I'm not sure if that's exactly beneficial without additional tuning too)
+Mukesh please take a look
Well, I of course meant +Maulik, sorry..
Konrad