diff --git a/asoc/codecs/wcd-mbhc-v2.c b/asoc/codecs/wcd-mbhc-v2.c index 6839203bd9..1159b1128a 100644 --- a/asoc/codecs/wcd-mbhc-v2.c +++ b/asoc/codecs/wcd-mbhc-v2.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-2019, The Linux Foundation. All rights reserved. */ #include #include @@ -850,7 +850,7 @@ static bool wcd_mbhc_moisture_detect(struct wcd_mbhc *mbhc, bool detection_type) { bool ret = false; - if (!mbhc->mbhc_cfg->moisture_en || + if (!mbhc->mbhc_cfg->moisture_en && !mbhc->mbhc_cfg->moisture_duty_cycle_en) return ret; @@ -1342,9 +1342,15 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc) else WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_HS_L_DET_PULL_UP_CTRL, 3); + /* Configure for moisture detection when duty cycle is not enabled. + * Otherwise disable moisture detection. + */ if (mbhc->mbhc_cfg->moisture_en && mbhc->mbhc_cb->mbhc_moisture_config && !mbhc->mbhc_cfg->moisture_duty_cycle_en) mbhc->mbhc_cb->mbhc_moisture_config(mbhc); + else if (mbhc->mbhc_cfg->moisture_duty_cycle_en && + mbhc->mbhc_cb->mbhc_moisture_detect_en) + mbhc->mbhc_cb->mbhc_moisture_detect_en(mbhc, false); /* * For USB analog we need to override the switch configuration.