diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2015-03-26 21:47:53 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-04-08 11:40:33 +0200 |
commit | b36ae8532f48916d46f92c048d4866ee50e5fc67 (patch) | |
tree | 701bc977648c1dc699eb178bc318ebfb322e0acb | |
parent | [media] vivid: use V4L2_DV_FL_IS_CE_VIDEO instead of V4L2_DV_BT_STD_CEA861 (diff) | |
download | linux-b36ae8532f48916d46f92c048d4866ee50e5fc67.tar.xz linux-b36ae8532f48916d46f92c048d4866ee50e5fc67.zip |
[media] media: radio-si4713: improve usage of gpiod API
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>
-rw-r--r-- | drivers/media/radio/si4713/si4713.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/media/radio/si4713/si4713.c b/drivers/media/radio/si4713/si4713.c index c90004dac170..e9d03ac69a27 100644 --- a/drivers/media/radio/si4713/si4713.c +++ b/drivers/media/radio/si4713/si4713.c @@ -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; |