OSDN Git Service

ASoC: arizona-jack: convert into a helper library for codec drivers
authorHans de Goede <hdegoede@redhat.com>
Sun, 7 Mar 2021 15:18:03 +0000 (16:18 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 24 Mar 2021 19:50:16 +0000 (19:50 +0000)
commitffcc84b9e814c8654e15e08816d0078d521a2724
treecc31cced0d9c5add944ad8f7346d51a1e13ede56
parent688c8461a425623ca6f679e6ba8965719a98def5
ASoC: arizona-jack: convert into a helper library for codec drivers

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>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210307151807.35201-10-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/Makefile
sound/soc/codecs/arizona-jack.c
sound/soc/codecs/arizona.h