Hi Randy, On Tue, May 18, 2021 at 09:32:49AM -0700, Randy Dunlap wrote: > On 5/18/21 2:27 AM, Stephen Rothwell wrote: > > Hi all, > > > > Changes since 20210514: > > > > on x86_64: > # CONFIG_OF is not set > > ../drivers/net/dsa/qca8k.c: In function ‘qca8k_mdio_register’: > ../drivers/net/dsa/qca8k.c:797:9: error: implicit declaration of function ‘devm_of_mdiobus_register’; did you mean ‘devm_mdiobus_register’? [-Werror=implicit-function-declaration] > return devm_of_mdiobus_register(priv->dev, bus, mdio); > > > Should there be a stub for this function in <linux/of_mdio.h>? > or the driver could add a dependency on OF_MDIO. > > Full randconfig file is attached. > > -- > ~Randy > Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > Would something like this work? -----------------------------[ cut here ]----------------------------- >From 36c0b3f04ebfa51e52bd1bc2dc447d12d1c6e119 Mon Sep 17 00:00:00 2001 From: Vladimir Oltean <olteanv@xxxxxxxxx> Date: Tue, 18 May 2021 19:39:18 +0300 Subject: [PATCH] net: mdio: provide shim implementation of devm_of_mdiobus_register Similar to the way in which of_mdiobus_register() has a fallback to the non-DT based mdiobus_register() when CONFIG_OF is not set, we can create a shim for the device-managed devm_of_mdiobus_register() which calls devm_mdiobus_register() and discards the struct device_node *. In particular, this solves a build issue with the qca8k DSA driver which uses devm_of_mdiobus_register and can be compiled without CONFIG_OF. Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Signed-off-by: Vladimir Oltean <olteanv@xxxxxxxxx> --- include/linux/of_mdio.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h index 2b05e7f7c238..da633d34ab86 100644 --- a/include/linux/of_mdio.h +++ b/include/linux/of_mdio.h @@ -72,6 +72,13 @@ static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node * return mdiobus_register(mdio); } +static inline int devm_of_mdiobus_register(struct device *dev, + struct mii_bus *mdio, + struct device_node *np) +{ + return devm_mdiobus_register(dev, mdio); +} + static inline struct mdio_device *of_mdio_find_device(struct device_node *np) { return NULL; -----------------------------[ cut here ]-----------------------------