Commit 30fec826 authored by Leo Yan's avatar Leo Yan Committed by Wei Xu

arm64: dts: hi3660: enable idle states

There are two clusters on the Hi3660, the first one is Cortex-A53 based
and the other one is Cortex-A73 based. These two clusters have different
idle states.

Thanks to Daniel Lezcano's recent changes, the generic ARM cpuidle
driver can now support several clusters with different idle states, thus
supporting the big.Little architecture.

In addition to the WFI idle state which is the default shallowest state
for all ARM cpus, the Hi3660 supports the following states:

 - CA53 CPUs:
        - CPU_SLEEP:       CPU power off state
        - CLUSTER_SLEEP_0: Cluster power off state

 - CA73 CPUs:
        - CPU_NAP:         CPU retention state
        - CPU_SLEEP:       CPU power off state
        - CLUSTER_SLEEP_1: Cluster power off state

This patch adds the idle states description for the Hi3660 to the device
tree.

Cc: Kevin Wang <jean.wangtao@linaro.org>
Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: default avatarWei Xu <xuwei5@hisilicon.com>
parent 341b26b7
...@@ -58,6 +58,7 @@ cpu0: cpu@0 { ...@@ -58,6 +58,7 @@ cpu0: cpu@0 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x0>; reg = <0x0 0x0>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP_0>;
}; };
cpu1: cpu@1 { cpu1: cpu@1 {
...@@ -65,6 +66,7 @@ cpu1: cpu@1 { ...@@ -65,6 +66,7 @@ cpu1: cpu@1 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x1>; reg = <0x0 0x1>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP_0>;
}; };
cpu2: cpu@2 { cpu2: cpu@2 {
...@@ -72,6 +74,7 @@ cpu2: cpu@2 { ...@@ -72,6 +74,7 @@ cpu2: cpu@2 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x2>; reg = <0x0 0x2>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP_0>;
}; };
cpu3: cpu@3 { cpu3: cpu@3 {
...@@ -79,6 +82,7 @@ cpu3: cpu@3 { ...@@ -79,6 +82,7 @@ cpu3: cpu@3 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x3>; reg = <0x0 0x3>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP_0>;
}; };
cpu4: cpu@100 { cpu4: cpu@100 {
...@@ -86,6 +90,11 @@ cpu4: cpu@100 { ...@@ -86,6 +90,11 @@ cpu4: cpu@100 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x100>; reg = <0x0 0x100>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <
&CPU_NAP
&CPU_SLEEP
&CLUSTER_SLEEP_1
>;
}; };
cpu5: cpu@101 { cpu5: cpu@101 {
...@@ -93,6 +102,11 @@ cpu5: cpu@101 { ...@@ -93,6 +102,11 @@ cpu5: cpu@101 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x101>; reg = <0x0 0x101>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <
&CPU_NAP
&CPU_SLEEP
&CLUSTER_SLEEP_1
>;
}; };
cpu6: cpu@102 { cpu6: cpu@102 {
...@@ -100,6 +114,11 @@ cpu6: cpu@102 { ...@@ -100,6 +114,11 @@ cpu6: cpu@102 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x102>; reg = <0x0 0x102>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <
&CPU_NAP
&CPU_SLEEP
&CLUSTER_SLEEP_1
>;
}; };
cpu7: cpu@103 { cpu7: cpu@103 {
...@@ -107,6 +126,50 @@ cpu7: cpu@103 { ...@@ -107,6 +126,50 @@ cpu7: cpu@103 {
device_type = "cpu"; device_type = "cpu";
reg = <0x0 0x103>; reg = <0x0 0x103>;
enable-method = "psci"; enable-method = "psci";
cpu-idle-states = <
&CPU_NAP
&CPU_SLEEP
&CLUSTER_SLEEP_1
>;
};
idle-states {
entry-method = "psci";
CPU_NAP: cpu-nap {
compatible = "arm,idle-state";
arm,psci-suspend-param = <0x0000001>;
entry-latency-us = <7>;
exit-latency-us = <2>;
min-residency-us = <15>;
};
CPU_SLEEP: cpu-sleep {
compatible = "arm,idle-state";
local-timer-stop;
arm,psci-suspend-param = <0x0010000>;
entry-latency-us = <40>;
exit-latency-us = <70>;
min-residency-us = <3000>;
};
CLUSTER_SLEEP_0: cluster-sleep-0 {
compatible = "arm,idle-state";
local-timer-stop;
arm,psci-suspend-param = <0x1010000>;
entry-latency-us = <500>;
exit-latency-us = <5000>;
min-residency-us = <20000>;
};
CLUSTER_SLEEP_1: cluster-sleep-1 {
compatible = "arm,idle-state";
local-timer-stop;
arm,psci-suspend-param = <0x1010000>;
entry-latency-us = <1000>;
exit-latency-us = <5000>;
min-residency-us = <20000>;
};
}; };
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment