Browse Source

asoc: mbhc: ignore mbhc event report during ssr

When ssr is in progress, during some race conditions
mbhc events are getting reported when codec is still
coming up. Ignore such events without reporting.

Change-Id: I3d3f78f97c2b855fc36a480f38c166bda2d979f0
Signed-off-by: Karthikeyan Mani <[email protected]>
Karthikeyan Mani 6 years ago
parent
commit
3dd07e6937
3 changed files with 8 additions and 0 deletions
  1. 6 0
      asoc/codecs/wcd-mbhc-v2.c
  2. 1 0
      asoc/codecs/wcd-mbhc-v2.h
  3. 1 0
      asoc/codecs/wcd934x/wcd934x.c

+ 6 - 0
asoc/codecs/wcd-mbhc-v2.c

@@ -776,6 +776,11 @@ void wcd_mbhc_find_plug_and_report(struct wcd_mbhc *mbhc,
 	bool anc_mic_found = false;
 	enum snd_jack_types jack_type;
 
+	if (mbhc->deinit_in_progress) {
+		pr_info("%s: mbhc deinit in progess: ignore report\n");
+		return;
+	}
+
 	pr_debug("%s: enter current_plug(%d) new_plug(%d)\n",
 		 __func__, mbhc->current_plug, plug_type);
 
@@ -1882,6 +1887,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec,
 		goto err_hphr_ocp_irq;
 	}
 
+	mbhc->deinit_in_progress = false;
 	pr_debug("%s: leave ret %d\n", __func__, ret);
 	return ret;
 

+ 1 - 0
asoc/codecs/wcd-mbhc-v2.h

@@ -582,6 +582,7 @@ struct wcd_mbhc {
 	struct completion btn_press_compl;
 	struct mutex hphl_pa_lock;
 	struct mutex hphr_pa_lock;
+	bool deinit_in_progress;
 
 	/* Holds mbhc detection method - ADC/Legacy */
 	unsigned int mbhc_detection_logic;

+ 1 - 0
asoc/codecs/wcd934x/wcd934x.c

@@ -9980,6 +9980,7 @@ static int tavil_device_down(struct wcd9xxx *wcd9xxx)
 	for (count = 0; count < NUM_CODEC_DAIS; count++)
 		priv->dai[count].bus_down_in_recovery = true;
 
+	priv->mbhc->wcd_mbhc.deinit_in_progress = true;
 	if (delayed_work_pending(&priv->spk_anc_dwork.dwork))
 		cancel_delayed_work(&priv->spk_anc_dwork.dwork);
 	for (decimator = 0; decimator < WCD934X_NUM_DECIMATORS; decimator++) {