Merge "ASoC: wcd: Avoid multiple insertion/removals for aux cable"

This commit is contained in:
Linux Build Service Account 2018-01-03 13:08:44 -08:00 • committed by Gerrit - the friendly Code Review server
commit e241554a95
3 changed files with 9 additions and 1 deletions

View file

@ -688,7 +688,11 @@ correct_plug_type:
if (!wrk_complete && mbhc->btn_press_intr) {
pr_debug("%s: Can be slow insertion of headphone\n", __func__);
wcd_cancel_btn_work(mbhc);
plug_type = MBHC_PLUG_TYPE_HEADPHONE;
/* Report as headphone only if previously
* not reported as lineout
*/
if (!mbhc->force_linein)
plug_type = MBHC_PLUG_TYPE_HEADPHONE;
}
/*
* If plug_tye is headset, we might have already reported either in

View file

@ -605,6 +605,7 @@ void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion,
hphrocp_off_report(mbhc, SND_JACK_OC_HPHR);
hphlocp_off_report(mbhc, SND_JACK_OC_HPHL);
mbhc->current_plug = MBHC_PLUG_TYPE_NONE;
mbhc->force_linein = false;
} else {
/*
* Report removal of current jack type.
@ -657,6 +658,7 @@ void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion,
SND_JACK_LINEOUT |
SND_JACK_ANC_HEADPHONE |
SND_JACK_UNSUPPORTED);
mbhc->force_linein = false;
}
if (mbhc->current_plug == MBHC_PLUG_TYPE_HEADSET &&
@ -699,6 +701,7 @@ void wcd_mbhc_report_plug(struct wcd_mbhc *mbhc, int insertion,
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;
if (mbhc->hph_status) {
mbhc->hph_status &= ~(SND_JACK_HEADSET |

View file

@ -589,6 +589,7 @@ struct wcd_mbhc {
struct work_struct usbc_analog_work;
struct wcd_mbhc_fn *mbhc_fn;
bool force_linein;
};
void wcd_mbhc_find_plug_and_report(struct wcd_mbhc *mbhc,