gpio: gpio-xilinx: Add remove function
authorSrinivas Neeli <srinivas.neeli@xilinx.com>
Thu, 12 Nov 2020 17:12:25 +0000 (22:42 +0530)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 18 Nov 2020 07:51:52 +0000 (08:51 +0100)
Added remove function support.

Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/1605201148-4508-7-git-send-email-srinivas.neeli@xilinx.com
[dropped pm disable call]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-xilinx.c

index 5327457586d76e5111d558d4e411df1997377010..9f2dfb734832ba0c8794f3e4622fe0d74ff97474 100644 (file)
@@ -259,6 +259,23 @@ static void xgpio_save_regs(struct xgpio_instance *chip)
                       chip->gpio_dir[1]);
 }
 
+/**
+ * xgpio_remove - Remove method for the GPIO device.
+ * @pdev: pointer to the platform device
+ *
+ * This function remove gpiochips and frees all the allocated resources.
+ *
+ * Return: 0 always
+ */
+static int xgpio_remove(struct platform_device *pdev)
+{
+       struct xgpio_instance *gpio = platform_get_drvdata(pdev);
+
+       clk_disable_unprepare(gpio->clk);
+
+       return 0;
+}
+
 /**
  * xgpio_of_probe - Probe method for the GPIO device.
  * @pdev: pointer to the platform device
@@ -371,6 +388,7 @@ MODULE_DEVICE_TABLE(of, xgpio_of_match);
 
 static struct platform_driver xgpio_plat_driver = {
        .probe          = xgpio_probe,
+       .remove         = xgpio_remove,
        .driver         = {
                        .name = "gpio-xilinx",
                        .of_match_table = xgpio_of_match,