ipq40xx: add v5.4 support
[openwrt/staging/blogic.git] / target / linux / ipq40xx / patches-5.4 / 706-ar40xx-abort-probe-on-missig-phy.patch
diff --git a/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch b/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
new file mode 100644 (file)
index 0000000..0ae6b17
--- /dev/null
@@ -0,0 +1,36 @@
+Index: linux-5.4.11/drivers/net/phy/ar40xx.c
+===================================================================
+--- linux-5.4.11.orig/drivers/net/phy/ar40xx.c
++++ linux-5.4.11/drivers/net/phy/ar40xx.c
+@@ -1808,8 +1808,8 @@ ar40xx_phy_probe(struct phy_device *phyd
+       if (phydev->mdio.addr == 0)
+               ar40xx_priv->phy = phydev;
+-      phydev->supported |= SUPPORTED_1000baseT_Full;
+-      phydev->advertising |= ADVERTISED_1000baseT_Full;
++      phy_set_max_speed(phydev, SPEED_1000);
++      linkmode_copy(phydev->advertising, phydev->supported);
+       return 0;
+ }
+@@ -2021,6 +2021,12 @@ static int ar40xx_probe(struct platform_
+       /* register switch */
+       swdev = &priv->dev;
++      if (priv->mii_bus == NULL) {
++              dev_err(&pdev->dev, "Probe failed - Missing PHYs!\n");
++              ret = -ENODEV;
++              goto err_missing_phy;
++      }
++
+       swdev->alias = dev_name(&priv->mii_bus->dev);
+       swdev->cpu_port = AR40XX_PORT_CPU;
+@@ -2052,6 +2058,7 @@ err_unregister_switch:
+       unregister_switch(&priv->dev);
+ err_unregister_phy:
+       phy_driver_unregister(&ar40xx_phy_driver);
++err_missing_phy:
+       platform_set_drvdata(pdev, NULL);
+       return ret;
+ }