@@ -26,6 +26,12 @@
MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
MODULE_LICENSE("GPL");
+int of_mdio_parse_addr(struct device *dev, const struct device_node *np)
+{
+ return fwnode_mdio_parse_addr(dev, of_fwnode_handle(np));
+}
+EXPORT_SYMBOL(of_mdio_parse_addr);
+
/* Extract the clause 22 phy ID from the compatible string of the form
* ethernet-phy-idAAAA.BBBB */
static int of_get_phy_id(struct device_node *device, u32 *phy_id)
@@ -33,28 +33,7 @@ void of_phy_deregister_fixed_link(struct device_node *np);
bool of_phy_is_fixed_link(struct device_node *np);
int of_mdiobus_phy_device_register(struct mii_bus *mdio, struct phy_device *phy,
struct device_node *child, u32 addr);
-
-static inline int of_mdio_parse_addr(struct device *dev,
- const struct device_node *np)
-{
- u32 addr;
- int ret;
-
- ret = of_property_read_u32(np, "reg", &addr);
- if (ret < 0) {
- dev_err(dev, "%s has invalid PHY address\n", np->full_name);
- return ret;
- }
-
- /* A PHY must have a reg property in the range [0-31] */
- if (addr >= PHY_MAX_ADDR) {
- dev_err(dev, "%s PHY address %i is too large\n",
- np->full_name, addr);
- return -EINVAL;
- }
-
- return addr;
-}
+int of_mdio_parse_addr(struct device *dev, const struct device_node *np);
#else /* CONFIG_OF_MDIO */
static inline bool of_mdiobus_child_is_phy(struct device_node *child)
Since function fwnode_mdio_parse_addr() returns the same value that is done by of_mdio_parse_addr() and has the same behavior, wrap the first one. The function was switched as non static in of_mdio.c to avoid including fwnode_mdio.h in of_mdio.h. Signed-off-by: Clément Léger <clement.leger@bootlin.com> --- drivers/net/mdio/of_mdio.c | 6 ++++++ include/linux/of_mdio.h | 23 +---------------------- 2 files changed, 7 insertions(+), 22 deletions(-)