linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH 0/5] Introduce .get_voltage callback into voltdm
@ 2012-10-04  1:16 Mike Turquette
  2012-10-04  1:16 ` [PATCH 1/5] ARM: omap: vc: replace data_shift with data_mask Mike Turquette
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Mike Turquette @ 2012-10-04  1:16 UTC (permalink / raw)
  To: linux-arm-kernel

From: Mike Turquette <mturquette@linaro.org>

This series creates a new callback for struct voltagedomain,
.get_voltage.  This fetches the voltage from hardware, if possible, and
returns it to the caller.  We use this call to populate
voltdm->nominal_volt at boot time.

The need for this came out of the Adaptive Body-Bias patches.  There is
a corner case where voltdm->nominal_volt is zero at boot, but the ABB
pre-scale function needs to know the current voltage as a part of its
logic.  Without this series voltdm->nominal_volt will be zero until
after voltdm->scale completes, which is too late for the ABB pre-scale
logic.

It is possible to have ABB without this series.  In the event that
voltdm->nominal_volt is zero then the ABB pre-scale function can simply
return early.  However this opens up a condition that burns power
needlessly:

1) The bootloader enables Forward Body-Bias mode on the ABB ldo and runs
the voltage domain at a high OPP

2) Linux boots and the first transition of that voltage domain is to a
lower OPP.

3) The voltage of that vdd is unknown so the ABB pre-scale function
returns early and FBB is left enabled at an OPP that would otherwise not
need it.

This scenario is not validated and is best avoided.  This series is one
step towards that.

Mike Turquette (5):
  ARM: omap: vc: replace data_shift with data_mask
  ARM: omap: introduce .get_voltage callback
  ARM: omap: vc: .get_voltage callback
  ARM: omap: vp: .get_voltage callback
  ARM: omap: initialize voltdm->nominal_volt

 arch/arm/mach-omap2/vc.c          |   23 ++++++++++++++++++++++-
 arch/arm/mach-omap2/vc.h          |    3 ++-
 arch/arm/mach-omap2/vc3xxx_data.c |    2 +-
 arch/arm/mach-omap2/vc44xx_data.c |    2 +-
 arch/arm/mach-omap2/voltage.c     |   13 +++++++++++++
 arch/arm/mach-omap2/voltage.h     |    1 +
 arch/arm/mach-omap2/vp.c          |   22 ++++++++++++++++++++++
 arch/arm/mach-omap2/vp.h          |    1 +
 8 files changed, 63 insertions(+), 4 deletions(-)

-- 
1.7.9.5

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

end of thread, other threads:[~2013-04-01 21:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-04  1:16 [RFC][PATCH 0/5] Introduce .get_voltage callback into voltdm Mike Turquette
2012-10-04  1:16 ` [PATCH 1/5] ARM: omap: vc: replace data_shift with data_mask Mike Turquette
2012-10-26 17:27   ` Kevin Hilman
2012-10-04  1:16 ` [PATCH 2/5] ARM: omap: introduce .get_voltage callback Mike Turquette
2012-10-04  1:16 ` [PATCH 3/5] ARM: omap: vc: " Mike Turquette
2012-10-26 18:13   ` Kevin Hilman
2012-10-04  1:16 ` [PATCH 4/5] ARM: omap: vp: " Mike Turquette
2012-10-04  1:16 ` [PATCH 5/5] ARM: omap: initialize voltdm->nominal_volt Mike Turquette
2012-10-26 18:17 ` [RFC][PATCH 0/5] Introduce .get_voltage callback into voltdm Kevin Hilman
2012-10-26 19:40   ` Mike Turquette
2013-03-31  2:35 ` Paul Walmsley
2013-04-01 21:56   ` Mike Turquette

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).