ASoC: ti: Convert TWL4030 to use GPIO descriptors
The TWL4030 is actually only ever populated from the device tree, so we can just pass the right device and headphone jack GPIO name to snd_soc_jack_add_gpios() and it will pick the right GPIO right from the device tree. The platform data patch is unused (no in-tree users of the pdata method) but these can use GPIO descriptor tables rather than global GPIO numbers if they need this. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com> Link: https://lore.kernel.org/r/20230926-descriptors-asoc-ti-v1-3-60cf4f8adbc5@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
22041ed154
commit
1b8a62937e
@@ -37,9 +37,6 @@ struct omap_tw4030_pdata {
|
||||
bool has_digimic0;
|
||||
bool has_digimic1;
|
||||
u8 has_linein;
|
||||
|
||||
/* Jack detect GPIO or <= 0 if it is not implemented */
|
||||
int jack_detect;
|
||||
};
|
||||
|
||||
#endif /* _OMAP_TWL4030_H_ */
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
#include <linux/platform_data/omap-twl4030.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/of_gpio.h>
|
||||
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
@@ -31,7 +29,6 @@
|
||||
#include "omap-mcbsp.h"
|
||||
|
||||
struct omap_twl4030 {
|
||||
int jack_detect; /* board can detect jack events */
|
||||
struct snd_soc_jack hs_jack;
|
||||
};
|
||||
|
||||
@@ -130,7 +127,7 @@ static struct snd_soc_jack_pin hs_jack_pins[] = {
|
||||
/* Headset jack detection gpios */
|
||||
static struct snd_soc_jack_gpio hs_jack_gpios[] = {
|
||||
{
|
||||
.name = "hsdet-gpio",
|
||||
.name = "ti,jack-det",
|
||||
.report = SND_JACK_HEADSET,
|
||||
.debounce_time = 200,
|
||||
},
|
||||
@@ -151,9 +148,13 @@ static int omap_twl4030_init(struct snd_soc_pcm_runtime *rtd)
|
||||
struct omap_twl4030 *priv = snd_soc_card_get_drvdata(card);
|
||||
int ret = 0;
|
||||
|
||||
/* Headset jack detection only if it is supported */
|
||||
if (priv->jack_detect > 0) {
|
||||
hs_jack_gpios[0].gpio = priv->jack_detect;
|
||||
/*
|
||||
* This is a bit of a hack, but the GPIO is optional so we
|
||||
* only want to add the jack detection if the GPIO is there.
|
||||
*/
|
||||
if (of_property_present(card->dev->of_node, "ti,jack-det-gpio")) {
|
||||
hs_jack_gpios[0].gpiod_dev = card->dev;
|
||||
hs_jack_gpios[0].idx = 0;
|
||||
|
||||
ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",
|
||||
SND_JACK_HEADSET,
|
||||
@@ -279,9 +280,6 @@ static int omap_twl4030_probe(struct platform_device *pdev)
|
||||
omap_twl4030_dai_links[1].platforms->of_node = dai_node;
|
||||
}
|
||||
|
||||
priv->jack_detect = of_get_named_gpio(node,
|
||||
"ti,jack-det-gpio", 0);
|
||||
|
||||
/* Optional: audio routing can be provided */
|
||||
prop = of_find_property(node, "ti,audio-routing", NULL);
|
||||
if (prop) {
|
||||
@@ -302,8 +300,6 @@ static int omap_twl4030_probe(struct platform_device *pdev)
|
||||
|
||||
if (!pdata->voice_connected)
|
||||
card->num_links = 1;
|
||||
|
||||
priv->jack_detect = pdata->jack_detect;
|
||||
} else {
|
||||
dev_err(&pdev->dev, "Missing pdata\n");
|
||||
return -ENODEV;
|
||||
|
||||
Reference in New Issue
Block a user