• Richard Fitzgerald's avatar
    ASoC: arizona: Export functions to control subsystem DVFS · 346d9683
    Richard Fitzgerald authored
    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: default avatarRichard Fitzgerald <rf@opensource.wolfsonmicro.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    346d9683
wm8997.c 40.5 KB