• Mark Brown's avatar
    ASoC: tlv320aic31xx: Fix jack detection after suspend · 2c39ca68
    Mark Brown authored
    The tlv320aic31xx driver relies on regcache_sync() to restore the register
    contents after going to _BIAS_OFF, for example during system suspend. This
    does not work for the jack detection configuration since that is configured
    via the same register that status is read back from so the register is
    volatile and not cached. This can also cause issues during init if the jack
    detection ends up getting set up before the CODEC is initially brought out
    of _BIAS_OFF, we will reset the CODEC and resync the cache as part of that
    process.
    
    Fix this by explicitly reapplying the jack detection configuration after
    resyncing the register cache during power on.
    
    This issue was found by an engineer working off-list on a product
    kernel, I just wrote up the upstream fix.
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210723180200.25105-1-broonie@kernel.org
    Cc: stable@vger.kernel.org
    2c39ca68
tlv320aic31xx.c 50 KB