diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2016-02-22 07:13:28 -0500 |
---|---|---|
committer | Laxman Dewangan <ldewangan@nvidia.com> | 2016-02-23 10:05:51 -0500 |
commit | 45338c3aa1e3439f9da35ac7126f29ea2d33cca8 (patch) | |
tree | c52ef331e6cae3000bdd8889ab3010bb47b81d4f | |
parent | 5d61a9e0acf302e572584f4314943de2df1a5845 (diff) |
gpio: viperboard: Use devm_gpiochip_add_data() for gpio registration
Use devm_gpiochip_add_data() for GPIO registration and remove the
need of driver callback .remove.
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
-rw-r--r-- | drivers/gpio/gpio-viperboard.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/drivers/gpio/gpio-viperboard.c b/drivers/gpio/gpio-viperboard.c index 1170b035cb92..dec47aafd5cd 100644 --- a/drivers/gpio/gpio-viperboard.c +++ b/drivers/gpio/gpio-viperboard.c | |||
@@ -410,10 +410,10 @@ static int vprbrd_gpio_probe(struct platform_device *pdev) | |||
410 | vb_gpio->gpioa.get = vprbrd_gpioa_get; | 410 | vb_gpio->gpioa.get = vprbrd_gpioa_get; |
411 | vb_gpio->gpioa.direction_input = vprbrd_gpioa_direction_input; | 411 | vb_gpio->gpioa.direction_input = vprbrd_gpioa_direction_input; |
412 | vb_gpio->gpioa.direction_output = vprbrd_gpioa_direction_output; | 412 | vb_gpio->gpioa.direction_output = vprbrd_gpioa_direction_output; |
413 | ret = gpiochip_add_data(&vb_gpio->gpioa, vb_gpio); | 413 | ret = devm_gpiochip_add_data(&pdev->dev, &vb_gpio->gpioa, vb_gpio); |
414 | if (ret < 0) { | 414 | if (ret < 0) { |
415 | dev_err(vb_gpio->gpioa.parent, "could not add gpio a"); | 415 | dev_err(vb_gpio->gpioa.parent, "could not add gpio a"); |
416 | goto err_gpioa; | 416 | return ret; |
417 | } | 417 | } |
418 | 418 | ||
419 | /* registering gpio b */ | 419 | /* registering gpio b */ |
@@ -427,37 +427,21 @@ static int vprbrd_gpio_probe(struct platform_device *pdev) | |||
427 | vb_gpio->gpiob.get = vprbrd_gpiob_get; | 427 | vb_gpio->gpiob.get = vprbrd_gpiob_get; |
428 | vb_gpio->gpiob.direction_input = vprbrd_gpiob_direction_input; | 428 | vb_gpio->gpiob.direction_input = vprbrd_gpiob_direction_input; |
429 | vb_gpio->gpiob.direction_output = vprbrd_gpiob_direction_output; | 429 | vb_gpio->gpiob.direction_output = vprbrd_gpiob_direction_output; |
430 | ret = gpiochip_add_data(&vb_gpio->gpiob, vb_gpio); | 430 | ret = devm_gpiochip_add_data(&pdev->dev, &vb_gpio->gpiob, vb_gpio); |
431 | if (ret < 0) { | 431 | if (ret < 0) { |
432 | dev_err(vb_gpio->gpiob.parent, "could not add gpio b"); | 432 | dev_err(vb_gpio->gpiob.parent, "could not add gpio b"); |
433 | goto err_gpiob; | 433 | return ret; |
434 | } | 434 | } |
435 | 435 | ||
436 | platform_set_drvdata(pdev, vb_gpio); | 436 | platform_set_drvdata(pdev, vb_gpio); |
437 | 437 | ||
438 | return ret; | 438 | return ret; |
439 | |||
440 | err_gpiob: | ||
441 | gpiochip_remove(&vb_gpio->gpioa); | ||
442 | |||
443 | err_gpioa: | ||
444 | return ret; | ||
445 | } | ||
446 | |||
447 | static int vprbrd_gpio_remove(struct platform_device *pdev) | ||
448 | { | ||
449 | struct vprbrd_gpio *vb_gpio = platform_get_drvdata(pdev); | ||
450 | |||
451 | gpiochip_remove(&vb_gpio->gpiob); | ||
452 | |||
453 | return 0; | ||
454 | } | 439 | } |
455 | 440 | ||
456 | static struct platform_driver vprbrd_gpio_driver = { | 441 | static struct platform_driver vprbrd_gpio_driver = { |
457 | .driver.name = "viperboard-gpio", | 442 | .driver.name = "viperboard-gpio", |
458 | .driver.owner = THIS_MODULE, | 443 | .driver.owner = THIS_MODULE, |
459 | .probe = vprbrd_gpio_probe, | 444 | .probe = vprbrd_gpio_probe, |
460 | .remove = vprbrd_gpio_remove, | ||
461 | }; | 445 | }; |
462 | 446 | ||
463 | static int __init vprbrd_gpio_init(void) | 447 | static int __init vprbrd_gpio_init(void) |