mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From a37c024c2f3c1249f2baa6a53cec4e0b9a4299df Mon Sep 17 00:00:00 2001
 | |
| From: Phil Elwell <phil@raspberrypi.org>
 | |
| Date: Tue, 17 Oct 2017 15:04:29 +0100
 | |
| Subject: [PATCH 033/432] 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 | 11 +++++++++++
 | |
|  1 file changed, 11 insertions(+)
 | |
| 
 | |
| diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
 | |
| index 8d140495da79..38f248b2b3b4 100644
 | |
| --- a/drivers/net/usb/lan78xx.c
 | |
| +++ b/drivers/net/usb/lan78xx.c
 | |
| @@ -2472,6 +2472,11 @@ static int lan78xx_reset(struct lan78xx_net *dev)
 | |
|  	int ret = 0;
 | |
|  	unsigned long timeout;
 | |
|  	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);
 | |
|  	buf |= HW_CFG_LRST_;
 | |
| @@ -2525,6 +2530,9 @@ static int lan78xx_reset(struct lan78xx_net *dev)
 | |
|  
 | |
|  	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
 | |
|  	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);
 | |
|  
 | |
|  	ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
 | |
| @@ -2580,6 +2588,9 @@ static int lan78xx_reset(struct lan78xx_net *dev)
 | |
|  			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);
 | |
|  
 | |
|  	ret = lan78xx_read_reg(dev, MAC_TX, &buf);
 | |
| -- 
 | |
| 2.19.1
 | |
| 
 |