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>
This commit is contained in:
parent
9ec2cf00b4
commit
6a10bc5be8
@ -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,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user