aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--arch/arm64/boot/dts/cix/sky1-power.h13
-rw-r--r--arch/arm64/boot/dts/cix/sky1.dtsi70
2 files changed, 83 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/cix/sky1-power.h b/arch/arm64/boot/dts/cix/sky1-power.h
index 53f4a3af36b39..144567579b719 100644
--- a/arch/arm64/boot/dts/cix/sky1-power.h
+++ b/arch/arm64/boot/dts/cix/sky1-power.h
@@ -30,4 +30,17 @@
#define SKY1_PD_ISP0 20
#define SKY1_PD_GPU 21
+#define SKY1_PERF_GPU_CORE 0
+#define SKY1_PERF_GPU_TOP 1
+#define SKY1_PERF_CPU_L 2
+#define SKY1_PERF_CPU_B0 3
+#define SKY1_PERF_CPU_B1 4
+#define SKY1_PERF_CPU_M0 5
+#define SKY1_PERF_CPU_M1 6
+#define SKY1_PERF_DSU 7
+#define SKY1_PERF_NPU 8
+#define SKY1_PERF_VPU 9
+#define SKY1_PERF_CI700 10
+#define SKY1_PERF_NI700 11
+
#endif
diff --git a/arch/arm64/boot/dts/cix/sky1.dtsi b/arch/arm64/boot/dts/cix/sky1.dtsi
index bb5cfb1f21133..a77c52296ebd3 100644
--- a/arch/arm64/boot/dts/cix/sky1.dtsi
+++ b/arch/arm64/boot/dts/cix/sky1.dtsi
@@ -22,7 +22,10 @@
enable-method = "psci";
reg = <0x0 0x0>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_L>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <403>;
+ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
};
cpu1: cpu@100 {
@@ -30,7 +33,10 @@
enable-method = "psci";
reg = <0x0 0x100>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_L>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <403>;
+ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
};
cpu2: cpu@200 {
@@ -38,7 +44,10 @@
enable-method = "psci";
reg = <0x0 0x200>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_L>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <403>;
+ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
};
cpu3: cpu@300 {
@@ -46,7 +55,10 @@
enable-method = "psci";
reg = <0x0 0x300>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_L>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <403>;
+ cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
};
cpu4: cpu@400 {
@@ -54,7 +66,10 @@
enable-method = "psci";
reg = <0x0 0x400>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_M0>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu5: cpu@500 {
@@ -62,7 +77,10 @@
enable-method = "psci";
reg = <0x0 0x500>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_M0>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu6: cpu@600 {
@@ -70,7 +88,10 @@
enable-method = "psci";
reg = <0x0 0x600>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_M1>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu7: cpu@700 {
@@ -78,7 +99,10 @@
enable-method = "psci";
reg = <0x0 0x700>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_M1>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu8: cpu@800 {
@@ -86,7 +110,10 @@
enable-method = "psci";
reg = <0x0 0x800>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_B0>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu9: cpu@900 {
@@ -94,7 +121,10 @@
enable-method = "psci";
reg = <0x0 0x900>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_B0>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu10: cpu@a00 {
@@ -102,7 +132,10 @@
enable-method = "psci";
reg = <0x0 0xa00>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_B1>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu11: cpu@b00 {
@@ -110,7 +143,10 @@
enable-method = "psci";
reg = <0x0 0xb00>;
device_type = "cpu";
+ power-domains = <&scmi_dvfs SKY1_PERF_CPU_B1>;
+ power-domain-names = "perf";
capacity-dmips-mhz = <1024>;
+ cpu-idle-states = <&CPU_SLEEP_1 &CLUSTER_SLEEP_0>;
};
cpu-map {
@@ -153,6 +189,35 @@
};
};
};
+
+ idle-states {
+ CPU_SLEEP_0: cpu-sleep-0 {
+ compatible = "arm,idle-state";
+ arm,psci-suspend-param = <0x0010000>;
+ local-timer-stop;
+ entry-latency-us = <34>;
+ exit-latency-us = <100>;
+ min-residency-us = <3000>;
+ };
+
+ CPU_SLEEP_1: cpu-sleep-1 {
+ compatible = "arm,idle-state";
+ arm,psci-suspend-param = <0x0010000>;
+ local-timer-stop;
+ entry-latency-us = <31>;
+ exit-latency-us = <79>;
+ min-residency-us = <3000>;
+ };
+
+ CLUSTER_SLEEP_0: cluster-sleep-0 {
+ compatible = "arm,idle-state";
+ arm,psci-suspend-param = <0x1010000>;
+ local-timer-stop;
+ entry-latency-us = <41>;
+ exit-latency-us = <104>;
+ min-residency-us = <4000>;
+ };
+ };
};
firmware {
@@ -164,6 +229,11 @@
#address-cells = <1>;
#size-cells = <0>;
+ scmi_dvfs: protocol@13 {
+ reg = <0x13>;
+ #power-domain-cells = <1>;
+ };
+
scmi_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;