summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-11-12 21:53:11 +0300
committerDavid S. Miller <davem@davemloft.net>2014-11-12 21:53:11 +0300
commit59af81a14477d88a7a808fda2e2af3225a7d3f02 (patch)
treef51f31917782679af7e9dbbd445155130323469b /include
parentc647cc3fd5ee3c3aba34a00326e684684d491de0 (diff)
parent50fd71507e69eb96d15fa0544f23495838ae2dab (diff)
downloadlinux-59af81a14477d88a7a808fda2e2af3225a7d3f02.tar.xz
Merge branch 'module_phy_driver'
Johan Hovold says: ==================== net: phy: add module_phy_driver macro Add module_phy_driver macro that can be used by PHY drivers that only calls phy_driver_register or phy_drivers_register (and the corresponding unregister functions) in their module init (and exit). This allows us to eliminate a lot of boilerplate code. Split in three patches (actual macro and two driver change classes) in order to facilitate review. ==================== Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/phy.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h
index d090cfcaa167..07794e720139 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -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 */