Merge "ASoC: wcd-mbhc: enable micbias for special headset"
This commit is contained in:
commit
a6a02749f0
1 changed files with 27 additions and 6 deletions
|
@ -315,12 +315,17 @@ out_micb_en:
|
||||||
mbhc->is_hs_recording);
|
mbhc->is_hs_recording);
|
||||||
break;
|
break;
|
||||||
case WCD_EVENT_POST_MICBIAS_2_OFF:
|
case WCD_EVENT_POST_MICBIAS_2_OFF:
|
||||||
if (mbhc->mbhc_cb->set_auto_zeroing)
|
|
||||||
mbhc->mbhc_cb->set_auto_zeroing(codec, false);
|
|
||||||
if (mbhc->mbhc_cb->set_micbias_value)
|
|
||||||
mbhc->mbhc_cb->set_micbias_value(codec);
|
|
||||||
if (!mbhc->mbhc_cb->mbhc_micbias_control)
|
if (!mbhc->mbhc_cb->mbhc_micbias_control)
|
||||||
mbhc->is_hs_recording = false;
|
mbhc->is_hs_recording = false;
|
||||||
|
if (mbhc->micbias_enable) {
|
||||||
|
wcd_enable_curr_micbias(mbhc, WCD_MBHC_EN_MB);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mbhc->mbhc_cb->set_auto_zeroing)
|
||||||
|
mbhc->mbhc_cb->set_auto_zeroing(codec, false);
|
||||||
|
if (mbhc->mbhc_cb->set_micbias_value && !mbhc->micbias_enable)
|
||||||
|
mbhc->mbhc_cb->set_micbias_value(codec);
|
||||||
/* Enable PULL UP if PA's are enabled */
|
/* Enable PULL UP if PA's are enabled */
|
||||||
if ((test_bit(WCD_MBHC_EVENT_PA_HPHL, &mbhc->event_state)) ||
|
if ((test_bit(WCD_MBHC_EVENT_PA_HPHL, &mbhc->event_state)) ||
|
||||||
(test_bit(WCD_MBHC_EVENT_PA_HPHR,
|
(test_bit(WCD_MBHC_EVENT_PA_HPHR,
|
||||||
|
@ -578,6 +583,10 @@ static void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion,
|
||||||
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
||||||
mbhc->codec,
|
mbhc->codec,
|
||||||
MIC_BIAS_2, false);
|
MIC_BIAS_2, false);
|
||||||
|
if (mbhc->mbhc_cb->set_micbias_value) {
|
||||||
|
mbhc->mbhc_cb->set_micbias_value(mbhc->codec);
|
||||||
|
WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_MICB_CTRL, 0);
|
||||||
|
}
|
||||||
mbhc->micbias_enable = false;
|
mbhc->micbias_enable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,6 +620,12 @@ static void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion,
|
||||||
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
||||||
mbhc->codec,
|
mbhc->codec,
|
||||||
MIC_BIAS_2, false);
|
MIC_BIAS_2, false);
|
||||||
|
if (mbhc->mbhc_cb->set_micbias_value) {
|
||||||
|
mbhc->mbhc_cb->set_micbias_value(
|
||||||
|
mbhc->codec);
|
||||||
|
WCD_MBHC_REG_UPDATE_BITS(
|
||||||
|
WCD_MBHC_MICB_CTRL, 0);
|
||||||
|
}
|
||||||
mbhc->micbias_enable = false;
|
mbhc->micbias_enable = false;
|
||||||
}
|
}
|
||||||
mbhc->hph_type = WCD_MBHC_HPH_NONE;
|
mbhc->hph_type = WCD_MBHC_HPH_NONE;
|
||||||
|
@ -979,7 +994,7 @@ static bool wcd_is_special_headset(struct wcd_mbhc *mbhc)
|
||||||
mbhc->mbhc_cb->mbhc_common_micb_ctrl(codec,
|
mbhc->mbhc_cb->mbhc_common_micb_ctrl(codec,
|
||||||
MBHC_COMMON_MICB_PRECHARGE,
|
MBHC_COMMON_MICB_PRECHARGE,
|
||||||
false);
|
false);
|
||||||
if (mbhc->mbhc_cb->set_micbias_value)
|
if (mbhc->mbhc_cb->set_micbias_value && !mbhc->micbias_enable)
|
||||||
mbhc->mbhc_cb->set_micbias_value(codec);
|
mbhc->mbhc_cb->set_micbias_value(codec);
|
||||||
if (mbhc->mbhc_cb->set_auto_zeroing)
|
if (mbhc->mbhc_cb->set_auto_zeroing)
|
||||||
mbhc->mbhc_cb->set_auto_zeroing(codec, false);
|
mbhc->mbhc_cb->set_auto_zeroing(codec, false);
|
||||||
|
@ -1039,7 +1054,7 @@ static void wcd_enable_mbhc_supply(struct wcd_mbhc *mbhc,
|
||||||
wcd_enable_curr_micbias(mbhc, WCD_MBHC_EN_MB);
|
wcd_enable_curr_micbias(mbhc, WCD_MBHC_EN_MB);
|
||||||
} else {
|
} else {
|
||||||
if (plug_type == MBHC_PLUG_TYPE_HEADSET) {
|
if (plug_type == MBHC_PLUG_TYPE_HEADSET) {
|
||||||
if (mbhc->is_hs_recording)
|
if (mbhc->is_hs_recording || mbhc->micbias_enable)
|
||||||
wcd_enable_curr_micbias(mbhc,
|
wcd_enable_curr_micbias(mbhc,
|
||||||
WCD_MBHC_EN_MB);
|
WCD_MBHC_EN_MB);
|
||||||
else if ((test_bit(WCD_MBHC_EVENT_PA_HPHL,
|
else if ((test_bit(WCD_MBHC_EVENT_PA_HPHL,
|
||||||
|
@ -1192,6 +1207,9 @@ correct_plug_type:
|
||||||
if (mbhc->micbias_enable) {
|
if (mbhc->micbias_enable) {
|
||||||
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
||||||
mbhc->codec, MIC_BIAS_2, false);
|
mbhc->codec, MIC_BIAS_2, false);
|
||||||
|
if (mbhc->mbhc_cb->set_micbias_value)
|
||||||
|
mbhc->mbhc_cb->set_micbias_value(
|
||||||
|
mbhc->codec);
|
||||||
mbhc->micbias_enable = false;
|
mbhc->micbias_enable = false;
|
||||||
}
|
}
|
||||||
goto exit;
|
goto exit;
|
||||||
|
@ -1214,6 +1232,9 @@ correct_plug_type:
|
||||||
if (mbhc->micbias_enable) {
|
if (mbhc->micbias_enable) {
|
||||||
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
mbhc->mbhc_cb->mbhc_micb_ctrl_thr_mic(
|
||||||
mbhc->codec, MIC_BIAS_2, false);
|
mbhc->codec, MIC_BIAS_2, false);
|
||||||
|
if (mbhc->mbhc_cb->set_micbias_value)
|
||||||
|
mbhc->mbhc_cb->set_micbias_value(
|
||||||
|
mbhc->codec);
|
||||||
mbhc->micbias_enable = false;
|
mbhc->micbias_enable = false;
|
||||||
}
|
}
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
Loading…
Add table
Reference in a new issue