aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/ipq40xx/patches-4.14/706-ar40xx-abort-probe-on-missig-phy.patch23
-rw-r--r--target/linux/ipq40xx/patches-4.19/706-ar40xx-abort-probe-on-missig-phy.patch23
2 files changed, 46 insertions, 0 deletions
diff --git a/target/linux/ipq40xx/patches-4.14/706-ar40xx-abort-probe-on-missig-phy.patch b/target/linux/ipq40xx/patches-4.14/706-ar40xx-abort-probe-on-missig-phy.patch
new file mode 100644
index 0000000000..19474bff0d
--- /dev/null
+++ b/target/linux/ipq40xx/patches-4.14/706-ar40xx-abort-probe-on-missig-phy.patch
@@ -0,0 +1,23 @@
+--- a/drivers/net/phy/ar40xx.c
++++ b/drivers/net/phy/ar40xx.c
+@@ -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;
+ }
diff --git a/target/linux/ipq40xx/patches-4.19/706-ar40xx-abort-probe-on-missig-phy.patch b/target/linux/ipq40xx/patches-4.19/706-ar40xx-abort-probe-on-missig-phy.patch
new file mode 100644
index 0000000000..19474bff0d
--- /dev/null
+++ b/target/linux/ipq40xx/patches-4.19/706-ar40xx-abort-probe-on-missig-phy.patch
@@ -0,0 +1,23 @@
+--- a/drivers/net/phy/ar40xx.c
++++ b/drivers/net/phy/ar40xx.c
+@@ -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;
+ }