From 5141b172ce7cdece7e30f08703628474ff77b575 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Mon, 24 Dec 2018 20:04:15 +0530 Subject: [PATCH] ASoC: wcd937x: Enable and disable HPH OCP at PA to avoid CnP Enable HPHR and HPHL OCP after PA enable and disable it before PA disable to avoid CnP issues at teardown. Change-Id: Ic08a8862a7fb4f40ecc6060de6aa1eadc11f1c0f Signed-off-by: Vatsal Bucha --- asoc/codecs/wcd937x/wcd937x.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index ab610758b7b3..e5525d5801fa 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -131,10 +131,6 @@ static int wcd937x_init_reg(struct snd_soc_component *component) 0xFF, 0x3A); snd_soc_component_update_bits(component, WCD937X_RX_OCP_CTL, 0x0F, 0x02); - snd_soc_component_update_bits(component, WCD937X_HPH_R_TEST, - 0x01, 0x01); - snd_soc_component_update_bits(component, WCD937X_HPH_L_TEST, - 0x01, 0x01); return 0; } @@ -677,6 +673,8 @@ static int wcd937x_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w, snd_soc_component_update_bits(component, WCD937X_HPH_NEW_INT_HPH_TIMER1, 0x02, 0x02); + snd_soc_component_update_bits(component, + WCD937X_HPH_R_TEST, 0x01, 0x01); if (hph_mode == CLS_AB || hph_mode == CLS_AB_HIFI) snd_soc_component_update_bits(component, WCD937X_ANA_RX_SUPPLIES, @@ -687,6 +685,8 @@ static int wcd937x_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w, (WCD_RX2 << 0x10)); break; case SND_SOC_DAPM_PRE_PMD: + snd_soc_component_update_bits(component, + WCD937X_HPH_R_TEST, 0x01, 0x00); if (wcd937x->update_wcd_event) wcd937x->update_wcd_event(wcd937x->handle, WCD_BOLERO_EVT_RX_MUTE, @@ -772,6 +772,8 @@ static int wcd937x_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w, snd_soc_component_update_bits(component, WCD937X_HPH_NEW_INT_HPH_TIMER1, 0x02, 0x02); + snd_soc_component_update_bits(component, + WCD937X_HPH_L_TEST, 0x01, 0x01); if (hph_mode == CLS_AB || hph_mode == CLS_AB_HIFI) snd_soc_component_update_bits(component, WCD937X_ANA_RX_SUPPLIES, @@ -782,6 +784,8 @@ static int wcd937x_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w, (WCD_RX1 << 0x10)); break; case SND_SOC_DAPM_PRE_PMD: + snd_soc_component_update_bits(component, + WCD937X_HPH_L_TEST, 0x01, 0x00); if (wcd937x->update_wcd_event) wcd937x->update_wcd_event(wcd937x->handle, WCD_BOLERO_EVT_RX_MUTE,