1
0
Fork 0

net: phy: realtek: Use generic genphy_parse_link() for RTL8211E

The problem with current implementation is that SPDDONE bit is 1
but link bit is zero. That's why phydev->link is setup to 0
which ending up in driver failure that link is not up.

Log:
Zynq> dhcp
ethernet@e000b000 Waiting for PHY auto negotiation to complete.......
done
ethernet@e000b000: No link.

There is at least 1ms delay between spddone bit and link up.

Use genphy_read_status() instead of realtek implemenation which is
working with page 11. Linux driver is also using generic implementation.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
utp
Michal Simek 2016-02-13 10:31:32 +01:00 committed by Michal Simek
parent 9ec2cf00b4
commit 6a10bc5be8
1 changed files with 9 additions and 1 deletions

View File

@ -203,6 +203,14 @@ static int rtl8211x_startup(struct phy_device *phydev)
return 0;
}
static int rtl8211e_startup(struct phy_device *phydev)
{
genphy_update_link(phydev);
genphy_parse_link(phydev);
return 0;
}
static int rtl8211f_startup(struct phy_device *phydev)
{
/* Read the Status (2x to make sure link is right) */
@ -230,7 +238,7 @@ static struct phy_driver RTL8211E_driver = {
.mask = 0xffffff,
.features = PHY_GBIT_FEATURES,
.config = &rtl8211x_config,
.startup = &rtl8211x_startup,
.startup = &rtl8211e_startup,
.shutdown = &genphy_shutdown,
};