diff options
author | Stefan Roese <sr@denx.de> | 2016-02-10 07:06:06 +0100 |
---|---|---|
committer | Joe Hershberger <joe.hershberger@ni.com> | 2016-02-18 11:32:03 -0600 |
commit | a8c3eca43393cffef16a40e683f7a4d45b37e6ed (patch) | |
tree | c43359163b153cf86d5e4d50f5655e9fd8bd5f52 /drivers/net/phy | |
parent | 3089c47ddc0ed7f5ca8a7aed9a6cddef5223cdf0 (diff) |
net: phy: marvell: Fix problem with phy_reset() clearing BMCR
With commit a058052c [net: phy: do not read configuration register on
reset], phy_reset() will clear the BMCR register. Resulting in bit 12
being cleared (A/N enable). This leads to autonegotiation link problems,
at least on the Marvell Armada ClearFog board. I suspect that other
boards using this driver will be affected as well.
At the of m88e1111s_config(), phy_reset() is called. This is not needed
for the PHY to load the changed configuration, as phy_reset() is called
a few lines before already. So lets call genphy_restart_aneg() here
instead to start the AN correctly.
Tested on clearfog.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Hao Zhang <hzhang@ti.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Andy Fleming <afleming@gmail.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r-- | drivers/net/phy/marvell.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index 6e3dc85379..b8b1157a0a 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c @@ -251,8 +251,7 @@ static int m88e1111s_config(struct phy_device *phydev) phy_reset(phydev); genphy_config_aneg(phydev); - - phy_reset(phydev); + genphy_restart_aneg(phydev); return 0; } |