• Hans de Goede's avatar
    ASoC: rt5651: Enable LDO and micbias1 supplies for jack-type detection · 1310e737
    Hans de Goede authored
    To determine if a plugged in jack is a headset (speakers + mic) or
    headphones (mic contact shorted to ground) we use the micbias1 OVer Current
    Detect (OVCD) functionality.
    
    For this to work we need to have a micbias current to actually cause an
    overcurrent condition when headphones are plugged in, so jack-type
    detection requires both the LDO and micbias1 supplies to be on.
    
    Before this commit there were 2 issues with the handling of this:
    1) The LDO supply was force-enabled twice and never disabled again even
    though it only needs to be forced on when doing jack-type detection
    2) micbias1 was not force-enabled, and thus may be off when doing jack-type
    detection
    
    This commit fixes both by force-enabling the LDO and micbias1 supplies
    before checking for an overcurrent condition and disabling them afterwards.
    
    Note that both supplies will still get turned on normally (and OVCD will
    protect against overcurrent) when the micbias1 is enabled normally because
    the user has activated a sound stream recording from the mic.
    Tested-by: default avatarCarlo Caione <carlo@endlessm.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    1310e737
rt5651.c 58.8 KB