From 507c3e45e221659feebea2dc9633b049881703a7 Mon Sep 17 00:00:00 2001 From: Pohsun Su Date: Tue, 2 Apr 2024 16:12:25 +0000 Subject: [PATCH] NVIDIA: SAUCE: net: phy: aquantia: Poll for valid FW ID. BugLink: https://bugs.launchpad.net/bugs/2072591 Firmware ID will be shown as 0xFFFF if firmware is not yet loaded. So, add this too in the exit condition of the poll so that poll won't exit for 0xFFFF and continues till init completion with valid FW ID. http://nvbugs/4382502 Signed-off-by: Pohsun Su Signed-off-by: Satish Seelamsetti Reviewed-by: Revanth Kumar Uppala Reviewed-by: Bitan Biswas Signed-off-by: Laxman Dewangan Acked-by: Jacob Martin Acked-by: Noah Wager Signed-off-by: Noah Wager --- drivers/net/phy/aquantia/aquantia_main.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aquantia/aquantia_main.c index dce5def0dc5a..af04e429ae2a 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -124,6 +124,7 @@ /* Vendor specific 1, MDIO_MMD_VEND1 */ #define VEND1_GLOBAL_FW_ID 0x0020 #define VEND1_GLOBAL_FW_ID_MAJOR GENMASK(15, 8) +#define VEND1_GLOBAL_FW_ID_MASK GENMASK(15, 0) #define VEND1_GLOBAL_FW_ID_MINOR GENMASK(7, 0) #define VEND1_GLOBAL_GEN_STAT2 0xc831 @@ -688,7 +689,9 @@ static int aqr107_wait_reset_complete(struct phy_device *phydev) int val; return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1, - VEND1_GLOBAL_FW_ID, val, val != 0, + VEND1_GLOBAL_FW_ID, val, + ((val & VEND1_GLOBAL_FW_ID_MASK) != 0 && + (val & VEND1_GLOBAL_FW_ID_MASK) != VEND1_GLOBAL_FW_ID_MASK), 20000, 2000000, false); } @@ -964,7 +967,7 @@ static int aqr107_suspend(struct phy_device *phydev) int err; if (priv->skip_lpm) - return 0; + return 0; err = phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, MDIO_CTRL1, MDIO_CTRL1_LPOWER); @@ -980,7 +983,7 @@ static int aqr107_resume(struct phy_device *phydev) int err; if (priv->skip_lpm) - return 0; + return 0; err = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, MDIO_CTRL1, MDIO_CTRL1_LPOWER);