From cac29ca73dd9199debdef3117ab80f024984af40 Mon Sep 17 00:00:00 2001 From: Matt Carlson Date: Mon, 2 Nov 2009 14:28:33 +0000 Subject: [PATCH] --- yaml --- r: 171129 b: refs/heads/master c: 219c6efefaa3f5cd05db52cda50402b2e1c9ae21 h: refs/heads/master i: 171127: 39c4aa22b92c8615e80ab3ded242382a61245dda v: v3 --- [refs] | 2 +- trunk/drivers/net/phy/broadcom.c | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 703b5868b52e..1a62ca7a361d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 47b1b53b41d63f27b308981fde307d415e514431 +refs/heads/master: 219c6efefaa3f5cd05db52cda50402b2e1c9ae21 diff --git a/trunk/drivers/net/phy/broadcom.c b/trunk/drivers/net/phy/broadcom.c index 9e574ceacf43..1a2b2f2a273a 100644 --- a/trunk/drivers/net/phy/broadcom.c +++ b/trunk/drivers/net/phy/broadcom.c @@ -242,12 +242,6 @@ static int bcm50610_a0_workaround(struct phy_device *phydev) { int err; - err = bcm54xx_exp_write(phydev, MII_BCM54XX_EXP_EXP08, - MII_BCM54XX_EXP_EXP08_RJCT_2MHZ | - MII_BCM54XX_EXP_EXP08_EARLY_DAC_WAKE); - if (err < 0) - return err; - err = bcm54xx_exp_write(phydev, MII_BCM54XX_EXP_AADJ1CH0, MII_BCM54XX_EXP_AADJ1CH0_SWP_ABCD_OEN | MII_BCM54XX_EXP_AADJ1CH0_SWSEL_THPF); @@ -287,8 +281,20 @@ static int bcm54xx_phydsp_config(struct phy_device *phydev) if (err < 0) return err; - if (phydev->drv->phy_id == PHY_ID_BCM50610) - err = bcm50610_a0_workaround(phydev); + if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM50610 || + BRCM_PHY_MODEL(phydev) == PHY_ID_BCM50610M) { + /* Clear bit 9 to fix a phy interop issue. */ + err = bcm54xx_exp_write(phydev, MII_BCM54XX_EXP_EXP08, + MII_BCM54XX_EXP_EXP08_RJCT_2MHZ); + if (err < 0) + goto error; + + if (phydev->drv->phy_id == PHY_ID_BCM50610) { + err = bcm50610_a0_workaround(phydev); + if (err < 0) + goto error; + } + } if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM57780) { int val;