This is version #2 of the patches for cpuidle driver and its dependencies. Changes from version #1/RFC: - Remove hotplug from the patch series. Will submit it seprately. - Fix SPM drivers per the review comments - Modify patch sequence to compile SPM drivers independent of msm-pm, so as to allow wfi() calls to use SPM even without SoC interface driver. 8074 like any ARM SoC can do architectural clock gating, that helps save on power, but not enough of leakage power. Leakage power of the SoC can be further reduced by turning off power to the core. To aid this, every core (cpu and L2) is accompanied by a Sub-system Power Manager (SPM), that can be configured to indicate the low power mode, the core would be put into and the SPM programs the peripheral h/w accordingly to enter low power and turn off the power rail to the core. The patchsets do the following - - Move scm-boot files from arm/mach-qcom to drivers/soc, following convention. They are based on Stephen Boyd's series of patches [http://www.spinics.net/lists/linux-arm-msm/msg10482.html] - Add new Secure Monitor flags to support warmboot of a quad core system. - Introduce the SPM driver to control power to the core. The SPM h/w IP works in conjunction with the Krait CPU/L2. When the core executes WFI instruction, the core is clockgated and the SPM state machine takes over and powers the core down. An interrupt from GIC, resumes the SPM state machine which brings the cpu out of the low power mode. - Add the device tree configuration for each of the SPM nodes. There is one for each cpu. There is one for each cpu and one for L2 and one for L2. - Introduce the SoC driver interface layer to configure SPM per the core's idle state. To power down the cpu core, the SPM h/w needs to be set up correctly to power down the core, when the core executes WFI. Linux is expected to call into Secure Monitor to power down the core. At reset, the core will start in seure mode and will be returned back to Linux. - Add CPUIDLE driver for QCOM cpus. The cpuidle driver uses the SoC interface layer to configure the SPM to allow Krait to be powered down. The driver supports 4 low power modes, but not all SoCs, support all low power modes. The modes supported are configured in device tree nodes. - Provide device configuration for 8074 SoC. Current support is for WFI and standalone power collapse, which powers only the core independent of the other cores and caches. Thanks Lina Lina Iyer (10): msm: scm: Move scm-boot files to drivers/soc and include/soc msm: scm: Add SCM warmboot flags for quad core targets. qcom: spm: Add Subsystem Power Manager (SPM) driver for QCOM chipsets soc: qcom: Add QCOM Power management config arm: qcom-msm8974: Add CPU phandles to CPU definitions arm: dts: qcom: Add SPM device bindings for 8974 qcom: msm-pm: Add cpu low power mode functions qcom: cpuidle: Add cpuidle driver for QCOM cpus qcom: cpuidle: Config option to enable QCOM cpuidle driver qcom: cpuidle: Add cpuidle device nodes for 8974 chipset .../devicetree/bindings/arm/msm/qcom,cpuidle.txt | 73 +++ .../devicetree/bindings/arm/msm/spm-v2.txt | 62 ++ arch/arm/boot/dts/qcom-msm8974-pm.dtsi | 112 ++++ arch/arm/boot/dts/qcom-msm8974.dtsi | 10 +- arch/arm/mach-qcom/Makefile | 1 - arch/arm/mach-qcom/platsmp.c | 2 +- drivers/cpuidle/Kconfig.arm | 6 + drivers/cpuidle/Makefile | 1 + drivers/cpuidle/cpuidle-qcom.c | 140 ++++ drivers/soc/qcom/Kconfig | 8 + drivers/soc/qcom/Makefile | 4 +- drivers/soc/qcom/msm-pm.c | 219 +++++++ .../arm/mach-qcom => drivers/soc/qcom}/scm-boot.c | 4 +- drivers/soc/qcom/spm-devices.c | 703 +++++++++++++++++++++ drivers/soc/qcom/spm.c | 482 ++++++++++++++ drivers/soc/qcom/spm_driver.h | 116 ++++ include/soc/qcom/pm.h | 39 ++ .../arm/mach-qcom => include/soc/qcom}/scm-boot.h | 3 + include/soc/qcom/spm.h | 70 ++ 19 files changed, 2046 insertions(+), 9 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,cpuidle.txt create mode 100644 Documentation/devicetree/bindings/arm/msm/spm-v2.txt create mode 100644 arch/arm/boot/dts/qcom-msm8974-pm.dtsi create mode 100644 drivers/cpuidle/cpuidle-qcom.c create mode 100644 drivers/soc/qcom/msm-pm.c rename {arch/arm/mach-qcom => drivers/soc/qcom}/scm-boot.c (97%) create mode 100644 drivers/soc/qcom/spm-devices.c create mode 100644 drivers/soc/qcom/spm.c create mode 100644 drivers/soc/qcom/spm_driver.h create mode 100644 include/soc/qcom/pm.h rename {arch/arm/mach-qcom => include/soc/qcom}/scm-boot.h (91%) create mode 100644 include/soc/qcom/spm.h -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html