summaryrefslogtreecommitdiff
path: root/asoc/codecs
diff options
context:
space:
mode:
authorKarthikeyan Mani <kmani@codeaurora.org>2017-11-08 20:32:38 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-12-11 21:03:01 -0800
commit5392d8052e1a81bad1c1da097cd2900f0ff6c4aa (patch)
treed7f26f61c0b35a9a2598539221fd017e7dac0676 /asoc/codecs
parent9326b2df53c2f21d560941c5e2a1a648477d4136 (diff)
downloadmsm-extra-5392d8052e1a81bad1c1da097cd2900f0ff6c4aa.tar.gz
asoc: codecs: modify gnd mic swap threshold for usb-c analog
To reduce time of usb-c analog headset detection, reduce gnd mic swap threshold if usb-c is enabled. Use existing threshold value otherwise. CRs-Fixed: 2137077 Change-Id: Ic1d1f3a00c9034caaac45f2c80f018546a69ce59 Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
Diffstat (limited to 'asoc/codecs')
-rw-r--r--asoc/codecs/wcd-mbhc-adc.c10
-rw-r--r--asoc/codecs/wcd-mbhc-legacy.c8
-rw-r--r--asoc/codecs/wcd-mbhc-v2.c2
-rw-r--r--asoc/codecs/wcd-mbhc-v2.h2
4 files changed, 13 insertions, 9 deletions
diff --git a/asoc/codecs/wcd-mbhc-adc.c b/asoc/codecs/wcd-mbhc-adc.c
index bcb616e7..920796f2 100644
--- a/asoc/codecs/wcd-mbhc-adc.c
+++ b/asoc/codecs/wcd-mbhc-adc.c
@@ -622,7 +622,7 @@ static void wcd_correct_swch_plug(struct work_struct *work)
do {
cross_conn = wcd_check_cross_conn(mbhc);
try++;
- } while (try < GND_MIC_SWAP_THRESHOLD);
+ } while (try < mbhc->swap_thr);
if (cross_conn > 0) {
plug_type = MBHC_PLUG_TYPE_GND_MIC_SWAP;
@@ -714,10 +714,10 @@ correct_plug_type:
pt_gnd_mic_swap_cnt++;
no_gnd_mic_swap_cnt = 0;
if (pt_gnd_mic_swap_cnt <
- GND_MIC_SWAP_THRESHOLD) {
+ mbhc->swap_thr) {
continue;
} else if (pt_gnd_mic_swap_cnt >
- GND_MIC_SWAP_THRESHOLD) {
+ mbhc->swap_thr) {
/*
* This is due to GND/MIC switch didn't
* work, Report unsupported plug.
@@ -735,14 +735,14 @@ correct_plug_type:
plug_type = wcd_mbhc_get_plug_from_adc(
mbhc, output_mv);
if ((no_gnd_mic_swap_cnt <
- GND_MIC_SWAP_THRESHOLD) &&
+ mbhc->swap_thr) &&
(spl_hs_count != WCD_MBHC_SPL_HS_CNT)) {
continue;
} else {
no_gnd_mic_swap_cnt = 0;
}
}
- if ((pt_gnd_mic_swap_cnt == GND_MIC_SWAP_THRESHOLD) &&
+ if ((pt_gnd_mic_swap_cnt == mbhc->swap_thr) &&
(plug_type == MBHC_PLUG_TYPE_GND_MIC_SWAP)) {
/*
* if switch is toggled, check again,
diff --git a/asoc/codecs/wcd-mbhc-legacy.c b/asoc/codecs/wcd-mbhc-legacy.c
index a72f64b4..9f6a6254 100644
--- a/asoc/codecs/wcd-mbhc-legacy.c
+++ b/asoc/codecs/wcd-mbhc-legacy.c
@@ -498,7 +498,7 @@ static void wcd_correct_swch_plug(struct work_struct *work)
do {
cross_conn = wcd_check_cross_conn(mbhc);
try++;
- } while (try < GND_MIC_SWAP_THRESHOLD);
+ } while (try < mbhc->swap_thr);
/*
* Check for cross connection 4 times.
@@ -599,10 +599,10 @@ correct_plug_type:
pt_gnd_mic_swap_cnt++;
no_gnd_mic_swap_cnt = 0;
if (pt_gnd_mic_swap_cnt <
- GND_MIC_SWAP_THRESHOLD) {
+ mbhc->swap_thr) {
continue;
} else if (pt_gnd_mic_swap_cnt >
- GND_MIC_SWAP_THRESHOLD) {
+ mbhc->swap_thr) {
/*
* This is due to GND/MIC switch didn't
* work, Report unsupported plug.
@@ -626,7 +626,7 @@ correct_plug_type:
no_gnd_mic_swap_cnt = 0;
}
}
- if ((pt_gnd_mic_swap_cnt == GND_MIC_SWAP_THRESHOLD) &&
+ if ((pt_gnd_mic_swap_cnt == mbhc->swap_thr) &&
(plug_type == MBHC_PLUG_TYPE_GND_MIC_SWAP)) {
/*
* if switch is toggled, check again,
diff --git a/asoc/codecs/wcd-mbhc-v2.c b/asoc/codecs/wcd-mbhc-v2.c
index 3c501b49..6088a1ee 100644
--- a/asoc/codecs/wcd-mbhc-v2.c
+++ b/asoc/codecs/wcd-mbhc-v2.c
@@ -1707,6 +1707,7 @@ int wcd_mbhc_start(struct wcd_mbhc *mbhc, struct wcd_mbhc_config *mbhc_cfg)
if (mbhc_cfg->enable_usbc_analog) {
dev_dbg(mbhc->codec->dev, "%s: usbc analog enabled\n",
__func__);
+ mbhc->swap_thr = GND_MIC_USBC_SWAP_THRESHOLD;
rc = wcd_mbhc_init_gpio(mbhc, mbhc_cfg,
"qcom,usbc-analog-en1-gpio",
&config->usbc_en1_gpio,
@@ -1901,6 +1902,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec,
mbhc->extn_cable_hph_rem = false;
mbhc->hph_type = WCD_MBHC_HPH_NONE;
mbhc->wcd_mbhc_regs = wcd_mbhc_regs;
+ mbhc->swap_thr = GND_MIC_SWAP_THRESHOLD;
if (mbhc->intr_ids == NULL) {
pr_err("%s: Interrupt mapping not provided\n", __func__);
diff --git a/asoc/codecs/wcd-mbhc-v2.h b/asoc/codecs/wcd-mbhc-v2.h
index 0c57eee8..bdae7763 100644
--- a/asoc/codecs/wcd-mbhc-v2.h
+++ b/asoc/codecs/wcd-mbhc-v2.h
@@ -142,6 +142,7 @@ do { \
#define SPECIAL_HS_DETECT_TIME_MS (2 * 1000)
#define MBHC_BUTTON_PRESS_THRESHOLD_MIN 250
#define GND_MIC_SWAP_THRESHOLD 4
+#define GND_MIC_USBC_SWAP_THRESHOLD 2
#define WCD_FAKE_REMOVAL_MIN_PERIOD_MS 100
#define HS_VREF_MIN_VAL 1400
#define FW_READ_ATTEMPTS 15
@@ -524,6 +525,7 @@ struct wcd_mbhc {
bool gnd_swh; /*track GND switch NC / NO */
u32 hs_thr;
u32 hph_thr;
+ u32 swap_thr;
u32 moist_vref;
u32 moist_iref;
u32 moist_rref;