ASoC: arizona: Export functions to control subsystem DVFS
authorRichard Fitzgerald <rf@opensource.wolfsonmicro.com>
Tue, 2 Jun 2015 10:53:33 +0000 (11:53 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 2 Jun 2015 20:06:20 +0000 (21:06 +0100)
commit346d96836ca4af39dbfe65eceb7db812b1bfe68f
treefe2e5ceecf9a4b204f4738b724acf629260fc071
parentb601b58785d1440236a4180b1e3ec7bc7c1e5664
ASoC: arizona: Export functions to control subsystem DVFS

The WM5102 and WM8997 codecs have an internal dynamic clock booster.
When this booster is active, the DCVDD voltage must be increased.
If all the currently active audio paths can run with the root SYSCLK
we can disable the booster, allowing us to turn down DCVDD voltage
to save power.

Previously this was being done by having the booster enable bit set
as a side-effect of the LDO1 regulator driver, which is unexpected
behaviour of a regulator and not compatible with using an external
regulator.  [Originally this was documented as a feature of the internal
LDO -- broonie]

This patch exports functions to handle the booster enable and
DCVDD voltage, with each relevant subsystem flagging whether it can
currently run without the booster. Note that these subsystems are
stateless and none of them are nestable, so there's no need for
reference counting, we only need a simple boolean for each subsystem
of whether their current condition could require the booster or will
allow us to turn the codec down to lower operating power.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/arizona.c
sound/soc/codecs/arizona.h
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm8997.c