[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210130144352.GN106851@ediswmail.ad.cirrus.com>
Date: Sat, 30 Jan 2021 14:43:52 +0000
From: Charles Keepax <ckeepax@...nsource.cirrus.com>
To: Hans de Goede <hdegoede@...hat.com>
CC: Lee Jones <lee.jones@...aro.org>,
Cezary Rojewski <cezary.rojewski@...el.com>,
Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>,
Liam Girdwood <liam.r.girdwood@...ux.intel.com>,
Jie Yang <yang.jie@...ux.intel.com>,
Mark Brown <broonie@...nel.org>,
<patches@...nsource.cirrus.com>, <linux-kernel@...r.kernel.org>,
Andy Shevchenko <andy.shevchenko@...il.com>,
<alsa-devel@...a-project.org>
Subject: Re: [PATCH v4 02/13] extcon: arizona: Fix some issues when HPDET IRQ
fires after the jack has been unplugged
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@...il.com>
> Acked-by: Charles Keepax <ckeepax@...nsource.cirrus.com>
> Signed-off-by: Hans de Goede <hdegoede@...hat.com>
> ---
Tested-by: Charles Keepax <ckeepax@...nsource.cirrus.com>
Thanks,
Charles
Powered by blists - more mailing lists