Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9e67e5e authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: wm8994: Make sure we don't have MICBIAS on during jackdet mode

parent 6334018f
Loading
Loading
Loading
Loading
+13 −12
Original line number Original line Diff line number Diff line
@@ -3170,9 +3170,6 @@ static void wm8958_default_micdet(u16 status, void *data)
			snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
			snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
					    WM8958_MICD_ENA, 0);
					    WM8958_MICD_ENA, 0);


			wm1811_jackdet_set_mode(codec,
						WM1811_JACKDET_MODE_JACK);

			if (wm8994->pdata->jd_ext_cap) {
			if (wm8994->pdata->jd_ext_cap) {
				mutex_lock(&codec->mutex);
				mutex_lock(&codec->mutex);
				snd_soc_dapm_disable_pin(&codec->dapm,
				snd_soc_dapm_disable_pin(&codec->dapm,
@@ -3180,6 +3177,9 @@ static void wm8958_default_micdet(u16 status, void *data)
				snd_soc_dapm_sync(&codec->dapm);
				snd_soc_dapm_sync(&codec->dapm);
				mutex_unlock(&codec->mutex);
				mutex_unlock(&codec->mutex);
			}
			}

			wm1811_jackdet_set_mode(codec,
						WM1811_JACKDET_MODE_JACK);
		}
		}
	}
	}


@@ -3235,23 +3235,24 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
		snd_soc_update_bits(codec, WM8958_MICBIAS2,
		snd_soc_update_bits(codec, WM8958_MICBIAS2,
				    WM8958_MICB2_DISCH, 0);
				    WM8958_MICB2_DISCH, 0);


		/* If required for an external cap force MICBIAS on */
		if (wm8994->pdata->jd_ext_cap) {
			mutex_lock(&codec->mutex);
			snd_soc_dapm_force_enable_pin(&codec->dapm,
						      "MICBIAS2");
			snd_soc_dapm_sync(&codec->dapm);
			mutex_unlock(&codec->mutex);
		}

		/*
		/*
		 * Start off measument of microphone impedence to find
		 * Start off measument of microphone impedence to find
		 * out what's actually there.
		 * out what's actually there.
		 */
		 */
		wm8994->mic_detecting = true;
		wm8994->mic_detecting = true;
		wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_MIC);
		wm1811_jackdet_set_mode(codec, WM1811_JACKDET_MODE_MIC);

		snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
		snd_soc_update_bits(codec, WM8958_MIC_DETECT_1,
				    WM8958_MICD_ENA, WM8958_MICD_ENA);
				    WM8958_MICD_ENA, WM8958_MICD_ENA);

		/* If required for an external cap force MICBIAS on */
		if (wm8994->pdata->jd_ext_cap) {
			mutex_lock(&codec->mutex);
			snd_soc_dapm_force_enable_pin(&codec->dapm,
						      "MICBIAS2");
			snd_soc_dapm_sync(&codec->dapm);
			mutex_unlock(&codec->mutex);
		}
	} else {
	} else {
		dev_dbg(codec->dev, "Jack not detected\n");
		dev_dbg(codec->dev, "Jack not detected\n");