Message ID | 1449625269-46078-2-git-send-email-preid@electromag.com.au |
---|---|
State | Not Applicable, archived |
Headers | show |
Hi Phil, [auto build test ERROR on net-next/master] [also build test ERROR on v4.4-rc4 next-20151208] url: https://github.com/0day-ci/linux/commits/Phil-Reid/stmmac-create-of-compatible-mdio-bus-for-stmacc-driver/20151209-094242 config: x86_64-randconfig-b0-12090825 (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c: In function 'stmmac_mdio_register': >> drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:226:17: error: 'struct stmmac_mdio_bus_data' has no member named 'reset_gpio' mdio_bus_data->reset_gpio = -1; ^ vim +226 drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c 220 } else { 221 netdev_err(ndev, "NO MDIO subnode\n"); 222 return 0; 223 } 224 225 if (priv->device->of_node) > 226 mdio_bus_data->reset_gpio = -1; 227 } 228 229 new_bus = mdiobus_alloc(); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
From: kbuild test robot <lkp@intel.com> Date: Wed, 9 Dec 2015 10:15:17 +0800 > Hi Phil, > > [auto build test ERROR on net-next/master] > [also build test ERROR on v4.4-rc4 next-20151208] > > url: https://github.com/0day-ci/linux/commits/Phil-Reid/stmmac-create-of-compatible-mdio-bus-for-stmacc-driver/20151209-094242 > config: x86_64-randconfig-b0-12090825 (attached as .config) > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > All errors (new ones prefixed by >>): > > drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c: In function 'stmmac_mdio_register': >>> drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:226:17: error: 'struct stmmac_mdio_bus_data' has no member named 'reset_gpio' > mdio_bus_data->reset_gpio = -1; > ^ Yeah this member is only visible when CONFIG_OF. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 9/12/2015 10:15 AM, kbuild test robot wrote: > > url: https://github.com/0day-ci/linux/commits/Phil-Reid/stmmac-create-of-compatible-mdio-bus-for-stmacc-driver/20151209-094242 > config: x86_64-randconfig-b0-12090825 (attached as .config) > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > All errors (new ones prefixed by >>): > > drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c: In function 'stmmac_mdio_register': >>> drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:226:17: error: 'struct stmmac_mdio_bus_data' has no member named 'reset_gpio' > mdio_bus_data->reset_gpio = -1; > ^ G'day Arnd, I got the above error from kbuild test robot. When changing to if (IS_ENABLED(CONFIG_OF)). This was existing code that I moved into this conditional. reset_gpio member only exists when CONFIG_OF is defined. So it looks like I need to move that code back to the #if. unless you have an alternate suggestion. -- Regards Phil Reid -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 09 December 2015 10:47:29 Phil Reid wrote: > On 9/12/2015 10:15 AM, kbuild test robot wrote: > > > > > url: https://github.com/0day-ci/linux/commits/Phil-Reid/stmmac-create-of-compatible-mdio-bus-for-stmacc-driver/20151209-094242 > > config: x86_64-randconfig-b0-12090825 (attached as .config) > > reproduce: > > # save the attached .config to linux build tree > > make ARCH=x86_64 > > > > All errors (new ones prefixed by >>): > > > > drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c: In function 'stmmac_mdio_register': > >>> drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c:226:17: error: 'struct stmmac_mdio_bus_data' has no member named 'reset_gpio' > > mdio_bus_data->reset_gpio = -1; > > ^ > > G'day Arnd, > > I got the above error from kbuild test robot. When changing to if (IS_ENABLED(CONFIG_OF)). > This was existing code that I moved into this conditional. > reset_gpio member only exists when CONFIG_OF is defined. > So it looks like I need to move that code back to the #if. > unless you have an alternate suggestion. I think it would be slightly nicer to remove the #ifdef in the header file as well and always have those members, it's only a few bytes in any system that we are saving here and there are only two actual users of this driver that don't already require CONFIG_OF (blackfin ezkit and mips loongson32). If Giuseppe prefers to keep the #ifdef, going back to your previous version is fine with me too. Arnd -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index f34fc3c..fd5ddf8 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt @@ -47,6 +47,7 @@ Optional properties: - snps,burst_len: The AXI burst lenth value of the AXI BUS MODE register. - tx-fifo-depth: See ethernet.txt file in the same directory - rx-fifo-depth: See ethernet.txt file in the same directory +- mdio: with compatible = "snps,dwmac-mdio", create and register mdio bus. Examples: @@ -65,4 +66,11 @@ Examples: tx-fifo-depth = <16384>; clocks = <&clock>; clock-names = "stmmaceth"; + mdio0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + phy1: ethernet-phy@0 { + }; + }; }; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index bba670c..0fcecb2 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -29,7 +29,7 @@ #include <linux/slab.h> #include <linux/of.h> #include <linux/of_gpio.h> - +#include <linux/of_mdio.h> #include <asm/io.h> #include "stmmac.h" @@ -200,10 +200,32 @@ int stmmac_mdio_register(struct net_device *ndev) struct stmmac_priv *priv = netdev_priv(ndev); struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data; int addr, found; + struct device_node *mdio_node = NULL; + struct device_node *child_node = NULL; if (!mdio_bus_data) return 0; + if (IS_ENABLED(CONFIG_OF)) { + for_each_child_of_node(priv->device->of_node, child_node) { + if (of_device_is_compatible(child_node, + "snps,dwmac-mdio")) { + mdio_node = child_node; + break; + } + } + + if (mdio_node) { + netdev_dbg(ndev, "FOUND MDIO subnode\n"); + } else { + netdev_err(ndev, "NO MDIO subnode\n"); + return 0; + } + + if (priv->device->of_node) + mdio_bus_data->reset_gpio = -1; + } + new_bus = mdiobus_alloc(); if (new_bus == NULL) return -ENOMEM; @@ -216,11 +238,6 @@ int stmmac_mdio_register(struct net_device *ndev) irqlist = priv->mii_irq; } -#ifdef CONFIG_OF - if (priv->device->of_node) - mdio_bus_data->reset_gpio = -1; -#endif - new_bus->name = "stmmac"; new_bus->read = &stmmac_mdio_read; new_bus->write = &stmmac_mdio_write; @@ -231,7 +248,8 @@ int stmmac_mdio_register(struct net_device *ndev) new_bus->irq = irqlist; new_bus->phy_mask = mdio_bus_data->phy_mask; new_bus->parent = priv->device; - err = mdiobus_register(new_bus); + + err = of_mdiobus_register(new_bus, mdio_node); if (err != 0) { pr_err("%s: Cannot register as MDIO bus\n", new_bus->name); goto bus_register_fail; @@ -284,13 +302,6 @@ int stmmac_mdio_register(struct net_device *ndev) } } - if (!found) { - pr_warn("%s: No PHY found\n", ndev->name); - mdiobus_unregister(new_bus); - mdiobus_free(new_bus); - return -ENODEV; - } - priv->mii = new_bus; return 0; diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index d02691b..6863420 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -146,7 +146,7 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); - if (plat->phy_node || plat->phy_bus_name) + if (plat->phy_bus_name) plat->mdio_bus_data = NULL; else plat->mdio_bus_data =