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

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.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9c97790a
...@@ -59,9 +59,6 @@ static void da7219_aad_btn_det_work(struct work_struct *work) ...@@ -59,9 +59,6 @@ static void da7219_aad_btn_det_work(struct work_struct *work)
bool micbias_up = false; bool micbias_up = false;
int retries = 0; int retries = 0;
/* Disable ground switch */
snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);
/* Drive headphones/lineout */ /* Drive headphones/lineout */
snd_soc_component_update_bits(component, DA7219_HP_L_CTRL, snd_soc_component_update_bits(component, DA7219_HP_L_CTRL,
DA7219_HP_L_AMP_OE_MASK, DA7219_HP_L_AMP_OE_MASK,
...@@ -155,9 +152,6 @@ static void da7219_aad_hptest_work(struct work_struct *work) ...@@ -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); 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 */ /* Ensure gain ramping at fastest rate */
gain_ramp_ctrl = snd_soc_component_read(component, DA7219_GAIN_RAMP_CTRL); 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); 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) ...@@ -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 * handle a removal, and we can check at the end of
* hptest if we have a valid result or not. * 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) { if (statusa & DA7219_JACK_TYPE_STS_MASK) {
report |= SND_JACK_HEADSET; report |= SND_JACK_HEADSET;
mask |= SND_JACK_HEADSET | SND_JACK_LINEOUT; mask |= SND_JACK_HEADSET | SND_JACK_LINEOUT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment