Switch from the old gpio API to the new descriptor based gpiod API.

Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 28 +++++++++++++++-------------
 drivers/media/i2c/smiapp/smiapp.h      |  1 +
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c 
b/drivers/media/i2c/smiapp/smiapp-core.c
index aaf5299..d07e060 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -24,8 +24,8 @@
 #include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/module.h>
-#include <linux/of_gpio.h>
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 #include <linux/smiapp.h>
@@ -1212,8 +1212,7 @@ static int smiapp_power_on(struct smiapp_sensor *sensor)
        }
        usleep_range(1000, 1000);
 
-       if (gpio_is_valid(sensor->hwcfg->xshutdown))
-               gpio_set_value(sensor->hwcfg->xshutdown, 1);
+       gpiod_set_value(sensor->xshutdown, 1);
 
        sleep = SMIAPP_RESET_DELAY(sensor->hwcfg->ext_clk);
        usleep_range(sleep, sleep);
@@ -1322,8 +1321,7 @@ static int smiapp_power_on(struct smiapp_sensor *sensor)
        return 0;
 
 out_cci_addr_fail:
-       if (gpio_is_valid(sensor->hwcfg->xshutdown))
-               gpio_set_value(sensor->hwcfg->xshutdown, 0);
+       gpiod_set_value(sensor->xshutdown, 0);
        if (sensor->hwcfg->set_xclk)
                sensor->hwcfg->set_xclk(&sensor->src->sd, 0);
        else
@@ -1348,8 +1346,7 @@ static void smiapp_power_off(struct smiapp_sensor *sensor)
                             SMIAPP_REG_U8_SOFTWARE_RESET,
                             SMIAPP_SOFTWARE_RESET);
 
-       if (gpio_is_valid(sensor->hwcfg->xshutdown))
-               gpio_set_value(sensor->hwcfg->xshutdown, 0);
+       gpiod_set_value(sensor->xshutdown, 0);
        if (sensor->hwcfg->set_xclk)
                sensor->hwcfg->set_xclk(&sensor->src->sd, 0);
        else
@@ -2571,7 +2568,11 @@ static int smiapp_init(struct smiapp_sensor *sensor)
                }
        }
 
-       if (gpio_is_valid(sensor->hwcfg->xshutdown)) {
+       if (client->dev.of_node) {
+               sensor->xshutdown =
+                       devm_gpiod_get_optional(&client->dev, "xshutdown",
+                                               GPIOD_OUT_LOW);
+       } else if (gpio_is_valid(sensor->hwcfg->xshutdown)) {
                rval = devm_gpio_request_one(
                        &client->dev, sensor->hwcfg->xshutdown, 0,
                        "SMIA++ xshutdown");
@@ -2581,8 +2582,13 @@ static int smiapp_init(struct smiapp_sensor *sensor)
                                sensor->hwcfg->xshutdown);
                        return rval;
                }
+
+               sensor->xshutdown = gpio_to_desc(sensor->hwcfg->xshutdown);
        }
 
+       if (!sensor->xshutdown)
+               dev_dbg(&client->dev, "no xshutdown GPIO available\n");
+
        rval = smiapp_power_on(sensor);
        if (rval)
                return -ENODEV;
@@ -3019,9 +3025,6 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct 
device *dev)
        hwcfg->lanes = bus_cfg->bus.mipi_csi2.num_data_lanes;
        dev_dbg(dev, "lanes %u\n", hwcfg->lanes);
 
-       /* xshutdown GPIO is optional */
-       hwcfg->xshutdown = of_get_named_gpio(dev->of_node, "reset-gpios", 0);
-
        /* NVM size is not mandatory */
        of_property_read_u32(dev->of_node, "nokia,nvm-size",
                                    &hwcfg->nvm_size);
@@ -3119,8 +3122,7 @@ static int smiapp_remove(struct i2c_client *client)
        v4l2_async_unregister_subdev(subdev);
 
        if (sensor->power_count) {
-               if (gpio_is_valid(sensor->hwcfg->xshutdown))
-                       gpio_set_value(sensor->hwcfg->xshutdown, 0);
+               gpiod_set_value(sensor->xshutdown, 0);
                if (sensor->hwcfg->set_xclk)
                        sensor->hwcfg->set_xclk(&sensor->src->sd, 0);
                else
diff --git a/drivers/media/i2c/smiapp/smiapp.h 
b/drivers/media/i2c/smiapp/smiapp.h
index 6ff095a..c504bd8 100644
--- a/drivers/media/i2c/smiapp/smiapp.h
+++ b/drivers/media/i2c/smiapp/smiapp.h
@@ -200,6 +200,7 @@ struct smiapp_sensor {
        struct smiapp_hwconfig *hwcfg;
        struct regulator *vana;
        struct clk *ext_clk;
+       struct gpio_desc *xshutdown;
        u32 limits[SMIAPP_LIMIT_LAST];
        u8 nbinning_subtypes;
        struct smiapp_binning_subtype binning_subtypes[SMIAPP_BINNING_SUBTYPES];
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to