mbox series

[v4,00/13] MFD/extcon/ASoC: Rework arizona codec jack-detect support

Message ID 20210123121313.79530-1-hdegoede@redhat.com
Headers show
Series MFD/extcon/ASoC: Rework arizona codec jack-detect support | expand

Message

Hans de Goede Jan. 23, 2021, 12:13 p.m. UTC
Hi all,

Here is v4 of my series to rework the arizona codec jack-detect support
to use the snd_soc_jack helpers instead of direct extcon reporting.

This is done by reworking the extcon driver into an arizona-jackdet
library and then modifying the codec drivers to use that directly,
replacing the old separate extcon child-devices and extcon-driver.

This brings the arizona-codec jack-detect handling inline with how
all other ASoC codec driver do this. This was developed and tested on
a Lenovo Yoga Tablet 1051L with a WM5102 codec.

There are various interdependencies between the patches in this
series, so IMHO it would be best if this entire series would be merged
through the MFD tree.

Note this series applies on top of my "[PATCH v4 0/5] MFD/ASoC: Add
support for Intel Bay Trail boards with WM5102 codec" series.

Changes in v4:
- Add sound/soc/codecs/arizona-jack.c to the WOLFSON MICROELECTRONICS DRIVERS
  MAINTAINERS section
- Small codying style tweaks to the "ASoC: arizona-jack: Cleanup logging" patch

Changes in v3:
- Move the bugfix patches to earlier in the series so that they
  apply to drivers/extcon/extcon-arizona.c so that they can be
  cherry-picked into the stable series
- Split runtime_pm_get -> runtime_pm_get_sync changes out into their
  own patch
- Simply move drivers/extcon/extcon-arizona.c to
  sound/soc/codecs/arizona-jack.c instead of first adding arizona-jack.c
  as a copy and then later removing extcon-arizona.c
- Some other small tweaks, see individual patch changelogs

Regards,

Hans


Hans de Goede (13):
  mfd: arizona: Drop arizona-extcon cells
  extcon: arizona: Fix some issues when HPDET IRQ fires after the jack
    has been unplugged
  extcon: arizona: Fix various races on driver unbind
  extcon: arizona: Fix flags parameter to the gpiod_get("wlf,micd-pol")
    call
  extcon: arizona: Always use pm_runtime_get_sync() when we need the
    device to be awake
  ASoC/extcon: arizona: Move arizona jack code to
    sound/soc/codecs/arizona-jack.c
  ASoC: arizona-jack: Move jack-detect variables to struct arizona_priv
  ASoC: arizona-jack: Use arizona->dev for runtime-pm
  ASoC: arizona-jack: convert into a helper library for codec drivers
  ASoC: arizona-jack: Use snd_soc_jack to report jack events
  ASoC: arizona-jack: Cleanup logging
  ASoC: arizona: Make the wm5102, wm5110, wm8997 and wm8998 drivers use
    the new jack library
  ASoC: Intel: bytcr_wm5102: Add jack detect support

 MAINTAINERS                                   |   3 +-
 drivers/extcon/Kconfig                        |   8 -
 drivers/extcon/Makefile                       |   1 -
 drivers/mfd/arizona-core.c                    |  20 -
 sound/soc/codecs/Makefile                     |   2 +-
 .../soc/codecs/arizona-jack.c                 | 577 +++++++-----------
 sound/soc/codecs/arizona.h                    |  44 ++
 sound/soc/codecs/wm5102.c                     |  12 +-
 sound/soc/codecs/wm5110.c                     |  12 +-
 sound/soc/codecs/wm8997.c                     |  14 +-
 sound/soc/codecs/wm8998.c                     |   9 +
 sound/soc/intel/boards/bytcr_wm5102.c         |  28 +-
 12 files changed, 325 insertions(+), 405 deletions(-)
 rename drivers/extcon/extcon-arizona.c => sound/soc/codecs/arizona-jack.c (76%)

Comments

Charles Keepax Jan. 30, 2021, 2:41 p.m. UTC | #1
On Sat, Jan 23, 2021 at 01:13:01PM +0100, Hans de Goede wrote:
> The arizona jack-dection handling is being reworked so that the
> codec-child-device drivers directly handle jack-detect themselves,
> so it is no longer necessary to instantiate "arizona-extcon"
> child-devices.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---

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

Thanks,
Charles
Charles Keepax Jan. 30, 2021, 2:58 p.m. UTC | #2
On Sat, Jan 23, 2021 at 01:13:06PM +0100, Hans de Goede wrote:
> The jack handling for arizona codecs is being refactored so that it is
> done directly by the codec drivers, instead of having an extcon-driver
> bind to a separate "arizona-extcon" child-device for this.
> 
> drivers/mfd/arizona-core.c has already been updated to no longer
> instantiate an "arizona-extcon" child-device for the arizona codecs.
> 
> This means that the "arizona-extcon" driver is no longer useful
> (there are no longer any devices for it to bind to).
> 
> This commit drops the extcon Kconfig / Makefile bits and moves
> drivers/extcon/extcon-arizona.c to sound/soc/codecs/arizona-jack.c .
> 
> This is a preparation patch for converting the arizona extcon-driver into
> a helper library for letting the arizona codec-drivers directly report jack
> state through the standard sound/soc/soc-jack.c functions.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---

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

Thanks,
Charles
Charles Keepax Jan. 30, 2021, 3:15 p.m. UTC | #3
On Sat, Jan 23, 2021 at 01:13:07PM +0100, Hans de Goede wrote:
> Move all the jack-detect variables from struct arizona_extcon_info to
> struct arizona_priv.
> 
> This is part of a patch series converting the arizona extcon driver into
> a helper library for letting the arizona codec-drivers directly report jack
> state through the standard sound/soc/soc-jack.c functions.
> 
> 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
Charles Keepax Jan. 30, 2021, 3:25 p.m. UTC | #4
On Sat, Jan 23, 2021 at 01:13:09PM +0100, Hans de Goede wrote:
> Convert the arizona extcon driver into a helper library for direct use
> from the arizona codec-drivers, rather then being bound to a separate
> MFD cell.
> 
> Note the probe (and remove) sequence is split into 2 parts:
> 
> 1. The arizona_jack_codec_dev_probe() function inits a bunch of
> jack-detect specific variables in struct arizona_priv and tries to get
> a number of resources where getting them may fail with -EPROBE_DEFER.
> 
> 2. Then once the machine driver has create a snd_sock_jack through
> snd_soc_card_jack_new() it calls snd_soc_component_set_jack() on
> the codec component, which will call the new arizona_jack_set_jack(),
> which sets up jack-detection and requests the IRQs.
> 
> This split is necessary, because the IRQ handlers need access to the
> arizona->dapm pointer and the snd_sock_jack which are not available
> when the codec-driver's probe function runs.
> 
> Note this requires that machine-drivers for codecs which are converted
> to use the new helper functions from arizona-jack.c are modified to
> create a snd_soc_jack through snd_soc_card_jack_new() and register
> this jack with the codec through snd_soc_component_set_jack().
> 
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---

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

Thanks,
Charles
Lee Jones Feb. 4, 2021, 11:05 a.m. UTC | #5
On Sat, 23 Jan 2021, Hans de Goede wrote:

> Hi all,
> 
> Here is v4 of my series to rework the arizona codec jack-detect support
> to use the snd_soc_jack helpers instead of direct extcon reporting.
> 
> This is done by reworking the extcon driver into an arizona-jackdet
> library and then modifying the codec drivers to use that directly,
> replacing the old separate extcon child-devices and extcon-driver.
> 
> This brings the arizona-codec jack-detect handling inline with how
> all other ASoC codec driver do this. This was developed and tested on
> a Lenovo Yoga Tablet 1051L with a WM5102 codec.
> 
> There are various interdependencies between the patches in this
> series, so IMHO it would be best if this entire series would be merged
> through the MFD tree.
> 
> Note this series applies on top of my "[PATCH v4 0/5] MFD/ASoC: Add
> support for Intel Bay Trail boards with WM5102 codec" series.
> 
> Changes in v4:
> - Add sound/soc/codecs/arizona-jack.c to the WOLFSON MICROELECTRONICS DRIVERS
>   MAINTAINERS section
> - Small codying style tweaks to the "ASoC: arizona-jack: Cleanup logging" patch
> 
> Changes in v3:
> - Move the bugfix patches to earlier in the series so that they
>   apply to drivers/extcon/extcon-arizona.c so that they can be
>   cherry-picked into the stable series
> - Split runtime_pm_get -> runtime_pm_get_sync changes out into their
>   own patch
> - Simply move drivers/extcon/extcon-arizona.c to
>   sound/soc/codecs/arizona-jack.c instead of first adding arizona-jack.c
>   as a copy and then later removing extcon-arizona.c
> - Some other small tweaks, see individual patch changelogs
> 
> Regards,
> 
> Hans
> 
> 
> Hans de Goede (13):
>   mfd: arizona: Drop arizona-extcon cells
>   extcon: arizona: Fix some issues when HPDET IRQ fires after the jack
>     has been unplugged
>   extcon: arizona: Fix various races on driver unbind
>   extcon: arizona: Fix flags parameter to the gpiod_get("wlf,micd-pol")
>     call
>   extcon: arizona: Always use pm_runtime_get_sync() when we need the
>     device to be awake
>   ASoC/extcon: arizona: Move arizona jack code to
>     sound/soc/codecs/arizona-jack.c
>   ASoC: arizona-jack: Move jack-detect variables to struct arizona_priv
>   ASoC: arizona-jack: Use arizona->dev for runtime-pm
>   ASoC: arizona-jack: convert into a helper library for codec drivers
>   ASoC: arizona-jack: Use snd_soc_jack to report jack events
>   ASoC: arizona-jack: Cleanup logging
>   ASoC: arizona: Make the wm5102, wm5110, wm8997 and wm8998 drivers use
>     the new jack library

>   ASoC: Intel: bytcr_wm5102: Add jack detect support

Can't apply this patch ...

>  MAINTAINERS                                   |   3 +-
>  drivers/extcon/Kconfig                        |   8 -
>  drivers/extcon/Makefile                       |   1 -
>  drivers/mfd/arizona-core.c                    |  20 -
>  sound/soc/codecs/Makefile                     |   2 +-
>  .../soc/codecs/arizona-jack.c                 | 577 +++++++-----------
>  sound/soc/codecs/arizona.h                    |  44 ++
>  sound/soc/codecs/wm5102.c                     |  12 +-
>  sound/soc/codecs/wm5110.c                     |  12 +-
>  sound/soc/codecs/wm8997.c                     |  14 +-
>  sound/soc/codecs/wm8998.c                     |   9 +
>  sound/soc/intel/boards/bytcr_wm5102.c         |  28 +-

... since this file doesn't exist?

>  12 files changed, 325 insertions(+), 405 deletions(-)
>  rename drivers/extcon/extcon-arizona.c => sound/soc/codecs/arizona-jack.c (76%)
>
Hans de Goede Feb. 4, 2021, 11:09 a.m. UTC | #6
Hi,

On 2/4/21 12:05 PM, Lee Jones wrote:
> On Sat, 23 Jan 2021, Hans de Goede wrote:
> 
>> Hi all,
>>
>> Here is v4 of my series to rework the arizona codec jack-detect support
>> to use the snd_soc_jack helpers instead of direct extcon reporting.
>>
>> This is done by reworking the extcon driver into an arizona-jackdet
>> library and then modifying the codec drivers to use that directly,
>> replacing the old separate extcon child-devices and extcon-driver.
>>
>> This brings the arizona-codec jack-detect handling inline with how
>> all other ASoC codec driver do this. This was developed and tested on
>> a Lenovo Yoga Tablet 1051L with a WM5102 codec.
>>
>> There are various interdependencies between the patches in this
>> series, so IMHO it would be best if this entire series would be merged
>> through the MFD tree.
>>
>> Note this series applies on top of my "[PATCH v4 0/5] MFD/ASoC: Add
>> support for Intel Bay Trail boards with WM5102 codec" series.
>>
>> Changes in v4:
>> - Add sound/soc/codecs/arizona-jack.c to the WOLFSON MICROELECTRONICS DRIVERS
>>   MAINTAINERS section
>> - Small codying style tweaks to the "ASoC: arizona-jack: Cleanup logging" patch
>>
>> Changes in v3:
>> - Move the bugfix patches to earlier in the series so that they
>>   apply to drivers/extcon/extcon-arizona.c so that they can be
>>   cherry-picked into the stable series
>> - Split runtime_pm_get -> runtime_pm_get_sync changes out into their
>>   own patch
>> - Simply move drivers/extcon/extcon-arizona.c to
>>   sound/soc/codecs/arizona-jack.c instead of first adding arizona-jack.c
>>   as a copy and then later removing extcon-arizona.c
>> - Some other small tweaks, see individual patch changelogs
>>
>> Regards,
>>
>> Hans
>>
>>
>> Hans de Goede (13):
>>   mfd: arizona: Drop arizona-extcon cells
>>   extcon: arizona: Fix some issues when HPDET IRQ fires after the jack
>>     has been unplugged
>>   extcon: arizona: Fix various races on driver unbind
>>   extcon: arizona: Fix flags parameter to the gpiod_get("wlf,micd-pol")
>>     call
>>   extcon: arizona: Always use pm_runtime_get_sync() when we need the
>>     device to be awake
>>   ASoC/extcon: arizona: Move arizona jack code to
>>     sound/soc/codecs/arizona-jack.c
>>   ASoC: arizona-jack: Move jack-detect variables to struct arizona_priv
>>   ASoC: arizona-jack: Use arizona->dev for runtime-pm
>>   ASoC: arizona-jack: convert into a helper library for codec drivers
>>   ASoC: arizona-jack: Use snd_soc_jack to report jack events
>>   ASoC: arizona-jack: Cleanup logging
>>   ASoC: arizona: Make the wm5102, wm5110, wm8997 and wm8998 drivers use
>>     the new jack library
> 
>>   ASoC: Intel: bytcr_wm5102: Add jack detect support
> 
> Can't apply this patch ...
> 
>>  MAINTAINERS                                   |   3 +-
>>  drivers/extcon/Kconfig                        |   8 -
>>  drivers/extcon/Makefile                       |   1 -
>>  drivers/mfd/arizona-core.c                    |  20 -
>>  sound/soc/codecs/Makefile                     |   2 +-
>>  .../soc/codecs/arizona-jack.c                 | 577 +++++++-----------
>>  sound/soc/codecs/arizona.h                    |  44 ++
>>  sound/soc/codecs/wm5102.c                     |  12 +-
>>  sound/soc/codecs/wm5110.c                     |  12 +-
>>  sound/soc/codecs/wm8997.c                     |  14 +-
>>  sound/soc/codecs/wm8998.c                     |   9 +
>>  sound/soc/intel/boards/bytcr_wm5102.c         |  28 +-
> 
> ... since this file doesn't exist?

As mentioned this is a follow-up series on top of the:

"[PATCH v4 0/5] MFD/ASoC: Add support for Intel Bay Trail boards with WM5102 codec"

Series, that series adds that file.

Regards,

Hans

p.s.

Do you want a resend of this one, with the new *-bys added too ?
Lee Jones Feb. 4, 2021, 11:13 a.m. UTC | #7
On Thu, 04 Feb 2021, Hans de Goede wrote:

> Hi,
> 
> On 2/4/21 12:05 PM, Lee Jones wrote:
> > On Sat, 23 Jan 2021, Hans de Goede wrote:
> > 
> >> Hi all,
> >>
> >> Here is v4 of my series to rework the arizona codec jack-detect support
> >> to use the snd_soc_jack helpers instead of direct extcon reporting.
> >>
> >> This is done by reworking the extcon driver into an arizona-jackdet
> >> library and then modifying the codec drivers to use that directly,
> >> replacing the old separate extcon child-devices and extcon-driver.
> >>
> >> This brings the arizona-codec jack-detect handling inline with how
> >> all other ASoC codec driver do this. This was developed and tested on
> >> a Lenovo Yoga Tablet 1051L with a WM5102 codec.
> >>
> >> There are various interdependencies between the patches in this
> >> series, so IMHO it would be best if this entire series would be merged
> >> through the MFD tree.
> >>
> >> Note this series applies on top of my "[PATCH v4 0/5] MFD/ASoC: Add
> >> support for Intel Bay Trail boards with WM5102 codec" series.
> >>
> >> Changes in v4:
> >> - Add sound/soc/codecs/arizona-jack.c to the WOLFSON MICROELECTRONICS DRIVERS
> >>   MAINTAINERS section
> >> - Small codying style tweaks to the "ASoC: arizona-jack: Cleanup logging" patch
> >>
> >> Changes in v3:
> >> - Move the bugfix patches to earlier in the series so that they
> >>   apply to drivers/extcon/extcon-arizona.c so that they can be
> >>   cherry-picked into the stable series
> >> - Split runtime_pm_get -> runtime_pm_get_sync changes out into their
> >>   own patch
> >> - Simply move drivers/extcon/extcon-arizona.c to
> >>   sound/soc/codecs/arizona-jack.c instead of first adding arizona-jack.c
> >>   as a copy and then later removing extcon-arizona.c
> >> - Some other small tweaks, see individual patch changelogs
> >>
> >> Regards,
> >>
> >> Hans
> >>
> >>
> >> Hans de Goede (13):
> >>   mfd: arizona: Drop arizona-extcon cells
> >>   extcon: arizona: Fix some issues when HPDET IRQ fires after the jack
> >>     has been unplugged
> >>   extcon: arizona: Fix various races on driver unbind
> >>   extcon: arizona: Fix flags parameter to the gpiod_get("wlf,micd-pol")
> >>     call
> >>   extcon: arizona: Always use pm_runtime_get_sync() when we need the
> >>     device to be awake
> >>   ASoC/extcon: arizona: Move arizona jack code to
> >>     sound/soc/codecs/arizona-jack.c
> >>   ASoC: arizona-jack: Move jack-detect variables to struct arizona_priv
> >>   ASoC: arizona-jack: Use arizona->dev for runtime-pm
> >>   ASoC: arizona-jack: convert into a helper library for codec drivers
> >>   ASoC: arizona-jack: Use snd_soc_jack to report jack events
> >>   ASoC: arizona-jack: Cleanup logging
> >>   ASoC: arizona: Make the wm5102, wm5110, wm8997 and wm8998 drivers use
> >>     the new jack library
> > 
> >>   ASoC: Intel: bytcr_wm5102: Add jack detect support
> > 
> > Can't apply this patch ...
> > 
> >>  MAINTAINERS                                   |   3 +-
> >>  drivers/extcon/Kconfig                        |   8 -
> >>  drivers/extcon/Makefile                       |   1 -
> >>  drivers/mfd/arizona-core.c                    |  20 -
> >>  sound/soc/codecs/Makefile                     |   2 +-
> >>  .../soc/codecs/arizona-jack.c                 | 577 +++++++-----------
> >>  sound/soc/codecs/arizona.h                    |  44 ++
> >>  sound/soc/codecs/wm5102.c                     |  12 +-
> >>  sound/soc/codecs/wm5110.c                     |  12 +-
> >>  sound/soc/codecs/wm8997.c                     |  14 +-
> >>  sound/soc/codecs/wm8998.c                     |   9 +
> >>  sound/soc/intel/boards/bytcr_wm5102.c         |  28 +-
> > 
> > ... since this file doesn't exist?
> 
> As mentioned this is a follow-up series on top of the:
> 
> "[PATCH v4 0/5] MFD/ASoC: Add support for Intel Bay Trail boards with WM5102 codec"
> 
> Series, that series adds that file.

Okay, that makes sense.  Thanks.

> Regards,
> 
> Hans
> 
> p.s.
> 
> Do you want a resend of this one, with the new *-bys added too ?

Only this one please.

I'll try to take the other one through now.