mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
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>
This commit is contained in:
@@ -3242,6 +3242,11 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
||||
unsigned long timeout;
|
||||
int ret;
|
||||
u32 buf;
|
||||
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)
|
||||
@@ -3312,6 +3317,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
||||
buf |= HW_CFG_CLK125_EN_;
|
||||
buf |= HW_CFG_REFCLK25_EN_;
|
||||
|
||||
/* 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;
|
||||
@@ -3404,6 +3413,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
||||
if (dev->chipid == ID_REV_CHIP_ID_7801_)
|
||||
buf &= ~MAC_CR_GMII_EN_;
|
||||
|
||||
/* 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;
|
||||
|
||||
Reference in New Issue
Block a user