This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/drivers/net/ethernet/broadcom/b44.c
 | 
						|
+++ b/drivers/net/ethernet/broadcom/b44.c
 | 
						|
@@ -431,10 +431,34 @@ static void b44_wap54g10_workaround(stru
 | 
						|
 error:
 | 
						|
 	pr_warn("PHY: cannot reset MII transceiver isolate bit\n");
 | 
						|
 }
 | 
						|
+
 | 
						|
+static void b44_bcm47xx_workarounds(struct b44 *bp)
 | 
						|
+{
 | 
						|
+	char buf[20];
 | 
						|
+	struct ssb_device *sdev = bp->sdev;
 | 
						|
+
 | 
						|
+	/* Toshiba WRC-1000, Siemens SE505 v1, Askey RT-210W, RT-220W */
 | 
						|
+	if (sdev->bus->sprom.board_num == 100) {
 | 
						|
+		bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY;
 | 
						|
+	} else {
 | 
						|
+		/* WL-HDD */
 | 
						|
+		if (bcm47xx_nvram_getenv("hardware_version", buf, sizeof(buf)) >= 0 &&
 | 
						|
+		    !strncmp(buf, "WL300-", strlen("WL300-"))) {
 | 
						|
+			if (sdev->bus->sprom.et0phyaddr == 0 &&
 | 
						|
+			    sdev->bus->sprom.et1phyaddr == 1)
 | 
						|
+				bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY;
 | 
						|
+		}
 | 
						|
+	}
 | 
						|
+	return;
 | 
						|
+}
 | 
						|
 #else
 | 
						|
 static inline void b44_wap54g10_workaround(struct b44 *bp)
 | 
						|
 {
 | 
						|
 }
 | 
						|
+
 | 
						|
+static inline void b44_bcm47xx_workarounds(struct b44 *bp)
 | 
						|
+{
 | 
						|
+}
 | 
						|
 #endif
 | 
						|
 
 | 
						|
 static int b44_setup_phy(struct b44 *bp)
 | 
						|
@@ -443,6 +467,7 @@ static int b44_setup_phy(struct b44 *bp)
 | 
						|
 	int err;
 | 
						|
 
 | 
						|
 	b44_wap54g10_workaround(bp);
 | 
						|
+	b44_bcm47xx_workarounds(bp);
 | 
						|
 
 | 
						|
 	if (bp->flags & B44_FLAG_EXTERNAL_PHY)
 | 
						|
 		return 0;
 | 
						|
@@ -2178,6 +2203,8 @@ static int b44_get_invariants(struct b44
 | 
						|
 	 * valid PHY address. */
 | 
						|
 	bp->phy_addr &= 0x1F;
 | 
						|
 
 | 
						|
+	b44_bcm47xx_workarounds(bp);
 | 
						|
+
 | 
						|
 	memcpy(bp->dev->dev_addr, addr, ETH_ALEN);
 | 
						|
 
 | 
						|
 	if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){
 |