• Viorel Suman's avatar
    ASoC: codec: wm8960: complete discharge on BIAS OFF->STANDBY · 3c7a4c24
    Viorel Suman authored
    On BIAS STANDBY->OFF transition the current implementation sleeps
    600ms on suspend in order to discharge the chip. The suspend is
    propagated from "snd_soc_suspend" call for all audio cards in a
    serial fashion, thus in case of boards like i.MX8DXL EVK which has
    3 distinct WM8960 codecs the total cumulated sleep on suspend is 1.8
    seconds.
    
    On the other hand the BIAS OFF->STANDBY transition happens
    asynchronously with regard to "snd_soc_resume" - the call is
    propagated from "soc_resume_deferred" which is just scheduled
    from "snd_soc_resume", each card having its own work scheduled to
    execute "soc_resume_deferred" call.
    
    The patch performs discharge completion on BIAS OFF->STANDBY transition
    so that the cumulated effect on suspend described above is avoided
    and discharge is completed in paralel in case of multiple WM8960
    codecs on the board.
    Signed-off-by: default avatarViorel Suman <viorel.suman@nxp.com>
    Link: https://lore.kernel.org/r/20220208121727.4461-1-viorel.suman@oss.nxp.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    3c7a4c24
wm8960.c 41.7 KB