From a8f9dc90d8a1d864f761df39cb66e3b4da5074f9 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Thu, 18 Apr 2019 16:43:08 +0530 Subject: [PATCH] ASoC: mbhc: Fix left channel getting disabled in hs_rem_irq In wcd_mbhc_adc_hs_rem_irq when hph_on bit is set both left and right channel should get enabled. But we enable left channel first, disable left ch and enable right channel. Fix this to enable both left and right channel. Change-Id: Ia50c55a0ed68e01359ef0a9c76eba6901a04e17c Signed-off-by: Vatsal Bucha --- asoc/codecs/wcd-mbhc-adc.c | 5 +---- asoc/codecs/wcd-mbhc-legacy.c | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/asoc/codecs/wcd-mbhc-adc.c b/asoc/codecs/wcd-mbhc-adc.c index 4a2c928a90a5..4de19de467c1 100644 --- a/asoc/codecs/wcd-mbhc-adc.c +++ b/asoc/codecs/wcd-mbhc-adc.c @@ -987,8 +987,6 @@ static irqreturn_t wcd_mbhc_adc_hs_rem_irq(int irq, void *data) if (mbhc->mbhc_cb->hph_pa_on_status) if (mbhc->mbhc_cb->hph_pa_on_status(mbhc->component)) { hphpa_on = true; - WCD_MBHC_REG_UPDATE_BITS( - WCD_MBHC_HPHL_PA_EN, 0); WCD_MBHC_REG_UPDATE_BITS( WCD_MBHC_HPH_PA_EN, 0); } @@ -1033,8 +1031,7 @@ static irqreturn_t wcd_mbhc_adc_hs_rem_irq(int irq, void *data) if (hphpa_on) { hphpa_on = false; - WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPHL_PA_EN, 1); - WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPH_PA_EN, 1); + WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPH_PA_EN, 3); } } exit: diff --git a/asoc/codecs/wcd-mbhc-legacy.c b/asoc/codecs/wcd-mbhc-legacy.c index b266da699bc2..49884ebd89bd 100644 --- a/asoc/codecs/wcd-mbhc-legacy.c +++ b/asoc/codecs/wcd-mbhc-legacy.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015-2018, 2019, The Linux Foundation. All rights reserved. */ #include #include @@ -916,7 +916,7 @@ report_unplug: if (hphpa_on) { hphpa_on = false; WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPHL_PA_EN, 1); - WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPH_PA_EN, 1); + WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HPHR_PA_EN, 1); } hphl_trigerred = 0; mic_trigerred = 0;