aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2016-02-22 07:13:28 -0500
committerLaxman Dewangan <ldewangan@nvidia.com>2016-02-23 10:05:51 -0500
commit45338c3aa1e3439f9da35ac7126f29ea2d33cca8 (patch)
treec52ef331e6cae3000bdd8889ab3010bb47b81d4f
parent5d61a9e0acf302e572584f4314943de2df1a5845 (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.c24
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
440err_gpiob:
441 gpiochip_remove(&vb_gpio->gpioa);
442
443err_gpioa:
444 return ret;
445}
446
447static 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
456static struct platform_driver vprbrd_gpio_driver = { 441static 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
463static int __init vprbrd_gpio_init(void) 447static int __init vprbrd_gpio_init(void)