Unverified Commit e8ecffd9 authored by David Rau's avatar David Rau Committed by Mark Brown
Browse files

ASoC: da7219: Correct the process of setting up Gnd switch in AAD



Enable Gnd switch to improve stability when Jack insert event
occurs, and then disable Gnd switch after Jack type detection
is finished.

Signed-off-by: default avatarDavid Rau <David.Rau.opensource@dm.renesas.com>
Link: https://lore.kernel.org/r/20231017021258.5929-1-David.Rau.opensource@dm.renesas.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9c97790a
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -59,9 +59,6 @@ static void da7219_aad_btn_det_work(struct work_struct *work)
	bool micbias_up = false;
	int retries = 0;

	/* Disable ground switch */
	snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);

	/* Drive headphones/lineout */
	snd_soc_component_update_bits(component, DA7219_HP_L_CTRL,
			    DA7219_HP_L_AMP_OE_MASK,
@@ -155,9 +152,6 @@ static void da7219_aad_hptest_work(struct work_struct *work)
		tonegen_freq_hptest = cpu_to_le16(DA7219_AAD_HPTEST_RAMP_FREQ_INT_OSC);
	}

	/* Disable ground switch */
	snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);

	/* Ensure gain ramping at fastest rate */
	gain_ramp_ctrl = snd_soc_component_read(component, DA7219_GAIN_RAMP_CTRL);
	snd_soc_component_write(component, DA7219_GAIN_RAMP_CTRL, DA7219_GAIN_RAMP_RATE_X8);
@@ -421,6 +415,11 @@ static irqreturn_t da7219_aad_irq_thread(int irq, void *data)
			 * handle a removal, and we can check at the end of
			 * hptest if we have a valid result or not.
			 */

			cancel_delayed_work_sync(&da7219_aad->jack_det_work);
			/* Disable ground switch */
			snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);

			if (statusa & DA7219_JACK_TYPE_STS_MASK) {
				report |= SND_JACK_HEADSET;
				mask |=	SND_JACK_HEADSET | SND_JACK_LINEOUT;