mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-23 20:24:26 +08:00
net: phy: aquantia: wait for phy init sequence to finish
Aquantia quad-phys may take longer to initialize. This commit adds a polling mechanism for a global alarm bit that tells if phy init sequence is completed. Signed-off-by: Florin Chiculita <florinlaurentiu.chiculita@nxp.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
7c56408be6
commit
bf58916373
@ -37,6 +37,9 @@
|
||||
#define GLOBAL_FAULT 0xc850
|
||||
#define GLOBAL_RSTATUS_1 0xc885
|
||||
|
||||
#define GLOBAL_ALARM_1 0xcc00
|
||||
#define SYSTEM_READY_BIT 0x40
|
||||
|
||||
#define GLOBAL_STANDARD_CONTROL 0x0
|
||||
#define SOFT_RESET BIT(15)
|
||||
#define LOW_POWER BIT(11)
|
||||
@ -258,6 +261,18 @@ int aquantia_config(struct phy_device *phydev)
|
||||
{
|
||||
u32 val, id, rstatus, fault;
|
||||
u32 reg_val1 = 0;
|
||||
int num_retries = 5;
|
||||
|
||||
/*
|
||||
* check if the system is out of reset and init sequence completed.
|
||||
* chip-wide reset for gen1 quad phys takes longer
|
||||
*/
|
||||
while (--num_retries) {
|
||||
rstatus = phy_read(phydev, MDIO_MMD_VEND1, GLOBAL_ALARM_1);
|
||||
if (rstatus & SYSTEM_READY_BIT)
|
||||
break;
|
||||
mdelay(10);
|
||||
}
|
||||
|
||||
id = phy_read(phydev, MDIO_MMD_VEND1, GLOBAL_FIRMWARE_ID);
|
||||
rstatus = phy_read(phydev, MDIO_MMD_VEND1, GLOBAL_RSTATUS_1);
|
||||
|
Loading…
Reference in New Issue
Block a user