This is a note to let you know that I've just added the patch titled Revert "ASoC: ti: Convert Pandora ASoC to GPIO descriptors" to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: revert-asoc-ti-convert-pandora-asoc-to-gpio-descriptors.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 8e977ba87ff38f177906272496e6d10dbc9cc0c5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Date: Mon, 29 Apr 2024 12:21:58 +0200 Subject: Revert "ASoC: ti: Convert Pandora ASoC to GPIO descriptors" From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> This reverts commit 0f4048e1a0c6e9d3d31ce5b684600fd137cebfca which is commit 319e6ac143b9e9048e527ab9dd2aabb8fdf3d60f upstream. It breaks the 6.1.y build, so needs to be reverted. Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> Cc: Jarkko Nikula <jarkko.nikula@xxxxxxxxxx> Cc: Mark Brown <broonie@xxxxxxxxxx> Cc: Sasha Levin <sashal@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/arm/mach-omap2/pdata-quirks.c | 10 ----- sound/soc/ti/omap3pandora.c | 63 +++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 33 deletions(-) --- a/arch/arm/mach-omap2/pdata-quirks.c +++ b/arch/arm/mach-omap2/pdata-quirks.c @@ -257,19 +257,9 @@ static struct platform_device pandora_ba .id = -1, }; -static struct gpiod_lookup_table pandora_soc_audio_gpios = { - .dev_id = "soc-audio", - .table = { - GPIO_LOOKUP("gpio-112-127", 6, "dac", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("gpio-0-15", 14, "amp", GPIO_ACTIVE_HIGH), - { } - }, -}; - static void __init omap3_pandora_legacy_init(void) { platform_device_register(&pandora_backlight); - gpiod_add_lookup_table(&pandora_soc_audio_gpios); } #endif /* CONFIG_ARCH_OMAP3 */ --- a/sound/soc/ti/omap3pandora.c +++ b/sound/soc/ti/omap3pandora.c @@ -7,7 +7,7 @@ #include <linux/clk.h> #include <linux/platform_device.h> -#include <linux/gpio/consumer.h> +#include <linux/gpio.h> #include <linux/delay.h> #include <linux/regulator/consumer.h> #include <linux/module.h> @@ -21,11 +21,12 @@ #include "omap-mcbsp.h" +#define OMAP3_PANDORA_DAC_POWER_GPIO 118 +#define OMAP3_PANDORA_AMP_POWER_GPIO 14 + #define PREFIX "ASoC omap3pandora: " static struct regulator *omap3pandora_dac_reg; -static struct gpio_desc *dac_power_gpio; -static struct gpio_desc *amp_power_gpio; static int omap3pandora_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) @@ -77,9 +78,9 @@ static int omap3pandora_dac_event(struct return ret; } mdelay(1); - gpiod_set_value(dac_power_gpio, 1); + gpio_set_value(OMAP3_PANDORA_DAC_POWER_GPIO, 1); } else { - gpiod_set_value(dac_power_gpio, 0); + gpio_set_value(OMAP3_PANDORA_DAC_POWER_GPIO, 0); mdelay(1); regulator_disable(omap3pandora_dac_reg); } @@ -91,9 +92,9 @@ static int omap3pandora_hp_event(struct struct snd_kcontrol *k, int event) { if (SND_SOC_DAPM_EVENT_ON(event)) - gpiod_set_value(amp_power_gpio, 1); + gpio_set_value(OMAP3_PANDORA_AMP_POWER_GPIO, 1); else - gpiod_set_value(amp_power_gpio, 0); + gpio_set_value(OMAP3_PANDORA_AMP_POWER_GPIO, 0); return 0; } @@ -228,10 +229,35 @@ static int __init omap3pandora_soc_init( pr_info("OMAP3 Pandora SoC init\n"); + ret = gpio_request(OMAP3_PANDORA_DAC_POWER_GPIO, "dac_power"); + if (ret) { + pr_err(PREFIX "Failed to get DAC power GPIO\n"); + return ret; + } + + ret = gpio_direction_output(OMAP3_PANDORA_DAC_POWER_GPIO, 0); + if (ret) { + pr_err(PREFIX "Failed to set DAC power GPIO direction\n"); + goto fail0; + } + + ret = gpio_request(OMAP3_PANDORA_AMP_POWER_GPIO, "amp_power"); + if (ret) { + pr_err(PREFIX "Failed to get amp power GPIO\n"); + goto fail0; + } + + ret = gpio_direction_output(OMAP3_PANDORA_AMP_POWER_GPIO, 0); + if (ret) { + pr_err(PREFIX "Failed to set amp power GPIO direction\n"); + goto fail1; + } + omap3pandora_snd_device = platform_device_alloc("soc-audio", -1); if (omap3pandora_snd_device == NULL) { pr_err(PREFIX "Platform device allocation failed\n"); - return -ENOMEM; + ret = -ENOMEM; + goto fail1; } platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora); @@ -242,20 +268,6 @@ static int __init omap3pandora_soc_init( goto fail2; } - dac_power_gpio = devm_gpiod_get(&omap3pandora_snd_device->dev, - "dac", GPIOD_OUT_LOW); - if (IS_ERR(dac_power_gpio)) { - ret = PTR_ERR(dac_power_gpio); - goto fail3; - } - - amp_power_gpio = devm_gpiod_get(&omap3pandora_snd_device->dev, - "amp", GPIOD_OUT_LOW); - if (IS_ERR(amp_power_gpio)) { - ret = PTR_ERR(amp_power_gpio); - goto fail3; - } - omap3pandora_dac_reg = regulator_get(&omap3pandora_snd_device->dev, "vcc"); if (IS_ERR(omap3pandora_dac_reg)) { pr_err(PREFIX "Failed to get DAC regulator from %s: %ld\n", @@ -271,7 +283,10 @@ fail3: platform_device_del(omap3pandora_snd_device); fail2: platform_device_put(omap3pandora_snd_device); - +fail1: + gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); +fail0: + gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); return ret; } module_init(omap3pandora_soc_init); @@ -280,6 +295,8 @@ static void __exit omap3pandora_soc_exit { regulator_put(omap3pandora_dac_reg); platform_device_unregister(omap3pandora_snd_device); + gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO); + gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO); } module_exit(omap3pandora_soc_exit); Patches currently in stable-queue which might be from gregkh@xxxxxxxxxxxxxxxxxxx are queue-6.1/revert-asoc-ti-convert-pandora-asoc-to-gpio-descriptors.patch