net, phy, cpsw: fix gigabit register access
accessing a lan9303 switch with the cpsw driver results in wrong speed detection, as the switch sets the BMSR_ERCAP in BMSR register, and follow read of the MII_STAT1000 register fails, as the switch does not support it. Current code did not check, if a phy_read() fails ... fix this. Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Joe Hershberger <joe.hershberger@gmail.com> Acked-by: Mugunthan V N <mugunthanvnm@ti.com> Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
@@ -277,7 +277,7 @@ int genphy_parse_link(struct phy_device *phydev)
|
||||
/* We're using autonegotiation */
|
||||
if (mii_reg & BMSR_ANEGCAPABLE) {
|
||||
u32 lpa = 0;
|
||||
u32 gblpa = 0;
|
||||
int gblpa = 0;
|
||||
u32 estatus = 0;
|
||||
|
||||
/* Check for gigabit capability */
|
||||
@@ -286,6 +286,10 @@ int genphy_parse_link(struct phy_device *phydev)
|
||||
* both PHYs in the link
|
||||
*/
|
||||
gblpa = phy_read(phydev, MDIO_DEVAD_NONE, MII_STAT1000);
|
||||
if (gblpa < 0) {
|
||||
debug("Could not read MII_STAT1000. Ignoring gigabit capability\n");
|
||||
gblpa = 0;
|
||||
}
|
||||
gblpa &= phy_read(phydev,
|
||||
MDIO_DEVAD_NONE, MII_CTRL1000) << 2;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user