mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +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;
|
unsigned long timeout;
|
||||||
int ret;
|
int ret;
|
||||||
u32 buf;
|
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);
|
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@@ -3312,6 +3317,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
|||||||
buf |= HW_CFG_CLK125_EN_;
|
buf |= HW_CFG_CLK125_EN_;
|
||||||
buf |= HW_CFG_REFCLK25_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);
|
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -3404,6 +3413,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
|
|||||||
if (dev->chipid == ID_REV_CHIP_ID_7801_)
|
if (dev->chipid == ID_REV_CHIP_ID_7801_)
|
||||||
buf &= ~MAC_CR_GMII_EN_;
|
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);
|
ret = lan78xx_write_reg(dev, MAC_CR, buf);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
Reference in New Issue
Block a user