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:
Felix Fietkau 2014-11-19 20:18:01 +00:00
parent 898712f43f
commit 43e3e88379

View file

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