gpiolib: make cdev a build option
authorKent Gibson <warthog618@gmail.com>
Mon, 28 Sep 2020 00:27:52 +0000 (08:27 +0800)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Wed, 30 Sep 2020 08:56:42 +0000 (10:56 +0200)
Make the gpiolib-cdev module a build option.  This allows the CDEV
interface to be removed from the kernel to reduce kernel size in
applications where is it not required, and provides the parent for
other CDEV interface specific build options to follow.

Suggested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Kent Gibson <warthog618@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/gpio/gpiolib-cdev.h

index c7292a50aec4c24db3319bc36566534d472ea338..cbf8a60dec03ca837e0bf439fd80a56d285e997f 100644 (file)
@@ -66,8 +66,21 @@ config GPIO_SYSFS
 
          This ABI is deprecated. If you want to use GPIO from userspace,
          use the character device /dev/gpiochipN with the appropriate
-         ioctl() operations instead. The character device is always
-         available.
+         ioctl() operations instead.
+
+config GPIO_CDEV
+       bool
+       prompt "Character device (/dev/gpiochipN) support" if EXPERT
+       default y
+       help
+         Say Y here to add the character device /dev/gpiochipN interface
+         for GPIOs. The character device allows userspace to control GPIOs
+         using ioctl() operations.
+
+         Only say N if you are sure that the GPIO character device is not
+         required.
+
+         If unsure, say Y.
 
 config GPIO_GENERIC
        depends on HAS_IOMEM # Only for IOMEM drivers
index 639275eb4e4def967c8528ce5a5fd4065d48be3a..6c3791a55a7b60eb57b3d865d42cf9760def1950 100644 (file)
@@ -6,8 +6,8 @@ ccflags-$(CONFIG_DEBUG_GPIO)    += -DDEBUG
 obj-$(CONFIG_GPIOLIB)          += gpiolib.o
 obj-$(CONFIG_GPIOLIB)          += gpiolib-devres.o
 obj-$(CONFIG_GPIOLIB)          += gpiolib-legacy.o
-obj-$(CONFIG_GPIOLIB)          += gpiolib-cdev.o
 obj-$(CONFIG_OF_GPIO)          += gpiolib-of.o
+obj-$(CONFIG_GPIO_CDEV)                += gpiolib-cdev.o
 obj-$(CONFIG_GPIO_SYSFS)       += gpiolib-sysfs.o
 obj-$(CONFIG_GPIO_ACPI)                += gpiolib-acpi.o
 
index 973578e7ad10e2d140476735d1bd11470549ded7..19a4e3d57120215bb2594943823dca6ff0b303f3 100644 (file)
@@ -5,7 +5,22 @@
 
 #include <linux/device.h>
 
+#ifdef CONFIG_GPIO_CDEV
+
 int gpiolib_cdev_register(struct gpio_device *gdev, dev_t devt);
 void gpiolib_cdev_unregister(struct gpio_device *gdev);
 
+#else
+
+static inline int gpiolib_cdev_register(struct gpio_device *gdev, dev_t devt)
+{
+       return 0;
+}
+
+static inline void gpiolib_cdev_unregister(struct gpio_device *gdev)
+{
+}
+
+#endif /* CONFIG_GPIO_CDEV */
+
 #endif /* GPIOLIB_CDEV_H */