Message ID | 20180312171001.129209-2-brad.mouring@ni.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | macb: Introduce phy-handle DT functionality | expand |
On 03/12/2018 10:09 AM, Brad Mouring wrote: > The macb mii setup (mii_probe() and mii_init()) previously was > somewhat interspersed, likely a result of organic growth and hacking. > > This change moves mii bus registration into mii_init and probing the > bus for devices into mii_probe. > > Signed-off-by: Brad Mouring <brad.mouring@ni.com> > Suggested-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> > --- > drivers/net/ethernet/cadence/macb_main.c | 79 +++++++++++++++++--------------- > 1 file changed, 41 insertions(+), 38 deletions(-) > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index e84afcf1ecb5..9b6195fbbf8e 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -472,8 +472,42 @@ static int macb_mii_probe(struct net_device *dev) > struct macb *bp = netdev_priv(dev); > struct macb_platform_data *pdata; > struct phy_device *phydev; > - int phy_irq; > - int ret; > + struct device_node *np; > + int phy_irq, ret, i; > + > + pdata = dev_get_platdata(&bp->pdev->dev); > + np = bp->pdev->dev.of_node; > + ret = 0; > + > + if (np) { Nit: a future cleanup (not this patch series) should consider doing an early check on np to reduce the indentation.
Hi Brad,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v4.16-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Brad-Mouring/net-macb-Reorganize-macb_mii-bringup/20180313-113743
config: x86_64-randconfig-x003-201810 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
Note: the linux-review/Brad-Mouring/net-macb-Reorganize-macb_mii-bringup/20180313-113743 HEAD dbe45eb4d14a7cd3d0b9c7ee8e7ca034c1ef3852 builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
drivers/net/ethernet/cadence/macb_main.c: In function 'macb_mii_init':
>> drivers/net/ethernet/cadence/macb_main.c:596:8: error: 'i' undeclared (first use in this function)
for (i = 0; i < PHY_MAX_ADDR; i++)
^
drivers/net/ethernet/cadence/macb_main.c:596:8: note: each undeclared identifier is reported only once for each function it appears in
vim +/i +596 drivers/net/ethernet/cadence/macb_main.c
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 564
421d9df0 drivers/net/ethernet/cadence/macb.c Cyrille Pitchen 2015-03-07 565 static int macb_mii_init(struct macb *bp)
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 566 {
84e0cdb0 drivers/net/ethernet/cadence/macb.c Jamie Iles 2011-03-08 567 struct macb_platform_data *pdata;
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 568 struct device_node *np;
6576bbb8 drivers/net/ethernet/cadence/macb_main.c Brad Mouring 2018-03-12 569 int err;
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 570
3dbda77e drivers/net/macb.c Uwe Kleine-Koenig 2009-07-23 571 /* Enable management port */
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 572 macb_writel(bp, NCR, MACB_BIT(MPE));
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 573
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 574 bp->mii_bus = mdiobus_alloc();
aa50b552 drivers/net/ethernet/cadence/macb.c Moritz Fischer 2016-03-29 575 if (!bp->mii_bus) {
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 576 err = -ENOMEM;
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 577 goto err_out;
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 578 }
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 579
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 580 bp->mii_bus->name = "MACB_mii_bus";
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 581 bp->mii_bus->read = &macb_mdio_read;
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 582 bp->mii_bus->write = &macb_mdio_write;
98d5e57e drivers/net/ethernet/cadence/macb.c Florian Fainelli 2012-01-09 583 snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
98d5e57e drivers/net/ethernet/cadence/macb.c Florian Fainelli 2012-01-09 584 bp->pdev->name, bp->pdev->id);
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 585 bp->mii_bus->priv = bp;
cf669660 drivers/net/ethernet/cadence/macb.c Florian Fainelli 2016-05-02 586 bp->mii_bus->parent = &bp->pdev->dev;
c607a0d9 drivers/net/ethernet/cadence/macb.c Jingoo Han 2013-08-30 587 pdata = dev_get_platdata(&bp->pdev->dev);
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 588
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 589 dev_set_drvdata(&bp->dev->dev, bp->mii_bus);
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 590
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 591 np = bp->pdev->dev.of_node;
dacdbb4d drivers/net/ethernet/cadence/macb.c Michael Grzeschik 2017-06-23 592
6576bbb8 drivers/net/ethernet/cadence/macb_main.c Brad Mouring 2018-03-12 593 if (np) {
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 594 err = of_mdiobus_register(bp->mii_bus, np);
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 595 } else {
83a77e9e drivers/net/ethernet/cadence/macb.c Bartosz Folta 2016-12-14 @596 for (i = 0; i < PHY_MAX_ADDR; i++)
83a77e9e drivers/net/ethernet/cadence/macb.c Bartosz Folta 2016-12-14 597 bp->mii_bus->irq[i] = PHY_POLL;
83a77e9e drivers/net/ethernet/cadence/macb.c Bartosz Folta 2016-12-14 598
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 599 if (pdata)
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 600 bp->mii_bus->phy_mask = pdata->phy_mask;
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 601
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 602 err = mdiobus_register(bp->mii_bus);
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 603 }
89e5785f drivers/net/macb.c Haavard Skinnemoen 2006-11-09 604
148cbb53 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-22 605 if (err)
e7f4dc35 drivers/net/ethernet/cadence/macb.c Andrew Lunn 2016-01-06 606 goto err_out_free_mdiobus;
89e5785f drivers/net/macb.c Haavard Skinnemoen 2006-11-09 607
7daa78e3 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-27 608 err = macb_mii_probe(bp->dev);
7daa78e3 drivers/net/ethernet/cadence/macb.c Boris Brezillon 2013-08-27 609 if (err)
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 610 goto err_out_unregister_bus;
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 611
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 612 return 0;
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 613
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 614 err_out_unregister_bus:
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 615 mdiobus_unregister(bp->mii_bus);
9ce98140 drivers/net/ethernet/cadence/macb_main.c Michael Grzeschik 2017-11-08 616 if (np && of_phy_is_fixed_link(np))
9ce98140 drivers/net/ethernet/cadence/macb_main.c Michael Grzeschik 2017-11-08 617 of_phy_deregister_fixed_link(np);
6576bbb8 drivers/net/ethernet/cadence/macb_main.c Brad Mouring 2018-03-12 618 err_out_free_mdiobus:
6576bbb8 drivers/net/ethernet/cadence/macb_main.c Brad Mouring 2018-03-12 619 of_node_put(bp->phy_node);
298cf9be drivers/net/macb.c Lennert Buytenhek 2008-10-08 620 mdiobus_free(bp->mii_bus);
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 621 err_out:
6c36a707 drivers/net/macb.c frederic RODO 2007-07-12 622 return err;
89e5785f drivers/net/macb.c Haavard Skinnemoen 2006-11-09 623 }
89e5785f drivers/net/macb.c Haavard Skinnemoen 2006-11-09 624
:::::: The code at line 596 was first introduced by commit
:::::: 83a77e9ec4150ee4acc635638f7dedd9da523a26 net: macb: Added PCI wrapper for Platform Driver.
:::::: TO: Bartosz Folta <bfolta@cadence.com>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index e84afcf1ecb5..9b6195fbbf8e 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -472,8 +472,42 @@ static int macb_mii_probe(struct net_device *dev) struct macb *bp = netdev_priv(dev); struct macb_platform_data *pdata; struct phy_device *phydev; - int phy_irq; - int ret; + struct device_node *np; + int phy_irq, ret, i; + + pdata = dev_get_platdata(&bp->pdev->dev); + np = bp->pdev->dev.of_node; + ret = 0; + + if (np) { + if (of_phy_is_fixed_link(np)) { + if (of_phy_register_fixed_link(np) < 0) { + dev_err(&bp->pdev->dev, + "broken fixed-link specification\n"); + return -ENODEV; + } + bp->phy_node = of_node_get(np); + } else { + /* fallback to standard phy registration if no phy were + * found during dt phy registration + */ + if (!phy_find_first(bp->mii_bus)) { + for (i = 0; i < PHY_MAX_ADDR; i++) { + struct phy_device *phydev; + + phydev = mdiobus_scan(bp->mii_bus, i); + if (IS_ERR(phydev) && + PTR_ERR(phydev) != -ENODEV) { + ret = PTR_ERR(phydev); + break; + } + } + + if (ret) + return -ENODEV; + } + } + } if (bp->phy_node) { phydev = of_phy_connect(dev, bp->phy_node, @@ -488,7 +522,6 @@ static int macb_mii_probe(struct net_device *dev) return -ENXIO; } - pdata = dev_get_platdata(&bp->pdev->dev); if (pdata) { if (gpio_is_valid(pdata->phy_irq_pin)) { ret = devm_gpio_request(&bp->pdev->dev, @@ -533,7 +566,7 @@ static int macb_mii_init(struct macb *bp) { struct macb_platform_data *pdata; struct device_node *np; - int err = -ENXIO, i; + int err; /* Enable management port */ macb_writel(bp, NCR, MACB_BIT(MPE)); @@ -556,39 +589,9 @@ static int macb_mii_init(struct macb *bp) dev_set_drvdata(&bp->dev->dev, bp->mii_bus); np = bp->pdev->dev.of_node; - if (np) { - if (of_phy_is_fixed_link(np)) { - if (of_phy_register_fixed_link(np) < 0) { - dev_err(&bp->pdev->dev, - "broken fixed-link specification\n"); - goto err_out_unregister_bus; - } - bp->phy_node = of_node_get(np); - - err = mdiobus_register(bp->mii_bus); - } else { - /* try dt phy registration */ - err = of_mdiobus_register(bp->mii_bus, np); - - /* fallback to standard phy registration if no phy were - * found during dt phy registration - */ - if (!err && !phy_find_first(bp->mii_bus)) { - for (i = 0; i < PHY_MAX_ADDR; i++) { - struct phy_device *phydev; - - phydev = mdiobus_scan(bp->mii_bus, i); - if (IS_ERR(phydev) && - PTR_ERR(phydev) != -ENODEV) { - err = PTR_ERR(phydev); - break; - } - } - if (err) - goto err_out_unregister_bus; - } - } + if (np) { + err = of_mdiobus_register(bp->mii_bus, np); } else { for (i = 0; i < PHY_MAX_ADDR; i++) bp->mii_bus->irq[i] = PHY_POLL; @@ -610,10 +613,10 @@ static int macb_mii_init(struct macb *bp) err_out_unregister_bus: mdiobus_unregister(bp->mii_bus); -err_out_free_mdiobus: - of_node_put(bp->phy_node); if (np && of_phy_is_fixed_link(np)) of_phy_deregister_fixed_link(np); +err_out_free_mdiobus: + of_node_put(bp->phy_node); mdiobus_free(bp->mii_bus); err_out: return err;
The macb mii setup (mii_probe() and mii_init()) previously was somewhat interspersed, likely a result of organic growth and hacking. This change moves mii bus registration into mii_init and probing the bus for devices into mii_probe. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Suggested-by: Andrew Lunn <andrew@lunn.ch> --- drivers/net/ethernet/cadence/macb_main.c | 79 +++++++++++++++++--------------- 1 file changed, 41 insertions(+), 38 deletions(-)