From c2e51898528872957b2c3c84f0a2cf441a3b6364 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Fri, 21 Feb 2020 19:53:59 +0530 Subject: [PATCH] ASoC: wcd-mbhc: Fix playback pause during lineout insertion Playback pauses during aux cable insertion as removal of cable is reported followed by insertion. Report removal of current cable only when headset connected to other end of extension cable and not lineout. Change-Id: I08933f4a88493136a518ee72646aa10b1f06eb70 Signed-off-by: Vatsal Bucha --- asoc/codecs/wcd-mbhc-adc.c | 1 + asoc/codecs/wcd-mbhc-v2.c | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/asoc/codecs/wcd-mbhc-adc.c b/asoc/codecs/wcd-mbhc-adc.c index f298557d69..c57c011dfd 100644 --- a/asoc/codecs/wcd-mbhc-adc.c +++ b/asoc/codecs/wcd-mbhc-adc.c @@ -1115,6 +1115,7 @@ static irqreturn_t wcd_mbhc_adc_hs_ins_irq(int irq, void *data) WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_ELECT_ISRC_EN, 0); mbhc->is_extn_cable = true; mbhc->btn_press_intr = false; + mbhc->force_linein = false; wcd_mbhc_adc_detect_plug_type(mbhc); WCD_MBHC_RSC_UNLOCK(mbhc); pr_debug("%s: leave\n", __func__); diff --git a/asoc/codecs/wcd-mbhc-v2.c b/asoc/codecs/wcd-mbhc-v2.c index f173f3e314..2d003fe4e1 100644 --- a/asoc/codecs/wcd-mbhc-v2.c +++ b/asoc/codecs/wcd-mbhc-v2.c @@ -641,11 +641,12 @@ void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion, } mbhc->hph_type = WCD_MBHC_HPH_NONE; mbhc->zl = mbhc->zr = 0; - pr_debug("%s: Reporting removal (%x)\n", - __func__, mbhc->hph_status); - wcd_mbhc_jack_report(mbhc, &mbhc->headset_jack, - 0, WCD_MBHC_JACK_MASK); - + if (!mbhc->force_linein) { + pr_debug("%s: Reporting removal (%x)\n", + __func__, mbhc->hph_status); + wcd_mbhc_jack_report(mbhc, &mbhc->headset_jack, + 0, WCD_MBHC_JACK_MASK); + } if (mbhc->hph_status == SND_JACK_LINEOUT) { pr_debug("%s: Enable micbias\n", __func__);