ASoC: rt5651: Enable Platform Clock during jack-type detect
authorHans de Goede <hdegoede@redhat.com>
Sun, 4 Mar 2018 14:35:55 +0000 (15:35 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 7 Mar 2018 12:54:00 +0000 (12:54 +0000)
When using RCCLK instead of MCLK / PLL1 the OVCD status often gets stuck
at its last value, which breaks jack-type detection.

This commit fixes this by force-enabling the platform clock when doing
jack-type detection.

Tested-by: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5651.c

index 62918f7..873af67 100644 (file)
@@ -1563,6 +1563,8 @@ static void rt5651_enable_micbias1_for_ovcd(struct snd_soc_component *component)
        snd_soc_dapm_mutex_lock(dapm);
        snd_soc_dapm_force_enable_pin_unlocked(dapm, "LDO");
        snd_soc_dapm_force_enable_pin_unlocked(dapm, "micbias1");
+       /* OVCD is unreliable when used with RCCLK as sysclk-source */
+       snd_soc_dapm_force_enable_pin_unlocked(dapm, "Platform Clock");
        snd_soc_dapm_sync_unlocked(dapm);
        snd_soc_dapm_mutex_unlock(dapm);
 }
@@ -1572,6 +1574,7 @@ static void rt5651_disable_micbias1_for_ovcd(struct snd_soc_component *component
        struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
 
        snd_soc_dapm_mutex_lock(dapm);
+       snd_soc_dapm_disable_pin_unlocked(dapm, "Platform Clock");
        snd_soc_dapm_disable_pin_unlocked(dapm, "micbias1");
        snd_soc_dapm_disable_pin_unlocked(dapm, "LDO");
        snd_soc_dapm_sync_unlocked(dapm);