Commit 179f69fa authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Mark Brown

ASoC: ssm2518: switch to using gpiod API

This patch converts the driver to newer gpiod API, so that we can stop
exporting OF-specific legacy gpio API.
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Link: https://lore.kernel.org/r/20220920025804.1788667-2-dmitry.torokhov@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1e1f2663
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
* Author: Lars-Peter Clausen <lars@metafoo.de> * Author: Lars-Peter Clausen <lars@metafoo.de>
*/ */
#include <linux/err.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/regmap.h> #include <linux/regmap.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/gpio.h> #include <linux/gpio/consumer.h>
#include <linux/of_gpio.h>
#include <sound/core.h> #include <sound/core.h>
#include <sound/pcm.h> #include <sound/pcm.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
...@@ -113,7 +113,7 @@ struct ssm2518 { ...@@ -113,7 +113,7 @@ struct ssm2518 {
unsigned int sysclk; unsigned int sysclk;
const struct snd_pcm_hw_constraint_list *constraints; const struct snd_pcm_hw_constraint_list *constraints;
int enable_gpio; struct gpio_desc *enable_gpio;
}; };
static const struct reg_default ssm2518_reg_defaults[] = { static const struct reg_default ssm2518_reg_defaults[] = {
...@@ -482,8 +482,8 @@ static int ssm2518_set_power(struct ssm2518 *ssm2518, bool enable) ...@@ -482,8 +482,8 @@ static int ssm2518_set_power(struct ssm2518 *ssm2518, bool enable)
regcache_mark_dirty(ssm2518->regmap); regcache_mark_dirty(ssm2518->regmap);
} }
if (gpio_is_valid(ssm2518->enable_gpio)) if (ssm2518->enable_gpio)
gpio_set_value(ssm2518->enable_gpio, enable); gpiod_set_value_cansleep(ssm2518->enable_gpio, enable);
regcache_cache_only(ssm2518->regmap, !enable); regcache_cache_only(ssm2518->regmap, !enable);
...@@ -742,20 +742,14 @@ static int ssm2518_i2c_probe(struct i2c_client *i2c) ...@@ -742,20 +742,14 @@ static int ssm2518_i2c_probe(struct i2c_client *i2c)
if (ssm2518 == NULL) if (ssm2518 == NULL)
return -ENOMEM; return -ENOMEM;
if (i2c->dev.of_node) { /* Start with enabling the chip */
ssm2518->enable_gpio = of_get_gpio(i2c->dev.of_node, 0); ssm2518->enable_gpio = devm_gpiod_get_optional(&i2c->dev, NULL,
if (ssm2518->enable_gpio < 0 && ssm2518->enable_gpio != -ENOENT) GPIOD_OUT_HIGH);
return ssm2518->enable_gpio; ret = PTR_ERR_OR_ZERO(ssm2518->enable_gpio);
} else {
ssm2518->enable_gpio = -1;
}
if (gpio_is_valid(ssm2518->enable_gpio)) {
ret = devm_gpio_request_one(&i2c->dev, ssm2518->enable_gpio,
GPIOF_OUT_INIT_HIGH, "SSM2518 nSD");
if (ret) if (ret)
return ret; return ret;
}
gpiod_set_consumer_name(ssm2518->enable_gpio, "SSM2518 nSD");
i2c_set_clientdata(i2c, ssm2518); i2c_set_clientdata(i2c, ssm2518);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment