diff options
Diffstat (limited to 'drivers/net/phy/broadcom.c')
| -rw-r--r-- | drivers/net/phy/broadcom.c | 16 | 
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c index f9c25912eb98..e86ea105c802 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c @@ -54,6 +54,8 @@ static int bcm54210e_config_init(struct phy_device *phydev)  static int bcm54612e_config_init(struct phy_device *phydev)  { +	int reg; +  	/* Clear TX internal delay unless requested. */  	if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&  	    (phydev->interface != PHY_INTERFACE_MODE_RGMII_TXID)) { @@ -65,8 +67,6 @@ static int bcm54612e_config_init(struct phy_device *phydev)  	/* Clear RX internal delay unless requested. */  	if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&  	    (phydev->interface != PHY_INTERFACE_MODE_RGMII_RXID)) { -		u16 reg; -  		reg = bcm54xx_auxctl_read(phydev,  					  MII_BCM54XX_AUXCTL_SHDWSEL_MISC);  		/* Disable RXD to RXC delay (default set) */ @@ -77,6 +77,18 @@ static int bcm54612e_config_init(struct phy_device *phydev)  				     MII_BCM54XX_AUXCTL_MISC_WREN | reg);  	} +	/* Enable CLK125 MUX on LED4 if ref clock is enabled. */ +	if (!(phydev->dev_flags & PHY_BRCM_RX_REFCLK_UNUSED)) { +		int err; + +		reg = bcm_phy_read_exp(phydev, BCM54612E_EXP_SPARE0); +		err = bcm_phy_write_exp(phydev, BCM54612E_EXP_SPARE0, +					BCM54612E_LED4_CLK125OUT_EN | reg); + +		if (err < 0) +			return err; +	} +  	return 0;  }  | 
