diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2015-03-26 16:47:53 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-04-08 05:40:33 -0400 |
commit | b36ae8532f48916d46f92c048d4866ee50e5fc67 (patch) | |
tree | 701bc977648c1dc699eb178bc318ebfb322e0acb /drivers/media/radio | |
parent | 4a203349593a636bff46c49be3f955e0a0c0b0d2 (diff) |
[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>
Diffstat (limited to 'drivers/media/radio')
-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) | |||
383 | } | 383 | } |
384 | } | 384 | } |
385 | 385 | ||
386 | if (!IS_ERR(sdev->gpio_reset)) { | 386 | if (sdev->gpio_reset) { |
387 | udelay(50); | 387 | udelay(50); |
388 | gpiod_set_value(sdev->gpio_reset, 1); | 388 | gpiod_set_value(sdev->gpio_reset, 1); |
389 | } | 389 | } |
@@ -407,8 +407,7 @@ static int si4713_powerup(struct si4713_device *sdev) | |||
407 | SI4713_STC_INT | SI4713_CTS); | 407 | SI4713_STC_INT | SI4713_CTS); |
408 | return err; | 408 | return err; |
409 | } | 409 | } |
410 | if (!IS_ERR(sdev->gpio_reset)) | 410 | gpiod_set_value(sdev->gpio_reset, 0); |
411 | gpiod_set_value(sdev->gpio_reset, 0); | ||
412 | 411 | ||
413 | 412 | ||
414 | if (sdev->vdd) { | 413 | if (sdev->vdd) { |
@@ -447,7 +446,7 @@ static int si4713_powerdown(struct si4713_device *sdev) | |||
447 | v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n", | 446 | v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n", |
448 | resp[0]); | 447 | resp[0]); |
449 | v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n"); | 448 | v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n"); |
450 | if (!IS_ERR(sdev->gpio_reset)) | 449 | if (sdev->gpio_reset) |
451 | gpiod_set_value(sdev->gpio_reset, 0); | 450 | gpiod_set_value(sdev->gpio_reset, 0); |
452 | 451 | ||
453 | if (sdev->vdd) { | 452 | if (sdev->vdd) { |
@@ -1460,14 +1459,9 @@ static int si4713_probe(struct i2c_client *client, | |||
1460 | goto exit; | 1459 | goto exit; |
1461 | } | 1460 | } |
1462 | 1461 | ||
1463 | sdev->gpio_reset = devm_gpiod_get(&client->dev, "reset"); | 1462 | sdev->gpio_reset = devm_gpiod_get_optional(&client->dev, "reset", |
1464 | if (!IS_ERR(sdev->gpio_reset)) { | 1463 | GPIOD_OUT_LOW); |
1465 | gpiod_direction_output(sdev->gpio_reset, 0); | 1464 | if (IS_ERR(sdev->gpio_reset)) { |
1466 | } else if (PTR_ERR(sdev->gpio_reset) == -ENOENT) { | ||
1467 | dev_dbg(&client->dev, "No reset GPIO assigned\n"); | ||
1468 | } else if (PTR_ERR(sdev->gpio_reset) == -ENOSYS) { | ||
1469 | dev_dbg(&client->dev, "No reset GPIO support\n"); | ||
1470 | } else { | ||
1471 | rval = PTR_ERR(sdev->gpio_reset); | 1465 | rval = PTR_ERR(sdev->gpio_reset); |
1472 | dev_err(&client->dev, "Failed to request gpio: %d\n", rval); | 1466 | dev_err(&client->dev, "Failed to request gpio: %d\n", rval); |
1473 | goto exit; | 1467 | goto exit; |