diff mbox series

[v3,net-next,1/4] net: macb: Reorganize macb_mii bringup

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

Commit Message

Brad Mouring March 12, 2018, 5:09 p.m. UTC
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(-)

Comments

Florian Fainelli March 12, 2018, 5:17 p.m. UTC | #1
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.
kernel test robot March 13, 2018, 4:25 a.m. UTC | #2
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 mbox series

Patch

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;