diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2014-09-17 02:03:00 +0100 |
---|---|---|
committer | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2014-10-20 22:08:35 +0100 |
commit | cd89ddd566de9b5879c36decebb2e08b351152a9 (patch) | |
tree | 474496cbe7f4a85028f42f0ea8aa597f07d04d7e | |
parent | b620d9f3721e2f93e5ccd12b0b7d971c8d25704e (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.dtsi | 65 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom-apq8064.dtsi | 29 |
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" |