diff options
Diffstat (limited to 'sound/soc/codecs/wcd-mbhc-v2.c')
-rw-r--r-- | sound/soc/codecs/wcd-mbhc-v2.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/sound/soc/codecs/wcd-mbhc-v2.c b/sound/soc/codecs/wcd-mbhc-v2.c index dd4e3533a015..69b4c0ecd83f 100644 --- a/sound/soc/codecs/wcd-mbhc-v2.c +++ b/sound/soc/codecs/wcd-mbhc-v2.c @@ -45,7 +45,7 @@ #define MBHC_BUTTON_PRESS_THRESHOLD_MIN 250 #define GND_MIC_SWAP_THRESHOLD 4 #define WCD_FAKE_REMOVAL_MIN_PERIOD_MS 100 -#define HS_VREF_MIN_VAL 1400 +#define HS_VREF_MIN_VAL 1200 #define FW_READ_ATTEMPTS 15 #define FW_READ_TIMEOUT 4000000 #define FAKE_REM_RETRY_ATTEMPTS 3 @@ -533,6 +533,11 @@ static void wcd_mbhc_set_and_turnoff_hph_padac(struct wcd_mbhc *mbhc) WCD_MBHC_REG_READ(WCD_MBHC_HPH_CNP_WG_TIME, wg_time); wg_time += 1; + if (mbhc->mbhc_cfg->default_gnd_mic && + mbhc->mbhc_cfg->default_gnd_mic(mbhc->codec)) { + pr_debug("%s: US_EU gpio present,set to default switch\n" + , __func__); + } /* If headphone PA is on, check if userspace receives * removal event to sync-up PA's state */ @@ -1999,10 +2004,23 @@ static irqreturn_t wcd_mbhc_btn_press_handler(int irq, void *data) struct wcd_mbhc *mbhc = data; int mask; unsigned long msec_val; + unsigned long msec_delta; + static unsigned long msec_first = 0; pr_debug("%s: enter\n", __func__); complete(&mbhc->btn_press_compl); WCD_MBHC_RSC_LOCK(mbhc); + + msec_delta = jiffies_to_msecs(jiffies - msec_first); + if(msec_delta < 100){ + pr_err("%s:cancel repeat press,msec_delta = %ld\n", __func__,msec_delta); + goto done; + } + msec_first = jiffies; + + /* send event to sw intr handler*/ + mbhc->is_btn_press = true; + wcd_cancel_btn_work(mbhc); if (wcd_swch_level_remove(mbhc)) { pr_debug("%s: Switch level is low ", __func__); |