[PATCH v7 0/6] PM QoS: implement the OMAP low level constraints management code
Kevin Hilman
khilman at ti.com
Mon Apr 30 19:15:20 EDT 2012
Hi Jean,
jean.pihet at newoldbits.com writes:
> From: Jean Pihet <j-pihet at ti.com>
>
> . Implement the devices wake-up latency constraints using the global
> device PM QoS notification handler which applies the constraints to the
> underlying layer,
> . Implement the low level code which controls the power domains next
> functional power states [3], through the hwmod and pwrdm layers,
> . Add cpuidle and power domains wake-up latency figures for OMAP3, cf.
> comments in the code and [1] for the details on where the numbers
> are magically coming from,
> . Implement the relation between the cpuidle and per-device PM QoS frameworks
> in the OMAP3 specific idle callbacks.
> The chosen C-state shall satisfy the following conditions:
> . the 'valid' field is enabled,
> . it satisfies the enable_off_mode flag,
> . the next state for MPU and CORE power domains is not lower than the
> state programmed by the per-device PM QoS.
I've just been through this series and it looks good to me.
Reviewed-by: Kevin Hilman <khilman at ti.com>
> ToDo:
> 1. support OMAP4 chipset when the low power modes will be supported
Have you been able to do this with Tero's latest CORE RET and device off
series?
Kevin
> 2. validate the constraints framework on OMAP4 HW (done on OMAP3)
> 3. Re-visit the OMAP power domains states initialization procedure. Currently
> the power states that have been changed from the constraints API which were
> applied before the initialization of the power domains are lost
> 4. Further clean-up the OMAP PM layer, use the generic frameworks instead (OPP,
> PM QoS for throughput constraints ...)
>
>
> Based on the pm-qos branch of the linux-omap git tree (3.4.0-rc2) [2] with
> the functional power states changes applied [3].
>
> Tested cpuidle and suspend on OMAP3 Beagleboard (ES2.x) with constraints
> on MPU, CORE, PER in RETention and OFF modes.
>
> [1] http://www.omappedia.org/wiki/Power_Management_Device_Latencies_Measurement
> [2] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
> [3] http://marc.info/?l=linux-omap&m=133475291911194&w=2
>
>
> History:
>
> v7:
> . rebased on top of the functional power state changes [3]
>
> v6:
> . minor change in the commits description after Kevin's review
> . added Kevin's Reviewed-by
>
> v5:
> . rebased on latest linux-omap [2]
> . rework after Kevin's comments on the MLs
>
> v4:
> . split up the patches which remove the omap_pm_ code from the patch set.
> Those patches are to be submitted later, on top of this patch set.
> . latency numbers: provide the measurements setup and conditions in the code
> comments, added the link to the details on wiki [1].
> . improved kerneldoc
> . split big functions into smaller ones, in order to improve the readability
>
> v3: reworked the error return path and improved the kerneldoc
>
> v2: reworked the OMAP specific cpuidle code to demote the initial C-state to
> a valid C-state which fulfills the per-device constraints
>
> v1: initial version
>
>
> Jean Pihet (6):
> ARM: OMAP2+: PM QoS: control the power domains next state from the
> constraints
> ARM: OMAP2+: PM QoS: manage the per-device latency constraints in
> hwmod
> ARM: OMAP: omap_device: register to the per-device PM QoS framework
> ARM: OMAP3: cpuidle: next C-state decision depends on the PM QoS MPU
> and CORE constraints
> ARM: OMAP3: update cpuidle latency and threshold figures
> ARM: OMAP3: powerdomain data: add wake-up latency figures
>
> arch/arm/mach-omap2/cpuidle34xx.c | 109 ++++++++------
> arch/arm/mach-omap2/omap_hwmod.c | 22 +--
> arch/arm/mach-omap2/pm.h | 17 ++-
> arch/arm/mach-omap2/powerdomain.c | 216 +++++++++++++++++++++++++++
> arch/arm/mach-omap2/powerdomain.h | 17 ++
> arch/arm/mach-omap2/powerdomains3xxx_data.c | 83 ++++++++++
> arch/arm/plat-omap/omap_device.c | 81 ++++++++++-
> 7 files changed, 481 insertions(+), 64 deletions(-)
More information about the linux-arm-kernel
mailing list