
On Wed, 19 May 2021 21:42:08 +0200 Andreas Rehn rehn.andreas86@gmail.com wrote:
Hi,
v3s emac soft reset tooks quit longer if autonegation is active on 100 Mbit full duplex pairs what can result in `sun8i_emac_eth_start: Timeout` error
Mmmh, why the 500ms? Can you figure out how long it typically takes for you? By open-coding wait_for_bit_le32() and printing the time it took to flip the bit back?
Happy to change this then when we have some data.
Cheers, Andre
wait_for_bit_le32 polls register value each ms. Increasing the timeout for setup do not effect current behavior but reduces unexpected behaviors (e.g. timeouts on tftp download).
Signed-off-by: Andreas Rehn rehn.andreas86@gmail.com
drivers/net/sun8i_emac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c index 0e7ad3b0d4..23fd35f9e1 100644 --- a/drivers/net/sun8i_emac.c +++ b/drivers/net/sun8i_emac.c @@ -475,7 +475,7 @@ static int sun8i_emac_eth_start(struct udevice *dev) /* Soft reset MAC */ writel(EMAC_CTL1_SOFT_RST, priv->mac_reg + EMAC_CTL1); ret = wait_for_bit_le32(priv->mac_reg + EMAC_CTL1,
EMAC_CTL1_SOFT_RST, false, 10, true);
if (ret) { printf("%s: Timeout\n", __func__); return ret;EMAC_CTL1_SOFT_RST, false, 500, true);