diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2023-10-06 16:46:25 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2023-10-09 16:27:44 +0300 |
commit | 654a23724072f37c0d07b31395e1d9f45f5563ab (patch) | |
tree | 6ed43161865289f9918fe2f24ca30e093e15448f /sound/soc/mediatek | |
parent | 9e189e80dcb68528dea9e061d9704993f98cb84f (diff) | |
download | linux-654a23724072f37c0d07b31395e1d9f45f5563ab.tar.xz |
ASoC: mediatek: mt2701-cs42448: Convert to GPIO descriptors
The driver is pretty straight-forward to convert to use GPIO
descriptors, however a separate patch is needed to accept
the DT GPIO resources ending with "-gpio1" and "-gpio2"
instead of the standard "-gpio" or "-gpios" name convention.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20231006-descriptors-asoc-mediatek-v1-2-07fe79f337f5@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/mediatek')
-rw-r--r-- | sound/soc/mediatek/mt2701/mt2701-cs42448.c | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/sound/soc/mediatek/mt2701/mt2701-cs42448.c b/sound/soc/mediatek/mt2701/mt2701-cs42448.c index fc80e2cfb5b9..1262e8a1bc9a 100644 --- a/sound/soc/mediatek/mt2701/mt2701-cs42448.c +++ b/sound/soc/mediatek/mt2701/mt2701-cs42448.c @@ -10,16 +10,15 @@ #include <linux/module.h> #include <sound/soc.h> #include <linux/delay.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/pinctrl/consumer.h> -#include <linux/of_gpio.h> #include "mt2701-afe-common.h" struct mt2701_cs42448_private { int i2s1_in_mux; - int i2s1_in_mux_gpio_sel_1; - int i2s1_in_mux_gpio_sel_2; + struct gpio_desc *i2s1_in_mux_sel_1; + struct gpio_desc *i2s1_in_mux_sel_2; }; static const char * const i2sin_mux_switch_text[] = { @@ -53,20 +52,20 @@ static int mt2701_cs42448_i2sin1_mux_set(struct snd_kcontrol *kcontrol, switch (ucontrol->value.integer.value[0]) { case 0: - gpio_set_value(priv->i2s1_in_mux_gpio_sel_1, 0); - gpio_set_value(priv->i2s1_in_mux_gpio_sel_2, 0); + gpiod_set_value(priv->i2s1_in_mux_sel_1, 0); + gpiod_set_value(priv->i2s1_in_mux_sel_2, 0); break; case 1: - gpio_set_value(priv->i2s1_in_mux_gpio_sel_1, 1); - gpio_set_value(priv->i2s1_in_mux_gpio_sel_2, 0); + gpiod_set_value(priv->i2s1_in_mux_sel_1, 1); + gpiod_set_value(priv->i2s1_in_mux_sel_2, 0); break; case 2: - gpio_set_value(priv->i2s1_in_mux_gpio_sel_1, 0); - gpio_set_value(priv->i2s1_in_mux_gpio_sel_2, 1); + gpiod_set_value(priv->i2s1_in_mux_sel_1, 0); + gpiod_set_value(priv->i2s1_in_mux_sel_2, 1); break; case 3: - gpio_set_value(priv->i2s1_in_mux_gpio_sel_1, 1); - gpio_set_value(priv->i2s1_in_mux_gpio_sel_2, 1); + gpiod_set_value(priv->i2s1_in_mux_sel_1, 1); + gpiod_set_value(priv->i2s1_in_mux_sel_2, 1); break; default: dev_warn(card->dev, "%s invalid setting\n", __func__); @@ -382,27 +381,18 @@ static int mt2701_cs42448_machine_probe(struct platform_device *pdev) return ret; } - priv->i2s1_in_mux_gpio_sel_1 = - of_get_named_gpio(dev->of_node, "i2s1-in-sel-gpio1", 0); - if (gpio_is_valid(priv->i2s1_in_mux_gpio_sel_1)) { - ret = devm_gpio_request(dev, priv->i2s1_in_mux_gpio_sel_1, - "i2s1_in_mux_gpio_sel_1"); - if (ret) - dev_warn(&pdev->dev, "%s devm_gpio_request fail %d\n", - __func__, ret); - gpio_direction_output(priv->i2s1_in_mux_gpio_sel_1, 0); - } + priv->i2s1_in_mux_sel_1 = devm_gpiod_get_optional(dev, "i2s1-in-sel-gpio1", + GPIOD_OUT_LOW); + if (IS_ERR(priv->i2s1_in_mux_sel_1)) + return dev_err_probe(dev, PTR_ERR(priv->i2s1_in_mux_sel_1), + "error getting mux 1 selector\n"); + + priv->i2s1_in_mux_sel_2 = devm_gpiod_get_optional(dev, "i2s1-in-sel-gpio2", + GPIOD_OUT_LOW); + if (IS_ERR(priv->i2s1_in_mux_sel_2)) + return dev_err_probe(dev, PTR_ERR(priv->i2s1_in_mux_sel_2), + "error getting mux 2 selector\n"); - priv->i2s1_in_mux_gpio_sel_2 = - of_get_named_gpio(dev->of_node, "i2s1-in-sel-gpio2", 0); - if (gpio_is_valid(priv->i2s1_in_mux_gpio_sel_2)) { - ret = devm_gpio_request(dev, priv->i2s1_in_mux_gpio_sel_2, - "i2s1_in_mux_gpio_sel_2"); - if (ret) - dev_warn(&pdev->dev, "%s devm_gpio_request fail2 %d\n", - __func__, ret); - gpio_direction_output(priv->i2s1_in_mux_gpio_sel_2, 0); - } snd_soc_card_set_drvdata(card, priv); ret = devm_snd_soc_register_card(&pdev->dev, card); |