Input: serio - add helper macro for serio_driver boilerplate
authorAxel Lin <axel.lin@gmail.com>
Wed, 4 Apr 2012 06:50:15 +0000 (23:50 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 4 Apr 2012 16:25:42 +0000 (09:25 -0700)
This patch introduces the module_serio_driver macro which is a
convenience macro for serio driver modules similar to
module_platform_driver. It is intended to be used by drivers
which init/exit section does nothing but registers/unregisters
the serio driver. By using this macro it is possible to eliminate
a few lines of boilerplate code per serio driver.

Based on work done by Lars-Peter Clausen <lars@metafoo.de> for
other buses (i2c and spi).

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
include/linux/serio.h

index ca82861b0e461d6798e6a05a977352dca24335e5..6d6cfd3e94a348cb578f73c3b019b6121ee8aca1 100644 (file)
@@ -96,6 +96,19 @@ int __must_check __serio_register_driver(struct serio_driver *drv,
 
 void serio_unregister_driver(struct serio_driver *drv);
 
+/**
+ * module_serio_driver() - Helper macro for registering a serio driver
+ * @__serio_driver: serio_driver struct
+ *
+ * Helper macro for serio drivers which do not do anything special in
+ * module init/exit. This eliminates a lot of boilerplate. Each module
+ * may only use this macro once, and calling it replaces module_init()
+ * and module_exit().
+ */
+#define module_serio_driver(__serio_driver) \
+       module_driver(__serio_driver, serio_register_driver, \
+                      serio_unregister_driver)
+
 static inline int serio_write(struct serio *serio, unsigned char data)
 {
        if (serio->write)