diff --git a/techpack/audio/asoc/codecs/wcd-mbhc-v2.c b/techpack/audio/asoc/codecs/wcd-mbhc-v2.c index 4c8c484e2017..96ae2394867f 100644 --- a/techpack/audio/asoc/codecs/wcd-mbhc-v2.c +++ b/techpack/audio/asoc/codecs/wcd-mbhc-v2.c @@ -699,9 +699,11 @@ void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion, &mbhc->zl, &mbhc->zr); WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_FSM_EN, fsm_en); - if (mbhc->zl > mbhc->mbhc_cfg->linein_th && - mbhc->zr > mbhc->mbhc_cfg->linein_th && - jack_type == SND_JACK_HEADPHONE) { + if ((mbhc->zl > mbhc->mbhc_cfg->linein_th && + mbhc->zl < MAX_IMPED) && + (mbhc->zr > mbhc->mbhc_cfg->linein_th && + mbhc->zr < MAX_IMPED) && + (jack_type == SND_JACK_HEADPHONE)) { jack_type = SND_JACK_LINEOUT; mbhc->force_linein = true; mbhc->current_plug = MBHC_PLUG_TYPE_HIGH_HPH; @@ -1850,6 +1852,8 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, const char *hs_thre = "qcom,msm-mbhc-hs-mic-max-threshold-mv"; const char *hph_thre = "qcom,msm-mbhc-hs-mic-min-threshold-mv"; + impedance_det_en = true; + pr_debug("%s: enter\n", __func__); ret = of_property_read_u32(card->dev->of_node, hph_switch, &hph_swh); diff --git a/techpack/audio/asoc/codecs/wcd-mbhc-v2.h b/techpack/audio/asoc/codecs/wcd-mbhc-v2.h index 11c462b9ff46..99be6f917bcd 100644 --- a/techpack/audio/asoc/codecs/wcd-mbhc-v2.h +++ b/techpack/audio/asoc/codecs/wcd-mbhc-v2.h @@ -148,6 +148,7 @@ do { \ #define FW_READ_ATTEMPTS 15 #define FW_READ_TIMEOUT 4000000 #define FAKE_REM_RETRY_ATTEMPTS 10 +#define MAX_IMPED 100000 #define WCD_MBHC_BTN_PRESS_COMPL_TIMEOUT_MS 50 #define ANC_DETECT_RETRY_CNT 7