aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2014-09-17 02:03:00 +0100
committerAndrey Konovalov <andrey.konovalov@linaro.org>2014-09-30 22:27:52 +0400
commit3d5dc0cabed9efee95d113ef38cf014108d76b3f (patch)
treec9853588e679e466aab0719b5b0fbe43a5d62a70
parente0009f7c57010197fc0281fbfd94927e50fc2050 (diff)
arm: dts: qcom: Add idle states device nodes for apq8064
Add allowable C-States for each cpu using the cpu-idle-states node. ARM spec dictates WFI as the default idle state at 0. Support standalone power collapse (power down that does not affect any SoC idle states) for each cpu. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-rw-r--r--arch/arm/boot/dts/qcom-apq8064-pm.dtsi65
-rw-r--r--arch/arm/boot/dts/qcom-apq8064.dtsi29
2 files changed, 90 insertions, 4 deletions
diff --git a/arch/arm/boot/dts/qcom-apq8064-pm.dtsi b/arch/arm/boot/dts/qcom-apq8064-pm.dtsi
new file mode 100644
index 000000000000..97c038715f5c
--- /dev/null
+++ b/arch/arm/boot/dts/qcom-apq8064-pm.dtsi
@@ -0,0 +1,65 @@
+/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+&soc {
+ spm@f9089000 {
+ compatible = "qcom,spm-v2.1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x02089000 0x1000>;
+ qcom,cpu = <&CPU0>;
+ qcom,saw2-clk-div = <0x1f>;
+ qcom,saw2-delays = <0x03020004>;
+ qcom,saw2-enable = <0x01>;
+ qcom,saw2-spm-cmd-wfi = [03 0f];
+ qcom,saw2-spm-cmd-spc = [00 24 54 10 09 03 01 10 54 30 0C 24 30 0f];
+ };
+
+ spm@f9099000 {
+ compatible = "qcom,spm-v2.1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x02099000 0x1000>;
+ qcom,cpu = <&CPU1>;
+ qcom,saw2-clk-div = <0x1f>;
+ qcom,saw2-delays = <0x02020204>;
+ qcom,saw2-enable = <0x01>;
+ qcom,saw2-spm-cmd-wfi = [03 0f];
+ qcom,saw2-spm-cmd-spc = [00 24 54 10 09 03 01 10 54 30 0C 24 30 0f];
+ };
+
+ spm@f90a9000 {
+ compatible = "qcom,spm-v2.1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x020a9000 0x1000>;
+ qcom,cpu = <&CPU2>;
+ qcom,saw2-clk-div = <0x1f>;
+ qcom,saw2-delays = <0x02020204>;
+ qcom,saw2-enable = <0x01>;
+ qcom,saw2-spm-cmd-wfi = [03 0f];
+ qcom,saw2-spm-cmd-spc = [00 24 54 10 09 03 01 10 54 30 0C 24 30 0f];
+ };
+
+ spm@f90b9000 {
+ compatible = "qcom,spm-v2.1";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x020b9000 0x1000>;
+ qcom,cpu = <&CPU3>;
+ qcom,saw2-clk-div = <0x1f>;
+ qcom,saw2-delays = <0x02020204>;
+ qcom,saw2-enable = <0x01>;
+ qcom,saw2-spm-cmd-wfi = [03 0f];
+ qcom,saw2-spm-cmd-spc = [00 24 54 10 09 03 01 10 54 30 0C 24 30 0f];
+ };
+};
diff --git a/arch/arm/boot/dts/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom-apq8064.dtsi
index 158fdb4fb694..60dce0bbeae0 100644
--- a/arch/arm/boot/dts/qcom-apq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064.dtsi
@@ -18,7 +18,7 @@
#address-cells = <1>;
#size-cells = <0>;
- cpu@0 {
+ CPU0: cpu@0 {
compatible = "qcom,krait";
enable-method = "qcom,kpss-acc-v1";
device_type = "cpu";
@@ -29,9 +29,10 @@
clocks = <&kraitcc 0>;
clock-names = "cpu";
clock-latency = <100000>;
+ cpu-idle-states = <&CPU_SPC>;
};
- cpu@1 {
+ CPU1: cpu@1 {
compatible = "qcom,krait";
enable-method = "qcom,kpss-acc-v1";
device_type = "cpu";
@@ -42,9 +43,10 @@
clocks = <&kraitcc 1>;
clock-names = "cpu";
clock-latency = <100000>;
+ cpu-idle-states = <&CPU_SPC>;
};
- cpu@2 {
+ CPU2: cpu@2 {
compatible = "qcom,krait";
enable-method = "qcom,kpss-acc-v1";
device_type = "cpu";
@@ -55,9 +57,10 @@
clocks = <&kraitcc 2>;
clock-names = "cpu";
clock-latency = <100000>;
+ cpu-idle-states = <&CPU_SPC>;
};
- cpu@3 {
+ CPU3: cpu@3 {
compatible = "qcom,krait";
enable-method = "qcom,kpss-acc-v1";
device_type = "cpu";
@@ -68,12 +71,29 @@
clocks = <&kraitcc 3>;
clock-names = "cpu";
clock-latency = <100000>;
+ cpu-idle-states = <&CPU_SPC>;
};
L2: l2-cache {
compatible = "cache";
cache-level = <2>;
};
+
+ idle-states {
+ CPU_WFI: cpu-idle-state-0 {
+ compatible = "qcom,idle-state-wfi", "arm,idle-state";
+ entry-latency-us = <1>;
+ exit-latency-us = <1>;
+ min-residency-us = <2>;
+ };
+
+ CPU_SPC: cpu-idle-state-1 {
+ compatible = "qcom,idle-state-spc", "arm,idle-state";
+ entry-latency-us = <150>;
+ exit-latency-us = <200>;
+ min-residency-us = <2000>;
+ };
+ };
};
cpu-pmu {
@@ -1088,3 +1108,4 @@
};
};
};
+#include "qcom-apq8064-pm.dtsi"