From 3bce742da88bae0fc0045fed57999e155328bbdb Mon Sep 17 00:00:00 2001 From: Sneh Mankad Date: Fri, 27 Dec 2024 15:35:22 +0530 Subject: [PATCH] ARM: dts: qcom: Add LPM devices for sdxkova Add idle states for CPU and CPU clusters, add PSCI device to enable CPU to enter LPMs. Additionally, update APPS RSC device to be in cluster power domain to handle RSC activites when cluster is powering off. Change-Id: Ibe2fa720bc5e81084d380b2e5dc4f8fa8910566c Signed-off-by: Sneh Mankad --- qcom/sdxkova.dtsi | 110 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/qcom/sdxkova.dtsi b/qcom/sdxkova.dtsi index 1d3434d0..5130ff86 100644 --- a/qcom/sdxkova.dtsi +++ b/qcom/sdxkova.dtsi @@ -42,6 +42,24 @@ ; }; + cpus { + CPU0: cpu@0 { + cpu-idle-states = <&SILVER_OFF &SILVER_RAIL_OFF>; + }; + + CPU1: cpu@100 { + cpu-idle-states = <&SILVER_OFF &SILVER_RAIL_OFF>; + }; + + CPU2: cpu@200 { + cpu-idle-states = <&SILVER_OFF &SILVER_RAIL_OFF>; + }; + + CPU3: cpu@300 { + cpu-idle-states = <&SILVER_OFF &SILVER_RAIL_OFF>; + }; + }; + /delete-node/ reserved-memory; reserved_memory: reserved-memory { @@ -76,7 +94,93 @@ }; + /delete-node/ idle-states; + + idle-states { + entry-method = "psci"; + + SILVER_OFF: silver-c3 { /* C3 */ + compatible = "arm,idle-state"; + idle-state-name = "pc"; + entry-latency-us = <235>; + exit-latency-us = <428>; + min-residency-us = <1774>; + arm,psci-suspend-param = <0x40000003>; + local-timer-stop; + }; + + SILVER_RAIL_OFF: silver-c4 { /* C4 */ + compatible = "arm,idle-state"; + idle-state-name = "rail-pc"; + entry-latency-us = <800>; + exit-latency-us = <750>; + min-residency-us = <4090>; + arm,psci-suspend-param = <0x40000004>; + local-timer-stop; + }; + + CLUSTER_PWR_DN: cluster-d4 { /* D4 */ + compatible = "domain-idle-state"; + idle-state-name = "l3-off"; + entry-latency-us = <1050>; + exit-latency-us = <2500>; + min-residency-us = <5309>; + arm,psci-suspend-param = <0x41000044>; + }; + + CX_RET: cx-ret { /* Cx Ret */ + compatible = "domain-idle-state"; + idle-state-name = "cx-ret"; + entry-latency-us = <2761>; + exit-latency-us = <3964>; + min-residency-us = <8467>; + arm,psci-suspend-param = <0x41001344>; + }; + + APSS_OFF: cluster-e3 { /* E3 */ + compatible = "domain-idle-state"; + idle-state-name = "llcc-off"; + entry-latency-us = <2793>; + exit-latency-us = <4023>; + min-residency-us = <9826>; + arm,psci-suspend-param = <0x4100B344>; + }; + }; + + /delete-node/ psci; + soc: soc { + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + + CPU_PD0: cpu-pd0 { + #power-domain-cells = <0>; + power-domains = <&CLUSTER_PD>; + }; + + CPU_PD1: cpu-pd1 { + #power-domain-cells = <0>; + power-domains = <&CLUSTER_PD>; + }; + + CPU_PD2: cpu-pd2 { + #power-domain-cells = <0>; + power-domains = <&CLUSTER_PD>; + }; + + CPU_PD3: cpu-pd3 { + #power-domain-cells = <0>; + power-domains = <&CLUSTER_PD>; + }; + + CLUSTER_PD: cluster-pd { + #power-domain-cells = <0>; + domain-idle-states = <&CLUSTER_PWR_DN &CX_RET &APSS_OFF>; + }; + }; + /delete-node/ rsc@17a00000; apps_rsc: rsc@17a00000 { @@ -90,6 +194,7 @@ interrupts = , , ; + power-domains = <&CLUSTER_PD>; apps_rsc_drv2: drv@2 { qcom,drv-id = <2>; @@ -166,6 +271,11 @@ }; }; }; + + cluster-device { + compatible = "qcom,lpm-cluster-dev"; + power-domains = <&CLUSTER_PD>; + }; }; firmware: firmware { };