From 79da9fb84a19d288cf3faef8b663d13ed8ed6dac Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Tue, 13 Nov 2018 19:49:34 +0530 Subject: [PATCH] ASoC: wcd937x: Fix pop after PDR Pop is heard after PDR is triggered. This is because while device down PA is still on. Disable PA before SSR device down to prevent pop. Change-Id: I6bfe3e731bdf60fba8fee90ab39c03a0512006ce Signed-off-by: Vatsal Bucha --- asoc/codecs/wcd937x/internal.h | 1 + asoc/codecs/wcd937x/wcd937x.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/asoc/codecs/wcd937x/internal.h b/asoc/codecs/wcd937x/internal.h index eb2de9d69e..c0f96f124f 100644 --- a/asoc/codecs/wcd937x/internal.h +++ b/asoc/codecs/wcd937x/internal.h @@ -123,6 +123,7 @@ enum { enum { BOLERO_WCD_EVT_TX_CH_HOLD_CLEAR = 1, + BOLERO_WCD_EVT_PA_OFF_PRE_SSR, BOLERO_WCD_EVT_SSR_DOWN, BOLERO_WCD_EVT_SSR_UP, }; diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index 485d328389..34e4b1b811 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -1246,6 +1246,11 @@ static int wcd937x_event_notify(struct notifier_block *block, mask = 0x20; snd_soc_update_bits(codec, reg, mask, 0x00); break; + case BOLERO_WCD_EVT_PA_OFF_PRE_SSR: + snd_soc_update_bits(codec, WCD937X_ANA_HPH, 0xC0, 0x00); + snd_soc_update_bits(codec, WCD937X_ANA_EAR, 0x80, 0x00); + snd_soc_update_bits(codec, WCD937X_AUX_AUXPA, 0x80, 0x00); + break; case BOLERO_WCD_EVT_SSR_DOWN: wcd937x_reset_low(wcd937x->dev); break;