mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 3d918f796cd3832b4473c3d66e5c1285978ae7e1 Mon Sep 17 00:00:00 2001
 | |
| From: Phil Elwell <phil@raspberrypi.org>
 | |
| Date: Tue, 17 Oct 2017 15:04:29 +0100
 | |
| Subject: [PATCH] lan78xx: Enable LEDs and auto-negotiation
 | |
| 
 | |
| For applications of the LAN78xx that don't have valid programmed
 | |
| EEPROMs or OTPs, enabling both LEDs and auto-negotiation by default
 | |
| seems reasonable.
 | |
| 
 | |
| Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | |
| ---
 | |
|  drivers/net/usb/lan78xx.c | 12 ++++++++++++
 | |
|  1 file changed, 12 insertions(+)
 | |
| 
 | |
| --- a/drivers/net/usb/lan78xx.c
 | |
| +++ b/drivers/net/usb/lan78xx.c
 | |
| @@ -2881,6 +2881,11 @@ static int lan78xx_reset(struct lan78xx_
 | |
|  	int ret;
 | |
|  	u32 buf;
 | |
|  	u8 sig;
 | |
| +	bool has_eeprom;
 | |
| +	bool has_otp;
 | |
| +
 | |
| +	has_eeprom = !lan78xx_read_eeprom(dev, 0, 0, NULL);
 | |
| +	has_otp = !lan78xx_read_otp(dev, 0, 0, NULL);
 | |
|  
 | |
|  	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
 | |
|  	if (ret < 0)
 | |
| @@ -2945,6 +2950,10 @@ static int lan78xx_reset(struct lan78xx_
 | |
|  
 | |
|  	buf |= HW_CFG_MEF_;
 | |
|  
 | |
| +	/* If no valid EEPROM and no valid OTP, enable the LEDs by default */
 | |
| +	if (!has_eeprom && !has_otp)
 | |
| +	    buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_;
 | |
| +
 | |
|  	ret = lan78xx_write_reg(dev, HW_CFG, buf);
 | |
|  	if (ret < 0)
 | |
|  		return ret;
 | |
| @@ -3043,6 +3052,9 @@ static int lan78xx_reset(struct lan78xx_
 | |
|  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
 | |
|  		}
 | |
|  	}
 | |
| +	/* If no valid EEPROM and no valid OTP, enable AUTO negotiation */
 | |
| +	if (!has_eeprom && !has_otp)
 | |
| +	    buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
 | |
|  	ret = lan78xx_write_reg(dev, MAC_CR, buf);
 | |
|  	if (ret < 0)
 | |
|  		return ret;
 |