* [PATCH 1/2] net: macb: Add phy-handle DT support @ 2018-03-07 22:42 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-07 22:42 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index e84afcf1ecb5..cc5b9e6e3526 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -567,6 +567,9 @@ static int macb_mii_init(struct macb *bp) err = mdiobus_register(bp->mii_bus); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* try dt phy registration */ err = of_mdiobus_register(bp->mii_bus, np); -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH 1/2] net: macb: Add phy-handle DT support @ 2018-03-07 22:42 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-07 22:42 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index e84afcf1ecb5..cc5b9e6e3526 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -567,6 +567,9 @@ static int macb_mii_init(struct macb *bp) err = mdiobus_register(bp->mii_bus); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* try dt phy registration */ err = of_mdiobus_register(bp->mii_bus, np); -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH 2/2] Documentation: macb: Document phy-handle optional binding 2018-03-07 22:42 ` Brad Mouring @ 2018-03-07 22:42 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-07 22:42 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel, Brad Mouring Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH 2/2] Documentation: macb: Document phy-handle optional binding @ 2018-03-07 22:42 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-07 22:42 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel, Brad Mouring Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [1/2] net: macb: Add phy-handle DT support 2018-03-07 22:42 ` Brad Mouring (?) (?) @ 2018-03-08 17:32 ` Andrew Lunn 2018-03-08 22:00 ` Brad Mouring 2018-03-09 22:12 ` Brad Mouring -1 siblings, 2 replies; 58+ messages in thread From: Andrew Lunn @ 2018-03-08 17:32 UTC (permalink / raw) To: Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel On Wed, Mar 07, 2018 at 04:42:56PM -0600, Brad Mouring wrote: > This optional binding (as described in the ethernet DT bindings doc) > directs the netdev to the phydev to use. This is useful for a phy > chip that has >1 phy in it, and two netdevs are using the same phy > chip (i.e. the second mac's phy lives on the first mac's MDIO bus) > > The devicetree snippet would look something like this: > > ethernet@feedf00d { > ... > phy-handle = <&phy0> // the first netdev is physically wired to phy0 > ... > phy0: phy@0 { > ... > reg = <0x0> // MDIO address 0 > ... > } > phy1: phy@1 { > ... > reg = <0x1> // MDIO address 1 > ... > } > ... > } > > ethernet@deadbeef { > ... > phy-handle = <&phy1> // tells the driver to use phy1 on the > // first mac's mdio bus (it's wired thusly) > ... > } > > The work done to add the phy_node in the first place (dacdbb4dfc1a1: > "net: macb: add fixed-link node support") will consume the > device_node (if found). > > Signed-off-by: Brad Mouring <brad.mouring@ni.com> > --- > drivers/net/ethernet/cadence/macb_main.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index e84afcf1ecb5..cc5b9e6e3526 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -567,6 +567,9 @@ static int macb_mii_init(struct macb *bp) > > err = mdiobus_register(bp->mii_bus); > } else { > + /* attempt to find a phy-handle */ > + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); > + > /* try dt phy registration */ > err = of_mdiobus_register(bp->mii_bus, np); > Hi Brad I think it is more logical to do this in macb_mii_probe(). I would probably also move the fixed_link code from macb_mii_init() to macb_mii_probe(). I would probably also move the fallback to standard phy registration. Make macb_mii_init() about registering the MDIO bus, and macb_mii_probe() about probing the MDIO bus to find the PHY to use. At the moment, it is all rather mixed up. Andrew ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [1/2] net: macb: Add phy-handle DT support 2018-03-08 17:32 ` [1/2] net: macb: Add phy-handle DT support Andrew Lunn @ 2018-03-08 22:00 ` Brad Mouring 2018-03-09 22:12 ` Brad Mouring 1 sibling, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-08 22:00 UTC (permalink / raw) To: Andrew Lunn Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel On Thu, Mar 08, 2018 at 06:32:47PM +0100, Andrew Lunn wrote: > On Wed, Mar 07, 2018 at 04:42:56PM -0600, Brad Mouring wrote: > > This optional binding (as described in the ethernet DT bindings doc) > > directs the netdev to the phydev to use. This is useful for a phy > > chip that has >1 phy in it, and two netdevs are using the same phy > > chip (i.e. the second mac's phy lives on the first mac's MDIO bus) > > ... > Hi Brad > > I think it is more logical to do this in macb_mii_probe(). > > I would probably also move the fixed_link code from macb_mii_init() to > macb_mii_probe(). I would probably also move the fallback to standard > phy registration. Make macb_mii_init() about registering the MDIO bus, > and macb_mii_probe() about probing the MDIO bus to find the PHY to > use. At the moment, it is all rather mixed up. > > Andrew Hi Andrew That makes sense, I'll rework and resend. Thanks for the suggestion. Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [1/2] net: macb: Add phy-handle DT support @ 2018-03-08 22:00 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-08 22:00 UTC (permalink / raw) To: Andrew Lunn Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree, linux-kernel On Thu, Mar 08, 2018 at 06:32:47PM +0100, Andrew Lunn wrote: > On Wed, Mar 07, 2018 at 04:42:56PM -0600, Brad Mouring wrote: > > This optional binding (as described in the ethernet DT bindings doc) > > directs the netdev to the phydev to use. This is useful for a phy > > chip that has >1 phy in it, and two netdevs are using the same phy > > chip (i.e. the second mac's phy lives on the first mac's MDIO bus) > > ... > Hi Brad > > I think it is more logical to do this in macb_mii_probe(). > > I would probably also move the fixed_link code from macb_mii_init() to > macb_mii_probe(). I would probably also move the fallback to standard > phy registration. Make macb_mii_init() about registering the MDIO bus, > and macb_mii_probe() about probing the MDIO bus to find the PHY to > use. At the moment, it is all rather mixed up. > > Andrew Hi Andrew That makes sense, I'll rework and resend. Thanks for the suggestion. Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup 2018-03-08 17:32 ` [1/2] net: macb: Add phy-handle DT support Andrew Lunn @ 2018-03-09 22:12 ` Brad Mouring 2018-03-09 22:12 ` Brad Mouring 1 sibling, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring 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 | 89 ++++++++++++++++---------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index e84afcf1ecb5..7b69a291ab7a 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -470,10 +470,48 @@ static void macb_handle_link_change(struct net_device *dev) static int macb_mii_probe(struct net_device *dev) { struct macb *bp = netdev_priv(dev); - struct macb_platform_data *pdata; + struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); struct phy_device *phydev; + struct device_node *np = bp->pdev->dev.of_node; int phy_irq; - int ret; + int ret, i; + + 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; + } + } + } else { + for (i = 0; i < PHY_MAX_ADDR; i++) + bp->mii_bus->irq[i] = PHY_POLL; + + if (pdata) + bp->mii_bus->phy_mask = pdata->phy_mask; + + } if (bp->phy_node) { phydev = of_phy_connect(dev, bp->phy_node, @@ -488,7 +526,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 +570,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,46 +593,10 @@ 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; - - if (pdata) - bp->mii_bus->phy_mask = pdata->phy_mask; - err = mdiobus_register(bp->mii_bus); } @@ -610,10 +611,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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup @ 2018-03-09 22:12 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring 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 | 89 ++++++++++++++++---------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index e84afcf1ecb5..7b69a291ab7a 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -470,10 +470,48 @@ static void macb_handle_link_change(struct net_device *dev) static int macb_mii_probe(struct net_device *dev) { struct macb *bp = netdev_priv(dev); - struct macb_platform_data *pdata; + struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); struct phy_device *phydev; + struct device_node *np = bp->pdev->dev.of_node; int phy_irq; - int ret; + int ret, i; + + 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; + } + } + } else { + for (i = 0; i < PHY_MAX_ADDR; i++) + bp->mii_bus->irq[i] = PHY_POLL; + + if (pdata) + bp->mii_bus->phy_mask = pdata->phy_mask; + + } if (bp->phy_node) { phydev = of_phy_connect(dev, bp->phy_node, @@ -488,7 +526,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 +570,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,46 +593,10 @@ 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; - - if (pdata) - bp->mii_bus->phy_mask = pdata->phy_mask; - err = mdiobus_register(bp->mii_bus); } @@ -610,10 +611,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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 2/3] net: macb: Add phy-handle DT support 2018-03-09 22:12 ` Brad Mouring @ 2018-03-09 22:12 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 7b69a291ab7a..af458ab62601 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -485,6 +485,9 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no phy were * found during dt phy registration */ -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 2/3] net: macb: Add phy-handle DT support @ 2018-03-09 22:12 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 7b69a291ab7a..af458ab62601 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -485,6 +485,9 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no phy were * found during dt phy registration */ -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 3/3] Documentation: macb: Document phy-handle optional binding 2018-03-09 22:12 ` Brad Mouring @ 2018-03-09 22:12 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v2 net-next 3/3] Documentation: macb: Document phy-handle optional binding @ 2018-03-09 22:12 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-09 22:12 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 3/3] Documentation: macb: Document phy-handle optional binding 2018-03-09 22:12 ` Brad Mouring (?) @ 2018-03-10 16:18 ` Andrew Lunn -1 siblings, 0 replies; 58+ messages in thread From: Andrew Lunn @ 2018-03-10 16:18 UTC (permalink / raw) To: Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree On Fri, Mar 09, 2018 at 04:12:33PM -0600, Brad Mouring wrote: You should have at least one line here, even if it is the subject line differently worded. > Signed-off-by: Brad Mouring <brad.mouring@ni.com> ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup 2018-03-09 22:12 ` Brad Mouring ` (2 preceding siblings ...) (?) @ 2018-03-10 16:17 ` Andrew Lunn 2018-03-10 22:19 ` Brad Mouring 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring -1 siblings, 2 replies; 58+ messages in thread From: Andrew Lunn @ 2018-03-10 16:17 UTC (permalink / raw) To: Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree On Fri, Mar 09, 2018 at 04:12:31PM -0600, Brad Mouring wrote: > The macb mii setup (mii_probe() and mii_init()) previously was > somewhat interspersed, likely a result of organic growth and hacking. Hi Brad For netdev it is normal to include a cover note for patch series, which explains the big picture of the series. The cover note is then used as the merge commit message. > > 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 | 89 ++++++++++++++++---------------- > 1 file changed, 45 insertions(+), 44 deletions(-) > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index e84afcf1ecb5..7b69a291ab7a 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -470,10 +470,48 @@ static void macb_handle_link_change(struct net_device *dev) > static int macb_mii_probe(struct net_device *dev) > { > struct macb *bp = netdev_priv(dev); > - struct macb_platform_data *pdata; > + struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); > struct phy_device *phydev; > + struct device_node *np = bp->pdev->dev.of_node; > int phy_irq; > - int ret; > + int ret, i; These should be in 'Reverse Christmas Tree' order. i.e. longest first. That makes pdata tricky, so do the assignment in the body of the function. > + > + 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; > + } > + } > + } else { > + for (i = 0; i < PHY_MAX_ADDR; i++) > + bp->mii_bus->irq[i] = PHY_POLL; > + > + if (pdata) > + bp->mii_bus->phy_mask = pdata->phy_mask; I would say these two are to do with the mdio bus setup. Setting irq to POLL is not required, the core will do that. So you could add one patch removing that. Andrew ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup 2018-03-10 16:17 ` [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup Andrew Lunn @ 2018-03-10 22:19 ` Brad Mouring 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring 1 sibling, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-10 22:19 UTC (permalink / raw) To: Andrew Lunn Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree Hi Andrew, On Sat, Mar 10, 2018 at 05:17:18PM +0100, Andrew Lunn wrote: > On Fri, Mar 09, 2018 at 04:12:31PM -0600, Brad Mouring wrote: > > The macb mii setup (mii_probe() and mii_init()) previously was > > somewhat interspersed, likely a result of organic growth and hacking. > > Hi Brad > > For netdev it is normal to include a cover note for patch series, > which explains the big picture of the series. The cover note is then > used as the merge commit message. > > > > > 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 | 89 ++++++++++++++++---------------- > > 1 file changed, 45 insertions(+), 44 deletions(-) > > > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > > index e84afcf1ecb5..7b69a291ab7a 100644 > > --- a/drivers/net/ethernet/cadence/macb_main.c > > +++ b/drivers/net/ethernet/cadence/macb_main.c > > @@ -470,10 +470,48 @@ static void macb_handle_link_change(struct net_device *dev) > > static int macb_mii_probe(struct net_device *dev) > > { > > struct macb *bp = netdev_priv(dev); > > - struct macb_platform_data *pdata; > > + struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); > > struct phy_device *phydev; > > + struct device_node *np = bp->pdev->dev.of_node; > > int phy_irq; > > - int ret; > > + int ret, i; > > These should be in 'Reverse Christmas Tree' order. i.e. longest > first. That makes pdata tricky, so do the assignment in the body of > the function. > > > + > > + 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; > > + } > > + } > > + } else { > > + for (i = 0; i < PHY_MAX_ADDR; i++) > > + bp->mii_bus->irq[i] = PHY_POLL; > > + > > + if (pdata) > > + bp->mii_bus->phy_mask = pdata->phy_mask; > > I would say these two are to do with the mdio bus setup. Setting irq > to POLL is not required, the core will do that. So you could add one > patch removing that. > > Andrew Thank you for the excellent feedback and patience. I've prepped a set of patches addressing your points, but I'd like to test the changes on hardware first (both with a DT that calls out the phys and one that depends on default discovery) prior to a v3 (with appropriate cover letter). Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup @ 2018-03-10 22:19 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-10 22:19 UTC (permalink / raw) To: Andrew Lunn Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree Hi Andrew, On Sat, Mar 10, 2018 at 05:17:18PM +0100, Andrew Lunn wrote: > On Fri, Mar 09, 2018 at 04:12:31PM -0600, Brad Mouring wrote: > > The macb mii setup (mii_probe() and mii_init()) previously was > > somewhat interspersed, likely a result of organic growth and hacking. > > Hi Brad > > For netdev it is normal to include a cover note for patch series, > which explains the big picture of the series. The cover note is then > used as the merge commit message. > > > > > 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 | 89 ++++++++++++++++---------------- > > 1 file changed, 45 insertions(+), 44 deletions(-) > > > > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > > index e84afcf1ecb5..7b69a291ab7a 100644 > > --- a/drivers/net/ethernet/cadence/macb_main.c > > +++ b/drivers/net/ethernet/cadence/macb_main.c > > @@ -470,10 +470,48 @@ static void macb_handle_link_change(struct net_device *dev) > > static int macb_mii_probe(struct net_device *dev) > > { > > struct macb *bp = netdev_priv(dev); > > - struct macb_platform_data *pdata; > > + struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); > > struct phy_device *phydev; > > + struct device_node *np = bp->pdev->dev.of_node; > > int phy_irq; > > - int ret; > > + int ret, i; > > These should be in 'Reverse Christmas Tree' order. i.e. longest > first. That makes pdata tricky, so do the assignment in the body of > the function. > > > + > > + 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; > > + } > > + } > > + } else { > > + for (i = 0; i < PHY_MAX_ADDR; i++) > > + bp->mii_bus->irq[i] = PHY_POLL; > > + > > + if (pdata) > > + bp->mii_bus->phy_mask = pdata->phy_mask; > > I would say these two are to do with the mdio bus setup. Setting irq > to POLL is not required, the core will do that. So you could add one > patch removing that. > > Andrew Thank you for the excellent feedback and patience. I've prepped a set of patches addressing your points, but I'd like to test the changes on hardware first (both with a DT that calls out the phys and one that depends on default discovery) prior to a v3 (with appropriate cover letter). Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality 2018-03-10 16:17 ` [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup Andrew Lunn 2018-03-10 22:19 ` Brad Mouring @ 2018-03-12 17:09 ` Brad Mouring 2018-03-12 17:09 ` Brad Mouring ` (3 more replies) 1 sibling, 4 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:09 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree Consider the situation where a macb netdev is connected through a phydev that sits on a mii bus other than the one provided to this particular netdev. This situation is what this patchset aims to accomplish through the existing phy-handle optional binding. This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is precisely the situation this patchset aims to solve, so it makes sense to introduce the functionality to this driver (where the physical layout discussed was encountered). The devicetree snippet would look something like this: ... ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } ... The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). v2: Reorganization of mii probe/init functions, suggested by Andrew Lunn v3: Moved some of the bus init code back into init (erroneously moved to probe) some style issues, and an unintialized variable warning addressed. ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring @ 2018-03-12 17:09 ` Brad Mouring 2018-03-12 17:09 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:09 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring 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(-) 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup @ 2018-03-12 17:09 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:09 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring 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(-) 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup 2018-03-12 17:09 ` Brad Mouring (?) @ 2018-03-12 17:17 ` Florian Fainelli -1 siblings, 0 replies; 58+ messages in thread From: Florian Fainelli @ 2018-03-12 17:17 UTC (permalink / raw) To: Brad Mouring, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree 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. -- Florian ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup 2018-03-12 17:09 ` Brad Mouring @ 2018-03-13 4:25 ` kbuild test robot -1 siblings, 0 replies; 58+ messages in thread From: kbuild test robot @ 2018-03-13 4:25 UTC (permalink / raw) To: Brad Mouring Cc: kbuild-all, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn, Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring [-- Attachment #1: Type: text/plain, Size: 8078 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 29486 bytes --] ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup @ 2018-03-13 4:25 ` kbuild test robot 0 siblings, 0 replies; 58+ messages in thread From: kbuild test robot @ 2018-03-13 4:25 UTC (permalink / raw) To: Brad Mouring Cc: kbuild-all, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn, Mark Rutland, netdev, Julia Cartwright, devicetree [-- Attachment #1: Type: text/plain, Size: 8078 bytes --] 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 [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 29486 bytes --] ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 2/4] net: macb: Remove redundant poll irq assignment 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring @ 2018-03-12 17:09 ` Brad Mouring 2018-03-12 17:09 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:09 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Suggested-by: Andrew Lunn <andrew@lunn.ch> --- drivers/net/ethernet/cadence/macb_main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 9b6195fbbf8e..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 2/4] net: macb: Remove redundant poll irq assignment @ 2018-03-12 17:09 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:09 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Suggested-by: Andrew Lunn <andrew@lunn.ch> --- drivers/net/ethernet/cadence/macb_main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 9b6195fbbf8e..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 2/4] net: macb: Remove redundant poll irq assignment 2018-03-12 17:09 ` Brad Mouring (?) @ 2018-03-12 17:17 ` Florian Fainelli -1 siblings, 0 replies; 58+ messages in thread From: Florian Fainelli @ 2018-03-12 17:17 UTC (permalink / raw) To: Brad Mouring, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree On 03/12/2018 10:09 AM, Brad Mouring wrote: > In phy_device's general probe, this device will already be set for > phy register polling, rendering this code redundant. > > Signed-off-by: Brad Mouring <brad.mouring@ni.com> > Suggested-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -- Florian ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring @ 2018-03-12 17:10 ` Brad Mouring 2018-03-12 17:09 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:10 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..b0700a531f3e 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,6 +488,9 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no phy were * found during dt phy registration */ -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 3/4] net: macb: Add phy-handle DT support @ 2018-03-12 17:10 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:10 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..b0700a531f3e 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,6 +488,9 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { + /* attempt to find a phy-handle */ + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no phy were * found during dt phy registration */ -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 17:10 ` Brad Mouring (?) @ 2018-03-12 17:59 ` Andrew Lunn 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring -1 siblings, 1 reply; 58+ messages in thread From: Andrew Lunn @ 2018-03-12 17:59 UTC (permalink / raw) To: Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree > @@ -488,6 +488,9 @@ static int macb_mii_probe(struct net_device *dev) > } > bp->phy_node = of_node_get(np); > } else { > + /* attempt to find a phy-handle */ > + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); > + Hi Brad It seems like you should check the return value here, any only continue with the fallback if there was not a phy-handle. > /* fallback to standard phy registration if no phy were > * found during dt phy registration > */ Andrew ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 0/4] 2018-03-12 17:59 ` Andrew Lunn @ 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` Brad Mouring ` (3 more replies) 0 siblings, 4 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree Consider the situation where a macb netdev is connected through a phydev that sits on a mii bus other than the one provided to this particular netdev. This situation is what this patchset aims to accomplish through the existing phy-handle optional binding. This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is precisely the situation this patchset aims to solve, so it makes sense to introduce the functionality to this driver (where the physical layout discussed was encountered). The devicetree snippet would look something like this: ... ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } ... The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). v2: Reorganization of mii probe/init functions, suggested by Andrew Lunn v3: Moved some of the bus init code back into init (erroneously moved to probe) some style issues, and an unintialized variable warning addressed. v4: Add Reviewed-by: tags Skip fallback code if phy-handle phandle is found ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 1/4] net: macb: Reorganize macb_mii bringup 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring @ 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring 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) { + 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 1/4] net: macb: Reorganize macb_mii bringup @ 2018-03-12 21:34 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring 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) { + 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 2/4] net: macb: Remove redundant poll irq assignment 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring @ 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. 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 | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 9b6195fbbf8e..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 2/4] net: macb: Remove redundant poll irq assignment @ 2018-03-12 21:34 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. 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 | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 9b6195fbbf8e..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring @ 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 34 ++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..4a2ad35d41aa 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,23 +488,27 @@ static int macb_mii_probe(struct net_device *dev) } 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; + /* attempt to find a phy-handle */ + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { + + /* 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 (ret) - return -ENODEV; } } } -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support @ 2018-03-12 21:34 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 34 ++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..4a2ad35d41aa 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,23 +488,27 @@ static int macb_mii_probe(struct net_device *dev) } 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; + /* attempt to find a phy-handle */ + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { + + /* 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 (ret) - return -ENODEV; } } } -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 21:34 ` Brad Mouring (?) @ 2018-03-12 21:57 ` Andrew Lunn 2018-03-12 22:30 ` Florian Fainelli -1 siblings, 1 reply; 58+ messages in thread From: Andrew Lunn @ 2018-03-12 21:57 UTC (permalink / raw) To: Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree > + /* attempt to find a phy-handle */ > + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > + > + /* 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; > + } Hi Brad ./scipts/checkpatch.pl ~/brad.mouring WARNING: line over 80 characters #122: FILE: drivers/net/ethernet/cadence/macb_main.c:492: + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { ERROR: do not use assignment in if condition #122: FILE: drivers/net/ethernet/cadence/macb_main.c:492: + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { CHECK: Blank lines aren't necessary after an open brace '{' #123: FILE: drivers/net/ethernet/cadence/macb_main.c:493: + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { + WARNING: line over 80 characters #124: FILE: drivers/net/ethernet/cadence/macb_main.c:494: + /* fallback to standard phy registration if no phy were ERROR: trailing whitespace #130: FILE: drivers/net/ethernet/cadence/macb_main.c:500: +^I$ WARNING: line over 80 characters #131: FILE: drivers/net/ethernet/cadence/macb_main.c:501: + phydev = mdiobus_scan(bp->mii_bus, i); WARNING: Too many leading tabs - consider code refactoring #132: FILE: drivers/net/ethernet/cadence/macb_main.c:502: + if (IS_ERR(phydev) && etc Andrew ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 21:57 ` Andrew Lunn @ 2018-03-12 22:30 ` Florian Fainelli 2018-03-13 13:49 ` Brad Mouring 2018-03-13 21:32 ` Brad Mouring 0 siblings, 2 replies; 58+ messages in thread From: Florian Fainelli @ 2018-03-12 22:30 UTC (permalink / raw) To: Andrew Lunn, Brad Mouring Cc: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree On 03/12/2018 02:57 PM, Andrew Lunn wrote: >> + /* attempt to find a phy-handle */ >> + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { >> + >> + /* 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; >> + } > > Hi Brad I would be a bit relaxed on these warnings because the existing function indentation really makes it easy to be over 80 columns. Unless you have a preliminary patch which, as I was suggesting earlier, re-arranges the branches such that if (!np) is the first thing you test, I don't see how this can look any better... > > ./scipts/checkpatch.pl ~/brad.mouring > WARNING: line over 80 characters > #122: FILE: drivers/net/ethernet/cadence/macb_main.c:492: > + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > > ERROR: do not use assignment in if condition > #122: FILE: drivers/net/ethernet/cadence/macb_main.c:492: > + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > > CHECK: Blank lines aren't necessary after an open brace '{' > #123: FILE: drivers/net/ethernet/cadence/macb_main.c:493: > + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > + > > WARNING: line over 80 characters > #124: FILE: drivers/net/ethernet/cadence/macb_main.c:494: > + /* fallback to standard phy registration if no phy were > > ERROR: trailing whitespace > #130: FILE: drivers/net/ethernet/cadence/macb_main.c:500: > +^I$ > > WARNING: line over 80 characters > #131: FILE: drivers/net/ethernet/cadence/macb_main.c:501: > + phydev = mdiobus_scan(bp->mii_bus, i); > > WARNING: Too many leading tabs - consider code refactoring > #132: FILE: drivers/net/ethernet/cadence/macb_main.c:502: > + if (IS_ERR(phydev) && > > etc > > Andrew > -- > 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 > -- Florian ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-12 22:30 ` Florian Fainelli @ 2018-03-13 13:49 ` Brad Mouring 2018-03-13 21:32 ` Brad Mouring 1 sibling, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 13:49 UTC (permalink / raw) To: Florian Fainelli Cc: Andrew Lunn, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree On Mon, Mar 12, 2018 at 03:30:53PM -0700, Florian Fainelli wrote: > On 03/12/2018 02:57 PM, Andrew Lunn wrote: > >> + /* attempt to find a phy-handle */ > >> + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > >> + > >> + /* 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; > >> + } > > > > Hi Brad > > I would be a bit relaxed on these warnings because the existing function > indentation really makes it easy to be over 80 columns. Unless you have > a preliminary patch which, as I was suggesting earlier, re-arranges the > branches such that if (!np) is the first thing you test, I don't see how > this can look any better... I'll try to work this a bit more, thanks for the feedback and the patience. -- Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support @ 2018-03-13 13:49 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 13:49 UTC (permalink / raw) To: Florian Fainelli Cc: Andrew Lunn, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Mark Rutland, netdev, Julia Cartwright, devicetree On Mon, Mar 12, 2018 at 03:30:53PM -0700, Florian Fainelli wrote: > On 03/12/2018 02:57 PM, Andrew Lunn wrote: > >> + /* attempt to find a phy-handle */ > >> + if (!(bp->phy_node = of_parse_phandle(np, "phy-handle", 0))) { > >> + > >> + /* 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; > >> + } > > > > Hi Brad > > I would be a bit relaxed on these warnings because the existing function > indentation really makes it easy to be over 80 columns. Unless you have > a preliminary patch which, as I was suggesting earlier, re-arranges the > branches such that if (!np) is the first thing you test, I don't see how > this can look any better... I'll try to work this a bit more, thanks for the feedback and the patience. -- Brad ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 0/4] net: macb: Introduce phy-handle DT functionality 2018-03-12 22:30 ` Florian Fainelli @ 2018-03-13 21:32 ` Brad Mouring 2018-03-13 21:32 ` Brad Mouring 1 sibling, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree Consider the situation where a macb netdev is connected through a phydev that sits on a mii bus other than the one provided to this particular netdev. This situation is what this patchset aims to accomplish through the existing phy-handle optional binding. This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is precisely the situation this patchset aims to solve, so it makes sense to introduce the functionality to this driver (where the physical layout discussed was encountered). The devicetree snippet would look something like this: ... ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } ... The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). v2: Reorganization of mii probe/init functions, suggested by Andrew Lunn v3: Moved some of the bus init code back into init (erroneously moved to probe) some style issues, and an unintialized variable warning addressed. v4: Add Reviewed-by: tags Skip fallback code if phy-handle phandle is found v5: Cleanup formatting issues Fix compile failure introduced in 1/4 "net: macb: Reorganize macb_mii bringup" Fix typo in "Documentation: macb: Document phy-handle binding" ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 0/4] net: macb: Introduce phy-handle DT functionality @ 2018-03-13 21:32 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree Consider the situation where a macb netdev is connected through a phydev that sits on a mii bus other than the one provided to this particular netdev. This situation is what this patchset aims to accomplish through the existing phy-handle optional binding. This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is precisely the situation this patchset aims to solve, so it makes sense to introduce the functionality to this driver (where the physical layout discussed was encountered). The devicetree snippet would look something like this: ... ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } ... The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). v2: Reorganization of mii probe/init functions, suggested by Andrew Lunn v3: Moved some of the bus init code back into init (erroneously moved to probe) some style issues, and an unintialized variable warning addressed. v4: Add Reviewed-by: tags Skip fallback code if phy-handle phandle is found v5: Cleanup formatting issues Fix compile failure introduced in 1/4 "net: macb: Reorganize macb_mii bringup" Fix typo in "Documentation: macb: Document phy-handle binding" ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 1/4] net: macb: Reorganize macb_mii bringup 2018-03-13 21:32 ` Brad Mouring @ 2018-03-13 21:32 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring 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..4b514c705e57 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, i; /* 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 1/4] net: macb: Reorganize macb_mii bringup @ 2018-03-13 21:32 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring 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..4b514c705e57 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, i; /* 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; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 2/4] net: macb: Remove redundant poll irq assignment 2018-03-13 21:32 ` Brad Mouring @ 2018-03-13 21:32 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. 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 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 4b514c705e57..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -566,7 +566,7 @@ static int macb_mii_init(struct macb *bp) { struct macb_platform_data *pdata; struct device_node *np; - int err, i; + int err; /* Enable management port */ macb_writel(bp, NCR, MACB_BIT(MPE)); @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 2/4] net: macb: Remove redundant poll irq assignment @ 2018-03-13 21:32 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring In phy_device's general probe, this device will already be set for phy register polling, rendering this code redundant. 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 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 4b514c705e57..db1dc301bed3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -566,7 +566,7 @@ static int macb_mii_init(struct macb *bp) { struct macb_platform_data *pdata; struct device_node *np; - int err, i; + int err; /* Enable management port */ macb_writel(bp, NCR, MACB_BIT(MPE)); @@ -593,9 +593,6 @@ static int macb_mii_init(struct macb *bp) 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; - if (pdata) bp->mii_bus->phy_mask = pdata->phy_mask; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 3/4] net: macb: Add phy-handle DT support 2018-03-13 21:32 ` Brad Mouring @ 2018-03-13 21:32 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..d09bd43680b3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,10 +488,12 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { - /* fallback to standard phy registration if no phy were - * found during dt phy registration + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no + * phy-handle was found nor any phy found during + * dt phy registration */ - if (!phy_find_first(bp->mii_bus)) { + if (!bp->phy_node && !phy_find_first(bp->mii_bus)) { for (i = 0; i < PHY_MAX_ADDR; i++) { struct phy_device *phydev; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 3/4] net: macb: Add phy-handle DT support @ 2018-03-13 21:32 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring This optional binding (as described in the ethernet DT bindings doc) directs the netdev to the phydev to use. This is useful for a phy chip that has >1 phy in it, and two netdevs are using the same phy chip (i.e. the second mac's phy lives on the first mac's MDIO bus) The devicetree snippet would look something like this: ethernet@feedf00d { ... phy-handle = <&phy0> // the first netdev is physically wired to phy0 ... phy0: phy@0 { ... reg = <0x0> // MDIO address 0 ... } phy1: phy@1 { ... reg = <0x1> // MDIO address 1 ... } ... } ethernet@deadbeef { ... phy-handle = <&phy1> // tells the driver to use phy1 on the // first mac's mdio bus (it's wired thusly) ... } The work done to add the phy_node in the first place (dacdbb4dfc1a1: "net: macb: add fixed-link node support") will consume the device_node (if found). Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- drivers/net/ethernet/cadence/macb_main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index db1dc301bed3..d09bd43680b3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -488,10 +488,12 @@ static int macb_mii_probe(struct net_device *dev) } bp->phy_node = of_node_get(np); } else { - /* fallback to standard phy registration if no phy were - * found during dt phy registration + bp->phy_node = of_parse_phandle(np, "phy-handle", 0); + /* fallback to standard phy registration if no + * phy-handle was found nor any phy found during + * dt phy registration */ - if (!phy_find_first(bp->mii_bus)) { + if (!bp->phy_node && !phy_find_first(bp->mii_bus)) { for (i = 0; i < PHY_MAX_ADDR; i++) { struct phy_device *phydev; -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 4/4] Documentation: macb: Document phy-handle binding 2018-03-13 21:32 ` Brad Mouring @ 2018-03-13 21:32 ` Brad Mouring -1 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring Document the existence of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v5 net-next 4/4] Documentation: macb: Document phy-handle binding @ 2018-03-13 21:32 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-13 21:32 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring Document the existence of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v5 net-next 0/4] net: macb: Introduce phy-handle DT functionality 2018-03-13 21:32 ` Brad Mouring ` (4 preceding siblings ...) (?) @ 2018-03-16 15:15 ` David Miller -1 siblings, 0 replies; 58+ messages in thread From: David Miller @ 2018-03-16 15:15 UTC (permalink / raw) To: brad.mouring Cc: nicolas.ferre, robh+dt, m.grzeschik, andrew, mark.rutland, netdev, julia, devicetree From: Brad Mouring <brad.mouring@ni.com> Date: Tue, 13 Mar 2018 16:32:12 -0500 > Consider the situation where a macb netdev is connected through > a phydev that sits on a mii bus other than the one provided to > this particular netdev. This situation is what this patchset aims > to accomplish through the existing phy-handle optional binding. > > This optional binding (as described in the ethernet DT bindings doc) > directs the netdev to the phydev to use. This is precisely the > situation this patchset aims to solve, so it makes sense to introduce > the functionality to this driver (where the physical layout discussed > was encountered). > > The devicetree snippet would look something like this: ... > The work done to add the phy_node in the first place (dacdbb4dfc1a1: > "net: macb: add fixed-link node support") will consume the > device_node (if found). > > v2: Reorganization of mii probe/init functions, suggested by Andrew Lunn > v3: Moved some of the bus init code back into init (erroneously moved to probe) > some style issues, and an unintialized variable warning addressed. > v4: Add Reviewed-by: tags > Skip fallback code if phy-handle phandle is found > v5: Cleanup formatting issues > Fix compile failure introduced in 1/4 "net: macb: Reorganize macb_mii > bringup" > Fix typo in "Documentation: macb: Document phy-handle binding" Series applied, thank you. ^ permalink raw reply [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 4/4] Documentation: macb: Document phy-handle binding 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring @ 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring Document the existance of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v4 net-next 4/4] Documentation: macb: Document phy-handle binding @ 2018-03-12 21:34 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 21:34 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring Document the existance of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 4/4] Documentation: macb: Document phy-handle binding 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring @ 2018-03-12 17:10 ` Brad Mouring 2018-03-12 17:09 ` Brad Mouring ` (2 subsequent siblings) 3 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:10 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring Document the existance of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* [PATCH v3 net-next 4/4] Documentation: macb: Document phy-handle binding @ 2018-03-12 17:10 ` Brad Mouring 0 siblings, 0 replies; 58+ messages in thread From: Brad Mouring @ 2018-03-12 17:10 UTC (permalink / raw) To: Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik <m.grzeschik@pengutronix.de>, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright <julia@ni.com>, <devicetree@vger.kernel.org>, Brad Mouring Document the existance of the optional binding, directing to the general ethernet document that describes this binding. Signed-off-by: Brad Mouring <brad.mouring@ni.com> --- Documentation/devicetree/bindings/net/macb.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 27966ae741e0..457d5ae16f23 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -29,6 +29,7 @@ Optional properties for PHY child node: - reset-gpios : Should specify the gpio for phy reset - magic-packet : If present, indicates that the hardware supports waking up via magic packet. +- phy-handle : see ethernet.txt file in the same directory Examples: -- 2.16.2 ^ permalink raw reply related [flat|nested] 58+ messages in thread
* Re: [PATCH v3 net-next 4/4] Documentation: macb: Document phy-handle binding 2018-03-12 17:10 ` Brad Mouring (?) @ 2018-03-12 17:18 ` Florian Fainelli -1 siblings, 0 replies; 58+ messages in thread From: Florian Fainelli @ 2018-03-12 17:18 UTC (permalink / raw) To: Brad Mouring, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn Cc: Mark Rutland, netdev, Julia Cartwright, devicetree On 03/12/2018 10:10 AM, Brad Mouring wrote: > Document the existance of the optional binding, directing to the > general ethernet document that describes this binding. > > Signed-off-by: Brad Mouring <brad.mouring@ni.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -- Florian ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup 2018-03-09 22:12 ` Brad Mouring @ 2018-03-11 7:02 ` kbuild test robot -1 siblings, 0 replies; 58+ messages in thread From: kbuild test robot @ 2018-03-11 7:02 UTC (permalink / raw) To: Brad Mouring Cc: kbuild-all, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn, Mark Rutland, netdev, Julia Cartwright, devicetree, Brad Mouring [-- Attachment #1: Type: text/plain, Size: 4174 bytes --] Hi Brad, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Brad-Mouring/net-macb-Reorganize-macb_mii-bringup/20180311-133616 config: i386-randconfig-x012-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=i386 Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers/net/ethernet/cadence/macb_main.c: In function 'macb_probe': >> drivers/net/ethernet/cadence/macb_main.c:503:8: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] if (ret) ^ drivers/net/ethernet/cadence/macb_main.c:477:6: note: 'ret' was declared here int ret, i; ^~~ vim +/ret +503 drivers/net/ethernet/cadence/macb_main.c 468 469 /* based on au1000_eth. c*/ 470 static int macb_mii_probe(struct net_device *dev) 471 { 472 struct macb *bp = netdev_priv(dev); 473 struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); 474 struct phy_device *phydev; 475 struct device_node *np = bp->pdev->dev.of_node; 476 int phy_irq; 477 int ret, i; 478 479 if (np) { 480 if (of_phy_is_fixed_link(np)) { 481 if (of_phy_register_fixed_link(np) < 0) { 482 dev_err(&bp->pdev->dev, 483 "broken fixed-link specification\n"); 484 return -ENODEV; 485 } 486 bp->phy_node = of_node_get(np); 487 } else { 488 /* fallback to standard phy registration if no phy were 489 * found during dt phy registration 490 */ 491 if (!phy_find_first(bp->mii_bus)) { 492 for (i = 0; i < PHY_MAX_ADDR; i++) { 493 struct phy_device *phydev; 494 495 phydev = mdiobus_scan(bp->mii_bus, i); 496 if (IS_ERR(phydev) && 497 PTR_ERR(phydev) != -ENODEV) { 498 ret = PTR_ERR(phydev); 499 break; 500 } 501 } 502 > 503 if (ret) 504 return -ENODEV; 505 } 506 } 507 } else { 508 for (i = 0; i < PHY_MAX_ADDR; i++) 509 bp->mii_bus->irq[i] = PHY_POLL; 510 511 if (pdata) 512 bp->mii_bus->phy_mask = pdata->phy_mask; 513 514 } 515 516 if (bp->phy_node) { 517 phydev = of_phy_connect(dev, bp->phy_node, 518 &macb_handle_link_change, 0, 519 bp->phy_interface); 520 if (!phydev) 521 return -ENODEV; 522 } else { 523 phydev = phy_find_first(bp->mii_bus); 524 if (!phydev) { 525 netdev_err(dev, "no PHY found\n"); 526 return -ENXIO; 527 } 528 529 if (pdata) { 530 if (gpio_is_valid(pdata->phy_irq_pin)) { 531 ret = devm_gpio_request(&bp->pdev->dev, 532 pdata->phy_irq_pin, "phy int"); 533 if (!ret) { 534 phy_irq = gpio_to_irq(pdata->phy_irq_pin); 535 phydev->irq = (phy_irq < 0) ? PHY_POLL : phy_irq; 536 } 537 } else { 538 phydev->irq = PHY_POLL; 539 } 540 } 541 542 /* attach the mac to the phy */ 543 ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, 544 bp->phy_interface); 545 if (ret) { 546 netdev_err(dev, "Could not attach to PHY\n"); 547 return ret; 548 } 549 } 550 551 /* mask with MAC supported features */ 552 if (macb_is_gem(bp) && bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE) 553 phydev->supported &= PHY_GBIT_FEATURES; 554 else 555 phydev->supported &= PHY_BASIC_FEATURES; 556 557 if (bp->caps & MACB_CAPS_NO_GIGABIT_HALF) 558 phydev->supported &= ~SUPPORTED_1000baseT_Half; 559 560 phydev->advertising = phydev->supported; 561 562 bp->link = 0; 563 bp->speed = 0; 564 bp->duplex = -1; 565 566 return 0; 567 } 568 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 34070 bytes --] ^ permalink raw reply [flat|nested] 58+ messages in thread
* Re: [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup @ 2018-03-11 7:02 ` kbuild test robot 0 siblings, 0 replies; 58+ messages in thread From: kbuild test robot @ 2018-03-11 7:02 UTC (permalink / raw) To: Brad Mouring Cc: kbuild-all, Nicolas Ferre, Rob Herring, David S . Miller, Michael Grzeschik, Andrew Lunn, Mark Rutland, netdev, Julia Cartwright, devicetree [-- Attachment #1: Type: text/plain, Size: 4174 bytes --] Hi Brad, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Brad-Mouring/net-macb-Reorganize-macb_mii-bringup/20180311-133616 config: i386-randconfig-x012-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=i386 Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers/net/ethernet/cadence/macb_main.c: In function 'macb_probe': >> drivers/net/ethernet/cadence/macb_main.c:503:8: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized] if (ret) ^ drivers/net/ethernet/cadence/macb_main.c:477:6: note: 'ret' was declared here int ret, i; ^~~ vim +/ret +503 drivers/net/ethernet/cadence/macb_main.c 468 469 /* based on au1000_eth. c*/ 470 static int macb_mii_probe(struct net_device *dev) 471 { 472 struct macb *bp = netdev_priv(dev); 473 struct macb_platform_data *pdata = dev_get_platdata(&bp->pdev->dev); 474 struct phy_device *phydev; 475 struct device_node *np = bp->pdev->dev.of_node; 476 int phy_irq; 477 int ret, i; 478 479 if (np) { 480 if (of_phy_is_fixed_link(np)) { 481 if (of_phy_register_fixed_link(np) < 0) { 482 dev_err(&bp->pdev->dev, 483 "broken fixed-link specification\n"); 484 return -ENODEV; 485 } 486 bp->phy_node = of_node_get(np); 487 } else { 488 /* fallback to standard phy registration if no phy were 489 * found during dt phy registration 490 */ 491 if (!phy_find_first(bp->mii_bus)) { 492 for (i = 0; i < PHY_MAX_ADDR; i++) { 493 struct phy_device *phydev; 494 495 phydev = mdiobus_scan(bp->mii_bus, i); 496 if (IS_ERR(phydev) && 497 PTR_ERR(phydev) != -ENODEV) { 498 ret = PTR_ERR(phydev); 499 break; 500 } 501 } 502 > 503 if (ret) 504 return -ENODEV; 505 } 506 } 507 } else { 508 for (i = 0; i < PHY_MAX_ADDR; i++) 509 bp->mii_bus->irq[i] = PHY_POLL; 510 511 if (pdata) 512 bp->mii_bus->phy_mask = pdata->phy_mask; 513 514 } 515 516 if (bp->phy_node) { 517 phydev = of_phy_connect(dev, bp->phy_node, 518 &macb_handle_link_change, 0, 519 bp->phy_interface); 520 if (!phydev) 521 return -ENODEV; 522 } else { 523 phydev = phy_find_first(bp->mii_bus); 524 if (!phydev) { 525 netdev_err(dev, "no PHY found\n"); 526 return -ENXIO; 527 } 528 529 if (pdata) { 530 if (gpio_is_valid(pdata->phy_irq_pin)) { 531 ret = devm_gpio_request(&bp->pdev->dev, 532 pdata->phy_irq_pin, "phy int"); 533 if (!ret) { 534 phy_irq = gpio_to_irq(pdata->phy_irq_pin); 535 phydev->irq = (phy_irq < 0) ? PHY_POLL : phy_irq; 536 } 537 } else { 538 phydev->irq = PHY_POLL; 539 } 540 } 541 542 /* attach the mac to the phy */ 543 ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, 544 bp->phy_interface); 545 if (ret) { 546 netdev_err(dev, "Could not attach to PHY\n"); 547 return ret; 548 } 549 } 550 551 /* mask with MAC supported features */ 552 if (macb_is_gem(bp) && bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE) 553 phydev->supported &= PHY_GBIT_FEATURES; 554 else 555 phydev->supported &= PHY_BASIC_FEATURES; 556 557 if (bp->caps & MACB_CAPS_NO_GIGABIT_HALF) 558 phydev->supported &= ~SUPPORTED_1000baseT_Half; 559 560 phydev->advertising = phydev->supported; 561 562 bp->link = 0; 563 bp->speed = 0; 564 bp->duplex = -1; 565 566 return 0; 567 } 568 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 34070 bytes --] ^ permalink raw reply [flat|nested] 58+ messages in thread
end of thread, other threads:[~2018-03-16 15:15 UTC | newest] Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-03-07 22:42 [PATCH 1/2] net: macb: Add phy-handle DT support Brad Mouring 2018-03-07 22:42 ` Brad Mouring 2018-03-07 22:42 ` [PATCH 2/2] Documentation: macb: Document phy-handle optional binding Brad Mouring 2018-03-07 22:42 ` Brad Mouring 2018-03-08 17:32 ` [1/2] net: macb: Add phy-handle DT support Andrew Lunn 2018-03-08 22:00 ` Brad Mouring 2018-03-08 22:00 ` Brad Mouring 2018-03-09 22:12 ` [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup Brad Mouring 2018-03-09 22:12 ` Brad Mouring 2018-03-09 22:12 ` [PATCH v2 net-next 2/3] net: macb: Add phy-handle DT support Brad Mouring 2018-03-09 22:12 ` Brad Mouring 2018-03-09 22:12 ` [PATCH v2 net-next 3/3] Documentation: macb: Document phy-handle optional binding Brad Mouring 2018-03-09 22:12 ` Brad Mouring 2018-03-10 16:18 ` Andrew Lunn 2018-03-10 16:17 ` [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup Andrew Lunn 2018-03-10 22:19 ` Brad Mouring 2018-03-10 22:19 ` Brad Mouring 2018-03-12 17:09 ` [PATCH v3 net-next 0/4] macb: Introduce phy-handle DT functionality Brad Mouring 2018-03-12 17:09 ` [PATCH v3 net-next 1/4] net: macb: Reorganize macb_mii bringup Brad Mouring 2018-03-12 17:09 ` Brad Mouring 2018-03-12 17:17 ` Florian Fainelli 2018-03-13 4:25 ` kbuild test robot 2018-03-13 4:25 ` kbuild test robot 2018-03-12 17:09 ` [PATCH v3 net-next 2/4] net: macb: Remove redundant poll irq assignment Brad Mouring 2018-03-12 17:09 ` Brad Mouring 2018-03-12 17:17 ` Florian Fainelli 2018-03-12 17:10 ` [PATCH v3 net-next 3/4] net: macb: Add phy-handle DT support Brad Mouring 2018-03-12 17:10 ` Brad Mouring 2018-03-12 17:59 ` Andrew Lunn 2018-03-12 21:34 ` [PATCH v4 net-next 0/4] Brad Mouring 2018-03-12 21:34 ` [PATCH v4 net-next 1/4] net: macb: Reorganize macb_mii bringup Brad Mouring 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` [PATCH v4 net-next 2/4] net: macb: Remove redundant poll irq assignment Brad Mouring 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:34 ` [PATCH v4 net-next 3/4] net: macb: Add phy-handle DT support Brad Mouring 2018-03-12 21:34 ` Brad Mouring 2018-03-12 21:57 ` Andrew Lunn 2018-03-12 22:30 ` Florian Fainelli 2018-03-13 13:49 ` Brad Mouring 2018-03-13 13:49 ` Brad Mouring 2018-03-13 21:32 ` [PATCH v5 net-next 0/4] net: macb: Introduce phy-handle DT functionality Brad Mouring 2018-03-13 21:32 ` Brad Mouring 2018-03-13 21:32 ` [PATCH v5 net-next 1/4] net: macb: Reorganize macb_mii bringup Brad Mouring 2018-03-13 21:32 ` Brad Mouring 2018-03-13 21:32 ` [PATCH v5 net-next 2/4] net: macb: Remove redundant poll irq assignment Brad Mouring 2018-03-13 21:32 ` Brad Mouring 2018-03-13 21:32 ` [PATCH v5 net-next 3/4] net: macb: Add phy-handle DT support Brad Mouring 2018-03-13 21:32 ` Brad Mouring 2018-03-13 21:32 ` [PATCH v5 net-next 4/4] Documentation: macb: Document phy-handle binding Brad Mouring 2018-03-13 21:32 ` Brad Mouring 2018-03-16 15:15 ` [PATCH v5 net-next 0/4] net: macb: Introduce phy-handle DT functionality David Miller 2018-03-12 21:34 ` [PATCH v4 net-next 4/4] Documentation: macb: Document phy-handle binding Brad Mouring 2018-03-12 21:34 ` Brad Mouring 2018-03-12 17:10 ` [PATCH v3 " Brad Mouring 2018-03-12 17:10 ` Brad Mouring 2018-03-12 17:18 ` Florian Fainelli 2018-03-11 7:02 ` [PATCH v2 net-next 1/3] net: macb: Reorganize macb_mii bringup kbuild test robot 2018-03-11 7:02 ` kbuild test robot
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.