mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	This uses a fixed phy instead of a dummy one. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 39166
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 7befa6abe09c84269b8af614a166409090346cf8 Mon Sep 17 00:00:00 2001
 | 
						|
From: Hauke Mehrtens <hauke@hauke-m.de>
 | 
						|
Date: Fri, 20 Dec 2013 02:16:08 +0100
 | 
						|
Subject: [PATCH 203/208] 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>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 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_LOCAL_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		\
 |