diff options
Diffstat (limited to 'drivers/net/phy/broadcom.c')
| -rw-r--r-- | drivers/net/phy/broadcom.c | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c index e86ea105c802..704537010453 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c @@ -92,7 +92,7 @@ static int bcm54612e_config_init(struct phy_device *phydev)  	return 0;  } -static int bcm5481x_config(struct phy_device *phydev) +static int bcm54xx_config_clock_delay(struct phy_device *phydev)  {  	int rc, val; @@ -429,7 +429,7 @@ static int bcm5481_config_aneg(struct phy_device *phydev)  	ret = genphy_config_aneg(phydev);  	/* Then we can set up the delay. */ -	bcm5481x_config(phydev); +	bcm54xx_config_clock_delay(phydev);  	if (of_property_read_bool(np, "enet-phy-lane-swap")) {  		/* Lane Swap - Undocumented register...magic! */ @@ -442,6 +442,19 @@ static int bcm5481_config_aneg(struct phy_device *phydev)  	return ret;  } +static int bcm54616s_config_aneg(struct phy_device *phydev) +{ +	int ret; + +	/* Aneg firsly. */ +	ret = genphy_config_aneg(phydev); + +	/* Then we can set up the delay. */ +	bcm54xx_config_clock_delay(phydev); + +	return ret; +} +  static int brcm_phy_setbits(struct phy_device *phydev, int reg, int set)  {  	int val; @@ -636,6 +649,7 @@ static struct phy_driver broadcom_drivers[] = {  	.features	= PHY_GBIT_FEATURES,  	.flags		= PHY_HAS_INTERRUPT,  	.config_init	= bcm54xx_config_init, +	.config_aneg	= bcm54616s_config_aneg,  	.ack_interrupt	= bcm_phy_ack_intr,  	.config_intr	= bcm_phy_config_intr,  }, {  |