41 lines
1.4 KiB
Diff
41 lines
1.4 KiB
Diff
|
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 \
|