|
@@ -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;
|
|
|
}
|
|
|
|