[media] media: radio-si4713: improve usage of gpiod API
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 26 Mar 2015 20:47:53 +0000 (17:47 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 8 Apr 2015 09:40:33 +0000 (06:40 -0300)
Since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*() functions)
which appeared in v3.17-rc1, the gpiod_get* functions take an additional
parameter that allows to specify direction and initial value for output.
Simplify accordingly.

Moreover use the _optional variant which has tighter error checking, but
is simpler to use which allows further simplification.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/radio/si4713/si4713.c

index c90004d..e9d03ac 100644 (file)
@@ -383,7 +383,7 @@ static int si4713_powerup(struct si4713_device *sdev)
                }
        }
 
-       if (!IS_ERR(sdev->gpio_reset)) {
+       if (sdev->gpio_reset) {
                udelay(50);
                gpiod_set_value(sdev->gpio_reset, 1);
        }
@@ -407,8 +407,7 @@ static int si4713_powerup(struct si4713_device *sdev)
                                                SI4713_STC_INT | SI4713_CTS);
                return err;
        }
-       if (!IS_ERR(sdev->gpio_reset))
-               gpiod_set_value(sdev->gpio_reset, 0);
+       gpiod_set_value(sdev->gpio_reset, 0);
 
 
        if (sdev->vdd) {
@@ -447,7 +446,7 @@ static int si4713_powerdown(struct si4713_device *sdev)
                v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n",
                                resp[0]);
                v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n");
-               if (!IS_ERR(sdev->gpio_reset))
+               if (sdev->gpio_reset)
                        gpiod_set_value(sdev->gpio_reset, 0);
 
                if (sdev->vdd) {
@@ -1460,14 +1459,9 @@ static int si4713_probe(struct i2c_client *client,
                goto exit;
        }
 
-       sdev->gpio_reset = devm_gpiod_get(&client->dev, "reset");
-       if (!IS_ERR(sdev->gpio_reset)) {
-               gpiod_direction_output(sdev->gpio_reset, 0);
-       } else if (PTR_ERR(sdev->gpio_reset) == -ENOENT) {
-               dev_dbg(&client->dev, "No reset GPIO assigned\n");
-       } else if (PTR_ERR(sdev->gpio_reset) == -ENOSYS) {
-               dev_dbg(&client->dev, "No reset GPIO support\n");
-       } else {
+       sdev->gpio_reset = devm_gpiod_get_optional(&client->dev, "reset",
+                                                  GPIOD_OUT_LOW);
+       if (IS_ERR(sdev->gpio_reset)) {
                rval = PTR_ERR(sdev->gpio_reset);
                dev_err(&client->dev, "Failed to request gpio: %d\n", rval);
                goto exit;