diff mbox series

ASoC: da7219-aad: Fix detection of plugged jack after resume

Message ID 20241112074048.1762371-1-mmaslanka@google.com (mailing list archive)
State New
Headers show
Series ASoC: da7219-aad: Fix detection of plugged jack after resume | expand

Commit Message

Marek Maślanka Nov. 12, 2024, 7:40 a.m. UTC
Don't notify and mark the jack as unplugged during the "set_jack" action,
because this action is called very late in during the resume process, forcing
the jack to be unplugged after the resume, even if the jack is plugged in. Let's
leave the responsibility of managing the insertion of the jack to IRQ.

Signed-off-by: Marek Maslanka <mmaslanka@google.com>
---
 sound/soc/codecs/da7219-aad.c | 4 ----
 1 file changed, 4 deletions(-)

Comments

Mark Brown Nov. 12, 2024, 1:16 p.m. UTC | #1
On Tue, Nov 12, 2024 at 07:40:47AM +0000, Marek Maslanka wrote:
> Don't notify and mark the jack as unplugged during the "set_jack" action,
> because this action is called very late in during the resume process, forcing
> the jack to be unplugged after the resume, even if the jack is plugged in. Let's
> leave the responsibility of managing the insertion of the jack to IRQ.

> @@ -33,10 +33,6 @@ void da7219_aad_jack_det(struct snd_soc_component *component, struct snd_soc_jac
>  	struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
>  
>  	da7219->aad->jack = jack;
> -	da7219->aad->jack_inserted = false;
> -
> -	/* Send an initial empty report */
> -	snd_soc_jack_report(jack, 0, DA7219_AAD_REPORT_ALL_MASK);
>  
>  	/* Enable/Disable jack detection */
>  	snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_1,

This path is also (AFAICT only?) called when registering the jack by
da7219_set_jack(), I'm not immediately seeing the path for resume.  This
suggests that what's going on here is an issue with the machine driver
unregistering the jack over suspend?
Marek Maślanka Nov. 12, 2024, 2:11 p.m. UTC | #2
Hi Mark,

On Tue, Nov 12, 2024 at 2:16 PM Mark Brown <broonie@kernel.org> wrote:
>
> On Tue, Nov 12, 2024 at 07:40:47AM +0000, Marek Maslanka wrote:
> > Don't notify and mark the jack as unplugged during the "set_jack" action,
> > because this action is called very late in during the resume process, forcing
> > the jack to be unplugged after the resume, even if the jack is plugged in. Let's
> > leave the responsibility of managing the insertion of the jack to IRQ.
>
> > @@ -33,10 +33,6 @@ void da7219_aad_jack_det(struct snd_soc_component *component, struct snd_soc_jac
> >       struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
> >
> >       da7219->aad->jack = jack;
> > -     da7219->aad->jack_inserted = false;
> > -
> > -     /* Send an initial empty report */
> > -     snd_soc_jack_report(jack, 0, DA7219_AAD_REPORT_ALL_MASK);
> >
> >       /* Enable/Disable jack detection */
> >       snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_1,
>
> This path is also (AFAICT only?) called when registering the jack by
> da7219_set_jack(), I'm not immediately seeing the path for resume.  This
> suggests that what's going on here is an issue with the machine driver
> unregistering the jack over suspend?

In my case the da7219_set_jack() is directly called from avs_card_resume_post()
(sound/soc/intel/avs/boards/da7219.c) so that could be a problem too.
Mark Brown Nov. 12, 2024, 2:46 p.m. UTC | #3
On Tue, Nov 12, 2024 at 03:11:07PM +0100, Marek Maślanka wrote:
> On Tue, Nov 12, 2024 at 2:16 PM Mark Brown <broonie@kernel.org> wrote:

> > This path is also (AFAICT only?) called when registering the jack by
> > da7219_set_jack(), I'm not immediately seeing the path for resume.  This
> > suggests that what's going on here is an issue with the machine driver
> > unregistering the jack over suspend?

> In my case the da7219_set_jack() is directly called from avs_card_resume_post()
> (sound/soc/intel/avs/boards/da7219.c) so that could be a problem too.

Right, that's the machine driver unregistering the jack over suspend
thing that I mentioned.  If there's some problem with the jack detection
being left enabled over suspend then that might need to be addressed in
the CODEC driver, but probably the machine driver shouldn't be doing
what it is.
diff mbox series

Patch

diff --git a/sound/soc/codecs/da7219-aad.c b/sound/soc/codecs/da7219-aad.c
index 15e5e3eb592b3..2745b55fba662 100644
--- a/sound/soc/codecs/da7219-aad.c
+++ b/sound/soc/codecs/da7219-aad.c
@@ -33,10 +33,6 @@  void da7219_aad_jack_det(struct snd_soc_component *component, struct snd_soc_jac
 	struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
 
 	da7219->aad->jack = jack;
-	da7219->aad->jack_inserted = false;
-
-	/* Send an initial empty report */
-	snd_soc_jack_report(jack, 0, DA7219_AAD_REPORT_ALL_MASK);
 
 	/* Enable/Disable jack detection */
 	snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_1,