net: phy: add module_phy_driver macro
authorJohan Hovold <johan@kernel.org>
Tue, 11 Nov 2014 18:45:57 +0000 (19:45 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 12 Nov 2014 18:52:52 +0000 (13:52 -0500)
Add helper macro for PHY drivers which do not do anything special in
module init/exit. This will allow us to eliminate a lot of boilerplate
code.

Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/phy.h

index d090cfcaa167fe33a4fc0e63562219a813f37c28..07794e7201397ef632df51fbeb8d402ed915e2fa 100644 (file)
@@ -772,4 +772,28 @@ int __init mdio_bus_init(void);
 void mdio_bus_exit(void);
 
 extern struct bus_type mdio_bus_type;
+
+/**
+ * module_phy_driver() - Helper macro for registering PHY drivers
+ * @__phy_drivers: array of PHY drivers to register
+ *
+ * Helper macro for PHY drivers which do not do anything special in module
+ * init/exit. Each module may only use this macro once, and calling it
+ * replaces module_init() and module_exit().
+ */
+#define phy_module_driver(__phy_drivers, __count)                      \
+static int __init phy_module_init(void)                                        \
+{                                                                      \
+       return phy_drivers_register(__phy_drivers, __count);            \
+}                                                                      \
+module_init(phy_module_init);                                          \
+static void __exit phy_module_exit(void)                               \
+{                                                                      \
+       phy_drivers_unregister(__phy_drivers, __count);                 \
+}                                                                      \
+module_exit(phy_module_exit)
+
+#define module_phy_driver(__phy_drivers)                               \
+       phy_module_driver(__phy_drivers, ARRAY_SIZE(__phy_drivers))
+
 #endif /* __PHY_H */