gpio: tps65086: Use devm_gpiochip_add_data() to simplify remove path

Use devm version of gpiochip add function to handle removal for us.

While here update copyright and module author.

Signed-off-by: Andrew Davis <afd@ti.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
Andrew Davis 2023-05-15 12:45:18 -05:00 committed by Bartosz Golaszewski
parent fbc8ab2ccd
commit 81b010990b
1 changed files with 4 additions and 23 deletions

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
/* /*
* Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ * Copyright (C) 2015-2023 Texas Instruments Incorporated - https://www.ti.com/
* Andrew F. Davis <afd@ti.com> * Andrew Davis <afd@ti.com>
* *
* Based on the TPS65912 driver * Based on the TPS65912 driver
*/ */
@ -80,34 +80,16 @@ static const struct gpio_chip template_chip = {
static int tps65086_gpio_probe(struct platform_device *pdev) static int tps65086_gpio_probe(struct platform_device *pdev)
{ {
struct tps65086_gpio *gpio; struct tps65086_gpio *gpio;
int ret;
gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL); gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
if (!gpio) if (!gpio)
return -ENOMEM; return -ENOMEM;
platform_set_drvdata(pdev, gpio);
gpio->tps = dev_get_drvdata(pdev->dev.parent); gpio->tps = dev_get_drvdata(pdev->dev.parent);
gpio->chip = template_chip; gpio->chip = template_chip;
gpio->chip.parent = gpio->tps->dev; gpio->chip.parent = gpio->tps->dev;
ret = gpiochip_add_data(&gpio->chip, gpio); return devm_gpiochip_add_data(&pdev->dev, &gpio->chip, gpio);
if (ret < 0) {
dev_err(&pdev->dev, "Could not register gpiochip, %d\n", ret);
return ret;
}
return 0;
}
static int tps65086_gpio_remove(struct platform_device *pdev)
{
struct tps65086_gpio *gpio = platform_get_drvdata(pdev);
gpiochip_remove(&gpio->chip);
return 0;
} }
static const struct platform_device_id tps65086_gpio_id_table[] = { static const struct platform_device_id tps65086_gpio_id_table[] = {
@ -121,11 +103,10 @@ static struct platform_driver tps65086_gpio_driver = {
.name = "tps65086-gpio", .name = "tps65086-gpio",
}, },
.probe = tps65086_gpio_probe, .probe = tps65086_gpio_probe,
.remove = tps65086_gpio_remove,
.id_table = tps65086_gpio_id_table, .id_table = tps65086_gpio_id_table,
}; };
module_platform_driver(tps65086_gpio_driver); module_platform_driver(tps65086_gpio_driver);
MODULE_AUTHOR("Andrew F. Davis <afd@ti.com>"); MODULE_AUTHOR("Andrew Davis <afd@ti.com>");
MODULE_DESCRIPTION("TPS65086 GPIO driver"); MODULE_DESCRIPTION("TPS65086 GPIO driver");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");