serdev: Make .remove in struct serdev_device_driver optional
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Thu, 21 Dec 2017 06:51:14 +0000 (22:51 -0800)
committerLee Jones <lee.jones@linaro.org>
Mon, 8 Jan 2018 10:08:33 +0000 (10:08 +0000)
Using devres infrastructure it is possible to write a serdev driver
that doesn't have any code that needs to be called as a part of
.remove. Add code to make .remove optional.

Acked-by: Philippe Ombredanne <pombredanne@nexb.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/tty/serdev/core.c

index 1bef398..34050b4 100644 (file)
@@ -268,8 +268,8 @@ static int serdev_drv_probe(struct device *dev)
 static int serdev_drv_remove(struct device *dev)
 {
        const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver);
-
-       sdrv->remove(to_serdev_device(dev));
+       if (sdrv->remove)
+               sdrv->remove(to_serdev_device(dev));
        return 0;
 }