ar8216: use genphy_config_aneg also for PHY 0
Kernel 3.14 introduced a switch reset in phy_init_hw in drivers/net/phy causing BMCR_ANENABLE to get cleared. Due to the fact that ar8xxx_phy_config_aneg does nothing for PHY 0 autonegatiation support remains disabled. This can cause ports to operate at 10MBit/half-duplex only. Fix this by calling genphy_config_aneg for PHY 0 too as genphy_config_aneg sets BMCR_ANENABLE if it's not yet set. Fixes: ticket 17800 Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> SVN-Revision: 43332
This commit is contained in:
parent
898712f43f
commit
43e3e88379
1 changed files with 1 additions and 10 deletions
|
@ -2863,15 +2863,6 @@ ar8xxx_phy_read_status(struct phy_device *phydev)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
ar8xxx_phy_config_aneg(struct phy_device *phydev)
|
|
||||||
{
|
|
||||||
if (phydev->addr == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return genphy_config_aneg(phydev);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const u32 ar8xxx_phy_ids[] = {
|
static const u32 ar8xxx_phy_ids[] = {
|
||||||
0x004dd033,
|
0x004dd033,
|
||||||
0x004dd034, /* AR8327 */
|
0x004dd034, /* AR8327 */
|
||||||
|
@ -3043,7 +3034,7 @@ static struct phy_driver ar8xxx_phy_driver = {
|
||||||
.remove = ar8xxx_phy_remove,
|
.remove = ar8xxx_phy_remove,
|
||||||
.detach = ar8xxx_phy_detach,
|
.detach = ar8xxx_phy_detach,
|
||||||
.config_init = ar8xxx_phy_config_init,
|
.config_init = ar8xxx_phy_config_init,
|
||||||
.config_aneg = ar8xxx_phy_config_aneg,
|
.config_aneg = genphy_config_aneg,
|
||||||
.read_status = ar8xxx_phy_read_status,
|
.read_status = ar8xxx_phy_read_status,
|
||||||
.driver = { .owner = THIS_MODULE },
|
.driver = { .owner = THIS_MODULE },
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue