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