diff options
author | Sebastian Reichel <sre@kernel.org> | 2014-10-21 11:07:01 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2014-11-14 15:03:14 -0500 |
commit | fbe14a124c1616af65ddfc1add2fd323aaec67ae (patch) | |
tree | c925fb8391466a5f2f59962c798e805065aade7f /drivers/media/radio | |
parent | d4471deceba46ea6fd60f7fa5e8da3fb72bbbe44 (diff) |
[media] si4713: switch reset gpio to devm_gpiod API
This updates the driver to use the managed gpiod interface
instead of the unmanged old GPIO API. This is a preperation
for the introduction of device tree support.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
[hans.verkuil@cisco.com: fixed trivial compiler warning]
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 | 38 | ||||
-rw-r--r-- | drivers/media/radio/si4713/si4713.h | 3 |
2 files changed, 19 insertions, 22 deletions
diff --git a/drivers/media/radio/si4713/si4713.c b/drivers/media/radio/si4713/si4713.c index 5c2a2fcb8965..952550e7be8f 100644 --- a/drivers/media/radio/si4713/si4713.c +++ b/drivers/media/radio/si4713/si4713.c | |||
@@ -383,9 +383,9 @@ static int si4713_powerup(struct si4713_device *sdev) | |||
383 | } | 383 | } |
384 | } | 384 | } |
385 | 385 | ||
386 | if (gpio_is_valid(sdev->gpio_reset)) { | 386 | if (!IS_ERR(sdev->gpio_reset)) { |
387 | udelay(50); | 387 | udelay(50); |
388 | gpio_set_value(sdev->gpio_reset, 1); | 388 | gpiod_set_value(sdev->gpio_reset, 1); |
389 | } | 389 | } |
390 | 390 | ||
391 | if (client->irq) | 391 | if (client->irq) |
@@ -407,8 +407,8 @@ 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 (gpio_is_valid(sdev->gpio_reset)) | 410 | if (!IS_ERR(sdev->gpio_reset)) |
411 | gpio_set_value(sdev->gpio_reset, 0); | 411 | gpiod_set_value(sdev->gpio_reset, 0); |
412 | 412 | ||
413 | 413 | ||
414 | if (sdev->vdd) { | 414 | if (sdev->vdd) { |
@@ -447,8 +447,8 @@ static int si4713_powerdown(struct si4713_device *sdev) | |||
447 | v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n", | 447 | v4l2_dbg(1, debug, &sdev->sd, "Power down response: 0x%02x\n", |
448 | resp[0]); | 448 | resp[0]); |
449 | v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n"); | 449 | v4l2_dbg(1, debug, &sdev->sd, "Device in reset mode\n"); |
450 | if (gpio_is_valid(sdev->gpio_reset)) | 450 | if (!IS_ERR(sdev->gpio_reset)) |
451 | gpio_set_value(sdev->gpio_reset, 0); | 451 | gpiod_set_value(sdev->gpio_reset, 0); |
452 | 452 | ||
453 | if (sdev->vdd) { | 453 | if (sdev->vdd) { |
454 | err = regulator_disable(sdev->vdd); | 454 | err = regulator_disable(sdev->vdd); |
@@ -1446,7 +1446,6 @@ static int si4713_probe(struct i2c_client *client, | |||
1446 | const struct i2c_device_id *id) | 1446 | const struct i2c_device_id *id) |
1447 | { | 1447 | { |
1448 | struct si4713_device *sdev; | 1448 | struct si4713_device *sdev; |
1449 | struct si4713_platform_data *pdata = client->dev.platform_data; | ||
1450 | struct v4l2_ctrl_handler *hdl; | 1449 | struct v4l2_ctrl_handler *hdl; |
1451 | int rval; | 1450 | int rval; |
1452 | 1451 | ||
@@ -1457,16 +1456,17 @@ static int si4713_probe(struct i2c_client *client, | |||
1457 | goto exit; | 1456 | goto exit; |
1458 | } | 1457 | } |
1459 | 1458 | ||
1460 | sdev->gpio_reset = -1; | 1459 | sdev->gpio_reset = devm_gpiod_get(&client->dev, "reset"); |
1461 | if (pdata && gpio_is_valid(pdata->gpio_reset)) { | 1460 | if (!IS_ERR(sdev->gpio_reset)) { |
1462 | rval = gpio_request(pdata->gpio_reset, "si4713 reset"); | 1461 | gpiod_direction_output(sdev->gpio_reset, 0); |
1463 | if (rval) { | 1462 | } else if (PTR_ERR(sdev->gpio_reset) == -ENOENT) { |
1464 | dev_err(&client->dev, | 1463 | dev_dbg(&client->dev, "No reset GPIO assigned\n"); |
1465 | "Failed to request gpio: %d\n", rval); | 1464 | } else if (PTR_ERR(sdev->gpio_reset) == -ENOSYS) { |
1466 | goto free_sdev; | 1465 | dev_dbg(&client->dev, "No reset GPIO support\n"); |
1467 | } | 1466 | } else { |
1468 | sdev->gpio_reset = pdata->gpio_reset; | 1467 | rval = PTR_ERR(sdev->gpio_reset); |
1469 | gpio_direction_output(sdev->gpio_reset, 0); | 1468 | dev_err(&client->dev, "Failed to request gpio: %d\n", rval); |
1469 | goto free_sdev; | ||
1470 | } | 1470 | } |
1471 | 1471 | ||
1472 | sdev->vdd = devm_regulator_get_optional(&client->dev, "vdd"); | 1472 | sdev->vdd = devm_regulator_get_optional(&client->dev, "vdd"); |
@@ -1614,8 +1614,6 @@ free_irq: | |||
1614 | free_irq(client->irq, sdev); | 1614 | free_irq(client->irq, sdev); |
1615 | free_ctrls: | 1615 | free_ctrls: |
1616 | v4l2_ctrl_handler_free(hdl); | 1616 | v4l2_ctrl_handler_free(hdl); |
1617 | if (gpio_is_valid(sdev->gpio_reset)) | ||
1618 | gpio_free(sdev->gpio_reset); | ||
1619 | free_sdev: | 1617 | free_sdev: |
1620 | kfree(sdev); | 1618 | kfree(sdev); |
1621 | exit: | 1619 | exit: |
@@ -1636,8 +1634,6 @@ static int si4713_remove(struct i2c_client *client) | |||
1636 | 1634 | ||
1637 | v4l2_device_unregister_subdev(sd); | 1635 | v4l2_device_unregister_subdev(sd); |
1638 | v4l2_ctrl_handler_free(sd->ctrl_handler); | 1636 | v4l2_ctrl_handler_free(sd->ctrl_handler); |
1639 | if (gpio_is_valid(sdev->gpio_reset)) | ||
1640 | gpio_free(sdev->gpio_reset); | ||
1641 | kfree(sdev); | 1637 | kfree(sdev); |
1642 | 1638 | ||
1643 | return 0; | 1639 | return 0; |
diff --git a/drivers/media/radio/si4713/si4713.h b/drivers/media/radio/si4713/si4713.h index ed28ed27c95f..7c2479f42329 100644 --- a/drivers/media/radio/si4713/si4713.h +++ b/drivers/media/radio/si4713/si4713.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #define SI4713_I2C_H | 16 | #define SI4713_I2C_H |
17 | 17 | ||
18 | #include <linux/regulator/consumer.h> | 18 | #include <linux/regulator/consumer.h> |
19 | #include <linux/gpio/consumer.h> | ||
19 | #include <media/v4l2-subdev.h> | 20 | #include <media/v4l2-subdev.h> |
20 | #include <media/v4l2-ctrls.h> | 21 | #include <media/v4l2-ctrls.h> |
21 | #include <media/si4713.h> | 22 | #include <media/si4713.h> |
@@ -236,7 +237,7 @@ struct si4713_device { | |||
236 | struct completion work; | 237 | struct completion work; |
237 | struct regulator *vdd; | 238 | struct regulator *vdd; |
238 | struct regulator *vio; | 239 | struct regulator *vio; |
239 | int gpio_reset; | 240 | struct gpio_desc *gpio_reset; |
240 | u32 power_state; | 241 | u32 power_state; |
241 | u32 rds_enabled; | 242 | u32 rds_enabled; |
242 | u32 frequency; | 243 | u32 frequency; |