All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Lee Jones <lee.jones@linaro.org>,
	Cezary Rojewski <cezary.rojewski@intel.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
	Liam Girdwood <liam.r.girdwood@linux.intel.com>,
	Jie Yang <yang.jie@linux.intel.com>,
	Mark Brown <broonie@kernel.org>, <patches@opensource.cirrus.com>,
	<linux-kernel@vger.kernel.org>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	<alsa-devel@alsa-project.org>
Subject: Re: [PATCH v4 02/13] extcon: arizona: Fix some issues when HPDET IRQ fires after the jack has been unplugged
Date: Sat, 30 Jan 2021 14:43:52 +0000	[thread overview]
Message-ID: <20210130144352.GN106851@ediswmail.ad.cirrus.com> (raw)
In-Reply-To: <20210123121313.79530-3-hdegoede@redhat.com>

On Sat, Jan 23, 2021 at 01:13:02PM +0100, Hans de Goede wrote:
> When the jack is partially inserted and then removed again it may be
> removed while the hpdet code is running. In this case the following
> may happen:
> 
> 1. The "JACKDET rise" or ""JACKDET fall" IRQ triggers
> 2. arizona_jackdet runs and takes info->lock
> 3. The "HPDET" IRQ triggers
> 4. arizona_hpdet_irq runs, blocks on info->lock
> 5. arizona_jackdet calls arizona_stop_mic() and clears info->hpdet_done
> 6. arizona_jackdet releases info->lock
> 7. arizona_hpdet_irq now can continue running and:
> 7.1 Calls arizona_start_mic() (if a mic was detected)
> 7.2 sets info->hpdet_done
> 
> Step 7 is undesirable / a bug:
> 7.1 causes the device to stay in a high power-state (with MICVDD enabled)
> 7.2 causes hpdet to not run on the next jack insertion, which in turn
>     causes the EXTCON_JACK_HEADPHONE state to never get set
> 
> This fixes both issues by skipping these 2 steps when arizona_hpdet_irq
> runs after the jack has been unplugged.
> 
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---

Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>

Thanks,
Charles

WARNING: multiple messages have this Message-ID (diff)
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Cezary Rojewski <cezary.rojewski@intel.com>,
	alsa-devel@alsa-project.org, patches@opensource.cirrus.com,
	Jie Yang <yang.jie@linux.intel.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>,
	linux-kernel@vger.kernel.org,
	Liam Girdwood <liam.r.girdwood@linux.intel.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Mark Brown <broonie@kernel.org>, Lee Jones <lee.jones@linaro.org>
Subject: Re: [PATCH v4 02/13] extcon: arizona: Fix some issues when HPDET IRQ fires after the jack has been unplugged
Date: Sat, 30 Jan 2021 14:43:52 +0000	[thread overview]
Message-ID: <20210130144352.GN106851@ediswmail.ad.cirrus.com> (raw)
In-Reply-To: <20210123121313.79530-3-hdegoede@redhat.com>

On Sat, Jan 23, 2021 at 01:13:02PM +0100, Hans de Goede wrote:
> When the jack is partially inserted and then removed again it may be
> removed while the hpdet code is running. In this case the following
> may happen:
> 
> 1. The "JACKDET rise" or ""JACKDET fall" IRQ triggers
> 2. arizona_jackdet runs and takes info->lock
> 3. The "HPDET" IRQ triggers
> 4. arizona_hpdet_irq runs, blocks on info->lock
> 5. arizona_jackdet calls arizona_stop_mic() and clears info->hpdet_done
> 6. arizona_jackdet releases info->lock
> 7. arizona_hpdet_irq now can continue running and:
> 7.1 Calls arizona_start_mic() (if a mic was detected)
> 7.2 sets info->hpdet_done
> 
> Step 7 is undesirable / a bug:
> 7.1 causes the device to stay in a high power-state (with MICVDD enabled)
> 7.2 causes hpdet to not run on the next jack insertion, which in turn
>     causes the EXTCON_JACK_HEADPHONE state to never get set
> 
> This fixes both issues by skipping these 2 steps when arizona_hpdet_irq
> runs after the jack has been unplugged.
> 
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---

Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>

Thanks,
Charles

  reply	other threads:[~2021-01-30 16:06 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-23 12:13 [PATCH v4 00/13] MFD/extcon/ASoC: Rework arizona codec jack-detect support Hans de Goede
2021-01-23 12:13 ` Hans de Goede
2021-01-23 12:13 ` [PATCH v4 01/13] mfd: arizona: Drop arizona-extcon cells Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 14:41   ` Charles Keepax
2021-01-30 14:41     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 02/13] extcon: arizona: Fix some issues when HPDET IRQ fires after the jack has been unplugged Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 14:43   ` Charles Keepax [this message]
2021-01-30 14:43     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 03/13] extcon: arizona: Fix various races on driver unbind Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 14:56   ` Charles Keepax
2021-01-30 14:56     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 04/13] extcon: arizona: Fix flags parameter to the gpiod_get("wlf,micd-pol") call Hans de Goede
2021-01-23 12:13   ` [PATCH v4 04/13] extcon: arizona: Fix flags parameter to the gpiod_get("wlf, micd-pol") call Hans de Goede
2021-01-23 12:13 ` [PATCH v4 05/13] extcon: arizona: Always use pm_runtime_get_sync() when we need the device to be awake Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-23 16:41   ` Charles Keepax
2021-01-23 16:41     ` Charles Keepax
2021-01-30 14:57   ` Charles Keepax
2021-01-30 14:57     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 06/13] ASoC/extcon: arizona: Move arizona jack code to sound/soc/codecs/arizona-jack.c Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 14:58   ` Charles Keepax
2021-01-30 14:58     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 07/13] ASoC: arizona-jack: Move jack-detect variables to struct arizona_priv Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 15:15   ` Charles Keepax
2021-01-30 15:15     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 08/13] ASoC: arizona-jack: Use arizona->dev for runtime-pm Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 15:16   ` Charles Keepax
2021-01-30 15:16     ` Charles Keepax
2021-01-23 12:13 ` [PATCH v4 09/13] ASoC: arizona-jack: convert into a helper library for codec drivers Hans de Goede
2021-01-23 12:13   ` Hans de Goede
2021-01-30 15:25   ` Charles Keepax
2021-01-30 15:25     ` Charles Keepax
2021-01-23 12:17 ` [PATCH v4 10/13] ASoC: arizona-jack: Use snd_soc_jack to report jack events Hans de Goede
2021-01-23 12:17   ` Hans de Goede
2021-01-23 12:17   ` [PATCH v4 11/13] ASoC: arizona-jack: Cleanup logging Hans de Goede
2021-01-23 12:17     ` Hans de Goede
2021-01-24 19:53     ` Andy Shevchenko
2021-01-24 19:53       ` Andy Shevchenko
2021-01-24 21:13       ` Hans de Goede
2021-01-24 21:13         ` Hans de Goede
2021-01-30 15:30     ` Charles Keepax
2021-01-30 15:30       ` Charles Keepax
2021-01-23 12:17   ` [PATCH v4 12/13] ASoC: arizona: Make the wm5102, wm5110, wm8997 and wm8998 drivers use the new jack library Hans de Goede
2021-01-23 12:17     ` Hans de Goede
2021-01-30 15:32     ` Charles Keepax
2021-01-30 15:32       ` Charles Keepax
2021-01-23 12:17   ` [PATCH v4 13/13] ASoC: Intel: bytcr_wm5102: Add jack detect support Hans de Goede
2021-01-23 12:17     ` Hans de Goede
2021-01-30 15:40     ` Charles Keepax
2021-01-30 15:40       ` Charles Keepax
2021-01-30 18:26       ` Hans de Goede
2021-01-30 18:26         ` Hans de Goede
2021-01-30 15:28   ` [PATCH v4 10/13] ASoC: arizona-jack: Use snd_soc_jack to report jack events Charles Keepax
2021-01-30 15:28     ` Charles Keepax
2021-02-04 11:05 ` [PATCH v4 00/13] MFD/extcon/ASoC: Rework arizona codec jack-detect support Lee Jones
2021-02-04 11:05   ` Lee Jones
2021-02-04 11:09   ` Hans de Goede
2021-02-04 11:09     ` Hans de Goede
2021-02-04 11:13     ` Lee Jones
2021-02-04 11:13       ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210130144352.GN106851@ediswmail.ad.cirrus.com \
    --to=ckeepax@opensource.cirrus.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=andy.shevchenko@gmail.com \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=hdegoede@redhat.com \
    --cc=lee.jones@linaro.org \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@opensource.cirrus.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=yang.jie@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.