]> git.karo-electronics.de Git - linux-beck.git/commitdiff
gpio: ath79: Make the driver removable
authorAlban Bedel <albeu@free.fr>
Thu, 28 Jan 2016 19:44:31 +0000 (20:44 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 10 Feb 2016 10:14:08 +0000 (11:14 +0100)
As we now allow the driver to be built as a module it should be
removable.

Signed-off-by: Alban Bedel <albeu@free.fr>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-ath79.c

index afb535eef9f33b9e3310cb4b62b3487321d47842..6b157925e16e02b5bd8c0eb96f9bb55be7009404 100644 (file)
@@ -46,6 +46,7 @@ static int ath79_gpio_probe(struct platform_device *pdev)
        ctrl = devm_kzalloc(&pdev->dev, sizeof(*ctrl), GFP_KERNEL);
        if (!ctrl)
                return -ENOMEM;
+       platform_set_drvdata(pdev, ctrl);
 
        if (np) {
                err = of_property_read_u32(np, "ngpios", &ath79_gpio_count);
@@ -97,12 +98,21 @@ static int ath79_gpio_probe(struct platform_device *pdev)
        return 0;
 }
 
+static int ath79_gpio_remove(struct platform_device *pdev)
+{
+       struct ath79_gpio_ctrl *ctrl = platform_get_drvdata(pdev);
+
+       gpiochip_remove(&ctrl->gc);
+       return 0;
+}
+
 static struct platform_driver ath79_gpio_driver = {
        .driver = {
                .name = "ath79-gpio",
                .of_match_table = ath79_gpio_of_match,
        },
        .probe = ath79_gpio_probe,
+       .remove = ath79_gpio_remove,
 };
 
 module_platform_driver(ath79_gpio_driver);