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 |
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?
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.
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 --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,
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(-)