mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	This contains the following new bigger changes: * new partition parser which still could lake some features or have bugs * new nand flash driver * using physmap-flash flash driver for parallel flash * some changes to the serial flash driver With these changes OpenWrt starts using more of the mainline flash drivers. SVN-Revision: 35632
		
			
				
	
	
		
			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
 | |
| @@ -410,10 +410,34 @@ static void b44_wap54g10_workaround(stru
 | |
|  error:
 | |
|  	pr_warning("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_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_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)
 | |
| @@ -422,6 +446,7 @@ static int b44_setup_phy(struct b44 *bp)
 | |
|  	int err;
 | |
|  
 | |
|  	b44_wap54g10_workaround(bp);
 | |
| +	b44_bcm47xx_workarounds(bp);
 | |
|  
 | |
|  	if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
 | |
|  		return 0;
 | |
| @@ -2104,6 +2129,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, 6);
 | |
|  
 | |
|  	if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){
 |