Messages in this thread Patch in this message |  | | From | Andy Shevchenko <> | | Subject | [PATCH net-next v1 1/5] net: mdiobus: Provide fwnode_mdiobus_register() | | Date | Mon, 4 May 2026 09:29:52 +0200 |
| |
Provide an agnostic helper to register MDIO bus independently on the firmware node provider.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/net/mdio/fwnode_mdio.c | 15 +++++++++++++++ include/linux/fwnode_mdio.h | 17 +++++++++++++++++ 2 files changed, 32 insertions(+)
diff --git a/drivers/net/mdio/fwnode_mdio.c b/drivers/net/mdio/fwnode_mdio.c index ba7091518265..7541df43ba6d 100644 --- a/drivers/net/mdio/fwnode_mdio.c +++ b/drivers/net/mdio/fwnode_mdio.c @@ -7,9 +7,11 @@ */ #include <linux/acpi.h> +#include <linux/acpi_mdio.h> #include <linux/dev_printk.h> #include <linux/fwnode_mdio.h> #include <linux/of.h> +#include <linux/of_mdio.h> #include <linux/phy.h> #include <linux/pse-pd/pse.h> @@ -187,3 +189,16 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus, return rc; } EXPORT_SYMBOL(fwnode_mdiobus_register_phy); + +int __fwnode_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode, + struct module *owner) +{ + if (is_of_node(fwnode)) + return __of_mdiobus_register(mdio, to_of_node(fwnode), owner); + + if (is_acpi_node(fwnode)) + return __acpi_mdiobus_register(mdio, fwnode, owner); + + return mdiobus_register(mdio); +} +EXPORT_SYMBOL(__fwnode_mdiobus_register); diff --git a/include/linux/fwnode_mdio.h b/include/linux/fwnode_mdio.h index faf603c48c86..c316b738333a 100644 --- a/include/linux/fwnode_mdio.h +++ b/include/linux/fwnode_mdio.h @@ -16,6 +16,14 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio, int fwnode_mdiobus_register_phy(struct mii_bus *bus, struct fwnode_handle *child, u32 addr); +int __fwnode_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode, + struct module *owner); + +static inline int +fwnode_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode) +{ + return __fwnode_mdiobus_register(mdio, fwnode, THIS_MODULE); +} #else /* CONFIG_FWNODE_MDIO */ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio, struct phy_device *phy, @@ -30,6 +38,15 @@ static inline int fwnode_mdiobus_register_phy(struct mii_bus *bus, { return -EINVAL; } + +static inline int fwnode_mdiobus_register(struct mii_bus *mdio, struct + fwnode_handle *fwnode) +{ + /* Fall back to mdiobus_register() function to register a bus. + * This way, we don't have to keep compat bits around in drivers. + */ + return mdiobus_register(mdio); +} #endif #endif /* __LINUX_FWNODE_MDIO_H */ -- 2.50.1
|  |