public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] PM QoS: implement the OMAP low level constraints management code
@ 2011-09-02 13:13 Jean Pihet
  2011-09-02 13:13 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints Jean Pihet
                   ` (8 more replies)
  0 siblings, 9 replies; 20+ messages in thread
From: Jean Pihet @ 2011-09-02 13:13 UTC (permalink / raw)
  To: Kevin Hilman, Linux PM mailing list, linux-omap,
	Rafael J. Wysocki, Paul Walmsley
  Cc: Jean Pihet

. create a PM layer plugin for per-device constraints, compiled under
  CONFIG_OMAP_PM_CONSTRAINTS=y
. 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 power
  states, through the hwmod and pwrdm layers
. add cpuidle and power domains wake-up latency figures for OMAP3, cf. [1]
  for the details on where the numbers are coming from
. cpuidle is a CPU centric framework so it decides the MPU next power state
  based on the MPU exit_latency and target_residency figures. The rest of
  the power domains get their next power state programmed from the devices
  PM QoS framework, via the devices wake-up latency constraints.
. convert the OMAP I2C driver to the PM QoS API for MPU latency constraints

ToDo:
1. validate the constraints framework on OMAP4 HW (done on OMAP3)
2. 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

   
Based on the pm-qos branch of the linux-pm git tree (3.1.0-rc3), cf. [2].

Tested 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/rafael/linux-pm.git


Jean Pihet (8):
  OMAP: convert I2C driver to PM QoS for latency constraints
  OMAP: PM: create a PM layer plugin for per-device constraints
  OMAP2+: powerdomain: control power domains next state
  OMAP3: powerdomain data: add wake-up latency figures
  OMAP2+: omap_hwmod: manage the wake-up latency constraints
  OMAP: PM CONSTRAINTS: implement the devices wake-up latency
    constraints
  OMAP2+: cpuidle only influences the MPU state
  OMAP3: update cpuidle latency and threshold figures

 arch/arm/mach-omap2/cpuidle34xx.c            |   56 ++---
 arch/arm/mach-omap2/omap_hwmod.c             |   26 ++-
 arch/arm/mach-omap2/pm.h                     |   17 ++-
 arch/arm/mach-omap2/powerdomain.c            |  190 ++++++++++++++
 arch/arm/mach-omap2/powerdomain.h            |   33 +++-
 arch/arm/mach-omap2/powerdomains3xxx_data.c  |   78 ++++++
 arch/arm/plat-omap/Kconfig                   |    7 +
 arch/arm/plat-omap/Makefile                  |    1 +
 arch/arm/plat-omap/i2c.c                     |   20 --
 arch/arm/plat-omap/include/plat/omap-pm.h    |  128 ----------
 arch/arm/plat-omap/include/plat/omap_hwmod.h |    2 +
 arch/arm/plat-omap/omap-pm-constraints.c     |  350 ++++++++++++++++++++++++++
 arch/arm/plat-omap/omap-pm-noop.c            |   89 -------
 drivers/i2c/busses/i2c-omap.c                |   31 ++-
 14 files changed, 737 insertions(+), 291 deletions(-)
 create mode 100644 arch/arm/plat-omap/omap-pm-constraints.c

-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 20+ messages in thread
* [PATCH v2 0/8] PM QoS: implement the OMAP low level constraints management code
@ 2011-09-21 16:14 Jean Pihet
  2011-09-21 16:14 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints Jean Pihet
  2011-09-21 16:24 ` [PATCH v2 0/8] PM QoS: implement the OMAP low level constraints management code jean.pihet
  0 siblings, 2 replies; 20+ messages in thread
From: Jean Pihet @ 2011-09-21 16:14 UTC (permalink / raw)
  To: Kevin Hilman, Linux PM mailing list, linux-omap,
	Rafael J. Wysocki, Paul Walmsley
  Cc: Jean Pihet

. Convert the OMAP I2C driver to the PM QoS API for MPU latency constraints
. Remove the remove the latency related functions from OMAP PM in favor of
  the generic per-device PM QoS API
. 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 power
  states, through the hwmod and pwrdm layers
. Add cpuidle and power domains wake-up latency figures for OMAP3, cf. [1]
  for the details on where the numbers are 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.


ToDo:
1. validate the constraints framework on OMAP4 HW (done on OMAP3)
2. 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
3. Further clean-up the OMAP PM layer, use the generic frameworks instead (OPP,
   PM QoS...)


Based on the pm-qos branch of the linux-pm git tree (3.1.0-rc3), cf. [2].

Tested 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/rafael/linux-pm.git


Jean Pihet (8):
  OMAP: convert I2C driver to PM QoS for latency constraints
  OMAP: PM: remove the latency related functions from the API
  OMAP2+: powerdomain: control power domains next state
  OMAP2+: omap_hwmod: manage the wake-up latency constraints
  OMAP: PM: register to the per-device PM QoS framework
  OMAP3: cpuidle: next C-state decision depends on the PM QoS MPU and
    CORE constraints
  OMAP3: update cpuidle latency and threshold figures
  OMAP3: powerdomain data: add wake-up latency figures

 Documentation/arm/OMAP/omap_pm               |   55 ++------
 arch/arm/mach-omap2/cpuidle34xx.c            |   77 ++++++-----
 arch/arm/mach-omap2/omap_hwmod.c             |   26 ++++-
 arch/arm/mach-omap2/pm.c                     |   63 ++++++++
 arch/arm/mach-omap2/pm.h                     |   17 ++-
 arch/arm/mach-omap2/powerdomain.c            |  197 ++++++++++++++++++++++++++
 arch/arm/mach-omap2/powerdomain.h            |   35 +++++-
 arch/arm/mach-omap2/powerdomains3xxx_data.c  |   78 ++++++++++
 arch/arm/plat-omap/i2c.c                     |   20 ---
 arch/arm/plat-omap/include/plat/omap-pm.h    |   99 -------------
 arch/arm/plat-omap/include/plat/omap_hwmod.h |    2 +
 arch/arm/plat-omap/omap-pm-noop.c            |   88 ------------
 drivers/i2c/busses/i2c-omap.c                |   30 ++--
 include/linux/i2c-omap.h                     |    1 -
 14 files changed, 480 insertions(+), 308 deletions(-)

-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 20+ messages in thread
* [PATCH v3 0/8] PM QoS: implement the OMAP low level constraints management code
@ 2011-10-12 15:24 jean.pihet
  2011-10-12 15:24 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints jean.pihet
  0 siblings, 1 reply; 20+ messages in thread
From: jean.pihet @ 2011-10-12 15:24 UTC (permalink / raw)
  To: Kevin Hilman, Linux PM mailing list, linux-omap,
	Rafael J. Wysocki, Paul Walmsley
  Cc: Jean Pihet

From: Jean Pihet <j-pihet@ti.com>

. Convert the OMAP I2C driver to the PM QoS API for MPU latency constraints
. Remove the remove the latency related functions from OMAP PM in favor of
  the generic per-device PM QoS API
. 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 power
  states, through the hwmod and pwrdm layers
. Add cpuidle and power domains wake-up latency figures for OMAP3, cf. [1]
  for the details on where the numbers are 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.


ToDo:
1. validate the constraints framework on OMAP4 HW (done on OMAP3)
2. 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
3. Further clean-up the OMAP PM layer, use the generic frameworks instead (OPP,
   PM QoS...)


Based on the pm-qos branch of the linux-pm git tree (3.1.0-rc3), cf. [2].

Tested 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://github.com/rjwysocki/linux-pm.git


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 (8):
  OMAP: convert I2C driver to PM QoS for latency constraints
  OMAP: PM: remove the latency related functions from the API
  OMAP2+: powerdomain: control power domains next state
  OMAP2+: omap_hwmod: manage the wake-up latency constraints
  OMAP: PM: register to the per-device PM QoS framework
  OMAP3: cpuidle: next C-state decision depends on the PM QoS MPU and
    CORE constraints
  OMAP3: update cpuidle latency and threshold figures
  OMAP3: powerdomain data: add wake-up latency figures

 Documentation/arm/OMAP/omap_pm               |   55 ++------
 arch/arm/mach-omap2/cpuidle34xx.c            |   77 ++++++-----
 arch/arm/mach-omap2/omap_hwmod.c             |   27 ++++-
 arch/arm/mach-omap2/pm.c                     |   63 ++++++++
 arch/arm/mach-omap2/pm.h                     |   17 ++-
 arch/arm/mach-omap2/powerdomain.c            |  200 ++++++++++++++++++++++++++
 arch/arm/mach-omap2/powerdomain.h            |   35 +++++-
 arch/arm/mach-omap2/powerdomains3xxx_data.c  |   78 ++++++++++
 arch/arm/plat-omap/i2c.c                     |   20 ---
 arch/arm/plat-omap/include/plat/omap-pm.h    |   99 -------------
 arch/arm/plat-omap/include/plat/omap_hwmod.h |    2 +
 arch/arm/plat-omap/omap-pm-noop.c            |   88 -----------
 drivers/i2c/busses/i2c-omap.c                |   30 ++--
 include/linux/i2c-omap.h                     |    1 -
 14 files changed, 484 insertions(+), 308 deletions(-)

-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2011-10-12 15:24 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-02 13:13 [PATCH 0/8] PM QoS: implement the OMAP low level constraints management code Jean Pihet
2011-09-02 13:13 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints Jean Pihet
2011-09-15 22:46   ` Kevin Hilman
2011-09-16 15:39     ` Jean Pihet
2011-09-16 16:06       ` Kevin Hilman
2011-09-02 13:13 ` [PATCH 2/8] OMAP: PM: create a PM layer plugin for per-device constraints Jean Pihet
2011-09-02 13:13 ` [PATCH 3/8] OMAP2+: powerdomain: control power domains next state Jean Pihet
2011-09-16 18:27   ` Kevin Hilman
2011-09-02 13:13 ` [PATCH 4/8] OMAP3: powerdomain data: add wake-up latency figures Jean Pihet
2011-09-02 13:13 ` [PATCH 5/8] OMAP2+: omap_hwmod: manage the wake-up latency constraints Jean Pihet
2011-09-02 13:13 ` [PATCH 6/8] OMAP: PM CONSTRAINTS: implement the devices " Jean Pihet
2011-09-15 23:47   ` Kevin Hilman
2011-09-16 15:43     ` Jean Pihet
2011-09-16 15:56       ` Kevin Hilman
2011-09-02 13:13 ` [PATCH 7/8] OMAP2+: cpuidle only influences the MPU state Jean Pihet
2011-09-02 13:13 ` [PATCH 8/8] OMAP3: update cpuidle latency and threshold figures Jean Pihet
2011-09-15  8:57 ` [PATCH 0/8] PM QoS: implement the OMAP low level constraints management code Jean Pihet
  -- strict thread matches above, loose matches on Subject: below --
2011-09-21 16:14 [PATCH v2 " Jean Pihet
2011-09-21 16:14 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints Jean Pihet
2011-09-21 16:24 ` [PATCH v2 0/8] PM QoS: implement the OMAP low level constraints management code jean.pihet
2011-09-21 16:24   ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints jean.pihet
2011-10-12 15:24 [PATCH v3 0/8] PM QoS: implement the OMAP low level constraints management code jean.pihet
2011-10-12 15:24 ` [PATCH 1/8] OMAP: convert I2C driver to PM QoS for latency constraints jean.pihet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox