It's nice if the phy is online before we register the netdev
so try to do that first.

Reported-by: David Miller <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
---
 drivers/net/ethernet/cortina/gemini.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/cortina/gemini.c 
b/drivers/net/ethernet/cortina/gemini.c
index ffec0f3dd957..cf4dc6345f0d 100644
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -2505,6 +2505,11 @@ static int gemini_ethernet_port_probe(struct 
platform_device *pdev)
        if (ret)
                goto unprepare;
 
+       ret = gmac_setup_phy(netdev);
+       if (ret)
+               netdev_info(netdev,
+                           "PHY init failed, deferring to ifup time\n");
+
        ret = register_netdev(netdev);
        if (ret)
                goto unprepare;
@@ -2513,10 +2518,6 @@ static int gemini_ethernet_port_probe(struct 
platform_device *pdev)
                    "irq %d, DMA @ 0x%pap, GMAC @ 0x%pap\n",
                    port->irq, &dmares->start,
                    &gmacres->start);
-       ret = gmac_setup_phy(netdev);
-       if (ret)
-               netdev_info(netdev,
-                           "PHY init failed, deferring to ifup time\n");
        return 0;
 
 unprepare:
-- 
2.26.2

Reply via email to