Re: [RFC] [PATCH 00/13] QCOM: 8087 CPUIDLE driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry for spamming, please ignore this series. The email address I used
was incorrect and also the subject.

I apologize.

Lina

On Thu, 7 Aug 2014, Lina Iyer wrote:

> Hello everybody,
> 
> Here are the set of patches for enabling cpuidle driver for 8074 based targets.
> 
> 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.  Also, when powering down the
> core, let the SCM know the state of L2 as set up in Linux. This allows secure
> monitor to flush the secure lines when Linux knows the cache may be powered
> off. 
> 
> - Add ability to recognize the power down status of the core, to ensure that
> the core is indeed powered down before powering down peripheral h/w.
> 
> - Add support for deeper idle states than just clock gating for hotplug and warmboot
> 
> - 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.
> 
> - KConfig option to enable the driver
> 
> I have tested them on the Dragonboard 8074. The drivers should be fairly
> extensible to 8084.
> 
> Thanks
> Lina
> 
> 
> Lina Iyer (13):
>   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 driver for QCOM chipsets
>   arm: dts: qcom: Add SPM device bindings for 8974
>   qcom: msm-pm: Add cpu low power mode functions
>   qcom: msm-pm: Add support for hotplug and secondary startup
>   qcom: sleep-status: Add ability to recognize cpu power down state
>   arm: dts: qcom: Add device binding for sleep status
>   soc: qcom: Add QCOM Power management config
>   qcom: platsmp: Enable deeper idle states for hotplug
>   qcom: cpuidle: Add cpuidle driver for QCOM cpus
>   qcom: cpuidle: Add cpuidle device nodes for 8974 chipset
>   qcom: cpuidle: Config option to enable QCOM cpuidle driver
> 
>  .../bindings/arm/msm/qcom,cpu-sleep-status.txt     |  41 ++
>  .../devicetree/bindings/arm/msm/qcom,cpuidle.txt   |  73 +++
>  .../devicetree/bindings/arm/msm/spm-v2.txt         | 104 +++
>  arch/arm/boot/dts/qcom-msm8974-pm.dtsi             | 146 +++++
>  arch/arm/boot/dts/qcom-msm8974.dtsi                |   2 +
>  arch/arm/mach-qcom/Makefile                        |   1 -
>  arch/arm/mach-qcom/platsmp.c                       |  22 +-
>  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                          | 254 ++++++++
>  .../arm/mach-qcom => drivers/soc/qcom}/scm-boot.c  |   4 +-
>  drivers/soc/qcom/sleep-status.c                    | 178 ++++++
>  drivers/soc/qcom/spm.c                             | 559 ++++++++++++++++
>  drivers/soc/qcom/spm_devices.c                     | 709 +++++++++++++++++++++
>  drivers/soc/qcom/spm_driver.h                      | 118 ++++
>  include/soc/qcom/pm.h                              |  45 ++
>  .../arm/mach-qcom => include/soc/qcom}/scm-boot.h  |   3 +
>  include/soc/qcom/spm.h                             | 106 +++
>  21 files changed, 2519 insertions(+), 5 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,cpu-sleep-status.txt
>  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/sleep-status.c
>  create mode 100644 drivers/soc/qcom/spm.c
>  create mode 100644 drivers/soc/qcom/spm_devices.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
> 
> 
--
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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux