Re: [PATCH v2] net: ethernet: support "fixed-link" DT key/node on nb8800 driver
Sebastian Friaswrites: > Signed-off-by: Sebastian Frias > --- > drivers/net/ethernet/aurora/nb8800.c | 15 --- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/aurora/nb8800.c > b/drivers/net/ethernet/aurora/nb8800.c > index ecc4a33..dd7bedc 100644 > --- a/drivers/net/ethernet/aurora/nb8800.c > +++ b/drivers/net/ethernet/aurora/nb8800.c > @@ -1462,9 +1462,18 @@ static int nb8800_probe(struct platform_device *pdev) > > priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); > if (!priv->phy_node) { > - dev_err(>dev, "no PHY specified\n"); > - ret = -ENODEV; > - goto err_free_bus; > + if (of_phy_is_fixed_link(pdev->dev.of_node)) { > + ret = of_phy_register_fixed_link(pdev->dev.of_node); > + if (ret < 0) { > + dev_err(>dev, "bad fixed-link spec\n"); > + goto err_free_bus; > + } > + priv->phy_node = of_node_get(pdev->dev.of_node); > + } else { > + dev_err(>dev, "no PHY specified\n"); > + ret = -ENODEV; > + goto err_free_bus; > + } > } Maybe it would be clearer to reduce the if() nesting a bit, like this for instance: if (of_phy_is_fixed_link(pdev->dev.of_node)) { ret = of_phy_register_fixed_link(pdev->dev.of_node); if (ret < 0) { dev_err(>dev, "bad fixed-link spec\n"); goto err_free_bus; } priv->phy_node = of_node_get(pdev->dev.of_node); } if (!priv->phy_node) priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_node) { dev_err(>dev, "no PHY specified\n"); ret = -ENODEV; goto err_free_bus; } -- Måns Rullgård
Re: [PATCH v2] net: ethernet: support "fixed-link" DT key/node on nb8800 driver
On 02/05/2016 02:58 PM, Måns Rullgård wrote: Sebastian Friaswrites: Signed-off-by: Sebastian Frias --- drivers/net/ethernet/aurora/nb8800.c | 15 --- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c index ecc4a33..dd7bedc 100644 --- a/drivers/net/ethernet/aurora/nb8800.c +++ b/drivers/net/ethernet/aurora/nb8800.c @@ -1462,9 +1462,18 @@ static int nb8800_probe(struct platform_device *pdev) priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_node) { - dev_err(>dev, "no PHY specified\n"); - ret = -ENODEV; - goto err_free_bus; + if (of_phy_is_fixed_link(pdev->dev.of_node)) { + ret = of_phy_register_fixed_link(pdev->dev.of_node); + if (ret < 0) { + dev_err(>dev, "bad fixed-link spec\n"); + goto err_free_bus; + } + priv->phy_node = of_node_get(pdev->dev.of_node); + } else { + dev_err(>dev, "no PHY specified\n"); + ret = -ENODEV; + goto err_free_bus; + } } Maybe it would be clearer to reduce the if() nesting a bit, like this for instance: if (of_phy_is_fixed_link(pdev->dev.of_node)) { ret = of_phy_register_fixed_link(pdev->dev.of_node); if (ret < 0) { dev_err(>dev, "bad fixed-link spec\n"); goto err_free_bus; } priv->phy_node = of_node_get(pdev->dev.of_node); } if (!priv->phy_node) priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_node) { dev_err(>dev, "no PHY specified\n"); ret = -ENODEV; goto err_free_bus; } Thanks Måns for your comments. With old code + my patch, we only hit 1 comparison in the general case, and a 2nd one in "fixed-link" case. With your suggestion above, it would mean that we hit 3 comparisons all the time. If you are ok with the 3 comparisons, I can post a v3.
Re: [PATCH v2] net: ethernet: support "fixed-link" DT key/node on nb8800 driver
Sebastian Friaswrites: > On 02/05/2016 02:58 PM, Måns Rullgård wrote: >> Sebastian Frias writes: >> >>> Signed-off-by: Sebastian Frias >>> --- >>> drivers/net/ethernet/aurora/nb8800.c | 15 --- >>> 1 file changed, 12 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/net/ethernet/aurora/nb8800.c >>> b/drivers/net/ethernet/aurora/nb8800.c >>> index ecc4a33..dd7bedc 100644 >>> --- a/drivers/net/ethernet/aurora/nb8800.c >>> +++ b/drivers/net/ethernet/aurora/nb8800.c >>> @@ -1462,9 +1462,18 @@ static int nb8800_probe(struct platform_device *pdev) >>> >>> priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); >>> if (!priv->phy_node) { >>> - dev_err(>dev, "no PHY specified\n"); >>> - ret = -ENODEV; >>> - goto err_free_bus; >>> + if (of_phy_is_fixed_link(pdev->dev.of_node)) { >>> + ret = of_phy_register_fixed_link(pdev->dev.of_node); >>> + if (ret < 0) { >>> + dev_err(>dev, "bad fixed-link spec\n"); >>> + goto err_free_bus; >>> + } >>> + priv->phy_node = of_node_get(pdev->dev.of_node); >>> + } else { >>> + dev_err(>dev, "no PHY specified\n"); >>> + ret = -ENODEV; >>> + goto err_free_bus; >>> + } >>> } >> >> Maybe it would be clearer to reduce the if() nesting a bit, like this >> for instance: >> >> if (of_phy_is_fixed_link(pdev->dev.of_node)) { >> ret = of_phy_register_fixed_link(pdev->dev.of_node); >> if (ret < 0) { >> dev_err(>dev, "bad fixed-link spec\n"); >> goto err_free_bus; >> } >> priv->phy_node = of_node_get(pdev->dev.of_node); >> } >> >> if (!priv->phy_node) >> priv->phy_node = of_parse_phandle(pdev->dev.of_node, >>"phy-handle", 0); >> >> if (!priv->phy_node) { >> dev_err(>dev, "no PHY specified\n"); >> ret = -ENODEV; >> goto err_free_bus; >> } >> >> > > Thanks Måns for your comments. > With old code + my patch, we only hit 1 comparison in the general > case, and a 2nd one in "fixed-link" case. > With your suggestion above, it would mean that we hit 3 comparisons > all the time. > If you are ok with the 3 comparisons, I can post a v3. This is code that runs once so IMO clarity is more important than a minuscule speed difference. -- Måns Rullgård
[PATCH v2] net: ethernet: support "fixed-link" DT key/node on nb8800 driver
Signed-off-by: Sebastian Frias--- drivers/net/ethernet/aurora/nb8800.c | 15 --- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c index ecc4a33..dd7bedc 100644 --- a/drivers/net/ethernet/aurora/nb8800.c +++ b/drivers/net/ethernet/aurora/nb8800.c @@ -1462,9 +1462,18 @@ static int nb8800_probe(struct platform_device *pdev) priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_node) { - dev_err(>dev, "no PHY specified\n"); - ret = -ENODEV; - goto err_free_bus; + if (of_phy_is_fixed_link(pdev->dev.of_node)) { + ret = of_phy_register_fixed_link(pdev->dev.of_node); + if (ret < 0) { + dev_err(>dev, "bad fixed-link spec\n"); + goto err_free_bus; + } + priv->phy_node = of_node_get(pdev->dev.of_node); + } else { + dev_err(>dev, "no PHY specified\n"); + ret = -ENODEV; + goto err_free_bus; + } } priv->mii_bus = bus; -- 2.1.4