On Wed, 19 May 2021 21:42:08 +0200 Andreas Rehn <rehn.andrea...@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.andrea...@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); > + EMAC_CTL1_SOFT_RST, false, 500, true); > if (ret) { > printf("%s: Timeout\n", __func__); > return ret;