Hi Jean, jean.pihet@xxxxxxxxxxxxxx writes: > From: Jean Pihet <j-pihet@xxxxxx> > > . 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@xxxxxx> > 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(-) -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html