aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2014-09-17 02:03:00 +0100
committerSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2014-10-20 22:08:35 +0100
commitcd89ddd566de9b5879c36decebb2e08b351152a9 (patch)
tree474496cbe7f4a85028f42f0ea8aa597f07d04d7e
parentb620d9f3721e2f93e5ccd12b0b7d971c8d25704e (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"