2013-12-27 07:27:52 +08:00
|
|
|
From 7befa6abe09c84269b8af614a166409090346cf8 Mon Sep 17 00:00:00 2001
|
2013-10-07 02:31:32 +08:00
|
|
|
From: Hauke Mehrtens <hauke@hauke-m.de>
|
2013-12-27 07:27:52 +08:00
|
|
|
Date: Fri, 20 Dec 2013 02:16:08 +0100
|
|
|
|
Subject: [PATCH 203/208] b44: abort when no PHY is available at all
|
2013-10-07 02:31:32 +08:00
|
|
|
|
|
|
|
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>
|
2013-12-27 07:27:52 +08:00
|
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
2013-10-07 02:31:32 +08:00
|
|
|
---
|
|
|
|
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
|
2013-12-27 07:27:52 +08:00
|
|
|
#define B44_PHY_ADDR_NO_LOCAL_PHY 30 /* no local phy regs */
|
2013-10-07 02:31:32 +08:00
|
|
|
+#define B44_PHY_ADDR_NO_PHY 31 /* no phy present at all */
|
|
|
|
#define B44_MDC_RATIO 5000000
|
|
|
|
|
|
|
|
#define B44_STAT_REG_DECLARE \
|