Commit 708405f3 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by David S. Miller
Browse files

net: phy: aquantia: wait for the GLOBAL_CFG to start returning real values



When the PHY is first coming up (or resuming from suspend), it's
possible that although the FW status shows as running, we still see
zeroes in the GLOBAL_CFG set of registers and cannot determine available
modes. Since all models support 10M, add a poll and wait the config to
become available.

Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ad649a1f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -652,7 +652,13 @@ static int aqr107_fill_interface_modes(struct phy_device *phydev)
	unsigned long *possible = phydev->possible_interfaces;
	unsigned int serdes_mode, rate_adapt;
	phy_interface_t interface;
	int i, val;
	int i, val, ret;

	ret = phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1,
					VEND1_GLOBAL_CFG_10M, val, val != 0,
					1000, 100000, false);
	if (ret)
		return ret;

	/* Walk the media-speed configuration registers to determine which
	 * host-side serdes modes may be used by the PHY depending on the