Hello Greg, Dave and all, the below patch is still applicable as-is, would you please re-consider it now, as the driver has been undeleted? On 08/01/2020 17:09, Alexander X Sverdlin wrote: > From: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxx> > > The PHYs must be registered once in device probe function, not in device > open callback because it's only possible to register them once. > > Fixes: a25e278020 ("staging: octeon: support fixed-link phys") > Signed-off-by: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxx> > --- > drivers/staging/octeon/ethernet-mdio.c | 6 ------ > drivers/staging/octeon/ethernet.c | 11 +++++++++++ > 2 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/octeon/ethernet-mdio.c b/drivers/staging/octeon/ethernet-mdio.c > index c798672..d81bddf 100644 > --- a/drivers/staging/octeon/ethernet-mdio.c > +++ b/drivers/staging/octeon/ethernet-mdio.c > @@ -147,12 +147,6 @@ int cvm_oct_phy_setup_device(struct net_device *dev) > > phy_node = of_parse_phandle(priv->of_node, "phy-handle", 0); > if (!phy_node && of_phy_is_fixed_link(priv->of_node)) { > - int rc; > - > - rc = of_phy_register_fixed_link(priv->of_node); > - if (rc) > - return rc; > - > phy_node = of_node_get(priv->of_node); > } > if (!phy_node) > diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c > index f42c381..241a1db 100644 > --- a/drivers/staging/octeon/ethernet.c > +++ b/drivers/staging/octeon/ethernet.c > @@ -13,6 +13,7 @@ > #include <linux/phy.h> > #include <linux/slab.h> > #include <linux/interrupt.h> > +#include <linux/of_mdio.h> > #include <linux/of_net.h> > #include <linux/if_ether.h> > #include <linux/if_vlan.h> > @@ -894,6 +895,16 @@ static int cvm_oct_probe(struct platform_device *pdev) > break; > } > > + if (priv->of_node && > + of_phy_is_fixed_link(priv->of_node)) { > + r = of_phy_register_fixed_link(priv->of_node); > + if (r) { > + netdev_err(dev, "Failed to register fixed link for interface %d, port %d\n", > + interface, priv->ipd_port); > + dev->netdev_ops = NULL; > + } > + } > + > if (!dev->netdev_ops) { > free_netdev(dev); > } else if (register_netdev(dev) < 0) { > -- Best regards, Alexander Sverdlin. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel