summaryrefslogtreecommitdiff
path: root/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch b/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch
new file mode 100644
index 0000000000..54256dbaa0
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch
@@ -0,0 +1,40 @@
+From 1bfdc259652abe22a587fd6d856c1b71168cccb2 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Thu, 3 Oct 2013 20:49:10 +0200
+Subject: [PATCH 3/5] b44: abort when no PHY is available at all
+
+When the phy address is 31, this means that there is no PHY connected
+to this MAC at all, no internal and no external PHY. Reading these PHY
+registers causes a system reset on some routers.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ drivers/net/ethernet/broadcom/b44.c | 6 ++++++
+ drivers/net/ethernet/broadcom/b44.h | 1 +
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/net/ethernet/broadcom/b44.c
++++ b/drivers/net/ethernet/broadcom/b44.c
+@@ -2207,6 +2207,12 @@ static int b44_init_one(struct ssb_devic
+ goto err_out_powerdown;
+ }
+
++ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) {
++ dev_err(sdev->dev, "No PHY present on this MAC, aborting\n");
++ err = -ENODEV;
++ goto err_out_powerdown;
++ }
++
+ bp->mii_if.dev = dev;
+ bp->mii_if.mdio_read = b44_mii_read;
+ bp->mii_if.mdio_write = b44_mii_write;
+--- a/drivers/net/ethernet/broadcom/b44.h
++++ b/drivers/net/ethernet/broadcom/b44.h
+@@ -282,6 +282,7 @@ struct ring_info {
+
+ #define B44_MCAST_TABLE_SIZE 32
+ #define B44_PHY_ADDR_NO_LOACL_PHY 30 /* no local phy regs */
++#define B44_PHY_ADDR_NO_PHY 31 /* no phy present at all */
+ #define B44_MDC_RATIO 5000000
+
+ #define B44_STAT_REG_DECLARE \