On 24.05.2019 12:25, Max Uvarov wrote: > After reset SGMII Autoneg timer is set to 2us (bits 6 and 5 are 01). > That us not enough to finalize autonegatiation on some devices. > Increase this timer duration to maximum supported 16ms. > > Signed-off-by: Max Uvarov <muva...@gmail.com> > --- > drivers/net/phy/dp83867.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c > index afd31c516cc7..66b0a09ad094 100644 > --- a/drivers/net/phy/dp83867.c > +++ b/drivers/net/phy/dp83867.c > @@ -297,6 +297,19 @@ static int dp83867_config_init(struct phy_device *phydev) > WARN_ONCE(1, "dp83867: err DP83867_10M_SGMII_CFG\n"); > return ret; > } > + > + /* After reset SGMII Autoneg timer is set to 2us (bits 6 and 5 > + * are 01). That us not enough to finalize autoneg on some > + * devices. Increase this timer duration to maximum 16ms. > + */ In the public datasheet the bits are described as reserved. However, based on the value, I suppose it's not a timer value but the timer resolution.
> + val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4); > + val &= ~(BIT(5) | BIT(6)); > + ret = phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val); > + if (ret) { > + WARN_ONCE(1, "dp83867: error config sgmii auto-neg > timer\n"); > + return ret; Same comment as for patch 1. > + } > + > } > > /* Enable Interrupt output INT_OE in CFG3 register */ >