Removing old gpiod interface and replacing it for the gpiod consumer interface. Signed-off-by: Maíra Canal <maira.canal@xxxxxx> --- drivers/media/i2c/s5c73m3/s5c73m3-core.c | 25 +++++++++++++----------- include/media/i2c/s5c73m3.h | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c b/drivers/media/i2c/s5c73m3/s5c73m3-core.c index e2b88c5e4f98..0c69a3fc7ebe 100644 --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c @@ -10,7 +10,7 @@ #include <linux/clk.h> #include <linux/delay.h> #include <linux/firmware.h> -#include <linux/gpio.h> +#include <linux/gpio/consumer.h> #include <linux/i2c.h> #include <linux/init.h> #include <linux/media.h> @@ -1349,9 +1349,9 @@ static int s5c73m3_oif_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) static int s5c73m3_gpio_set_value(struct s5c73m3 *priv, int id, u32 val) { - if (!gpio_is_valid(priv->gpio[id].gpio)) + if (!priv->gpio[id].gpio) return 0; - gpio_set_value(priv->gpio[id].gpio, !!val); + gpiod_set_value(priv->gpio[id].gpio, !!val); return 1; } @@ -1548,20 +1548,24 @@ static int s5c73m3_configure_gpios(struct s5c73m3 *state) static const char * const gpio_names[] = { "S5C73M3_STBY", "S5C73M3_RST" }; + static const char * const prop_names[] = { + "standby", "xshutdown", + }; + struct i2c_client *c = state->i2c_client; struct s5c73m3_gpio *g = state->gpio; - int ret, i; + int i; for (i = 0; i < GPIO_NUM; ++i) { - unsigned int flags = GPIOF_DIR_OUT; + unsigned int flags = GPIOD_OUT_LOW; if (g[i].level) - flags |= GPIOF_INIT_HIGH; - ret = devm_gpio_request_one(&c->dev, g[i].gpio, flags, - gpio_names[i]); - if (ret) { + flags = GPIOD_OUT_HIGH; + g[i].gpio = devm_gpiod_get_optional(&c->dev, prop_names[i], + flags); + if (IS_ERR(g[i].gpio)) { v4l2_err(c, "failed to request gpio %s\n", gpio_names[i]); - return ret; + return PTR_ERR(g[i].gpio); } } return 0; @@ -1586,7 +1590,6 @@ static int s5c73m3_parse_gpios(struct s5c73m3 *state) prop_names[i]); return -EINVAL; } - state->gpio[i].gpio = ret; state->gpio[i].level = !(of_flags & OF_GPIO_ACTIVE_LOW); } return 0; diff --git a/include/media/i2c/s5c73m3.h b/include/media/i2c/s5c73m3.h index a51f1025ba1c..41e2235f0626 100644 --- a/include/media/i2c/s5c73m3.h +++ b/include/media/i2c/s5c73m3.h @@ -17,6 +17,7 @@ #ifndef MEDIA_S5C73M3__ #define MEDIA_S5C73M3__ +#include <linux/gpio/consumer.h> #include <linux/videodev2.h> #include <media/v4l2-mediabus.h> @@ -26,7 +27,7 @@ * @level: indicates active state of the @gpio */ struct s5c73m3_gpio { - int gpio; + struct gpio_desc *gpio; int level; }; -- 2.31.1