difference is that Realtek driver uses udelay(100) in mdio_write()'s
busy polling loop where as the in-tree uses udelay(25). And that seems
to be the magic difference! Using udelay(100) fixes this!
I'm guessing that the phy needs slight delay between consecutive
mdio_write's even if it has advertised that the write has been
completed. And yes, just adding a small delay in the end of mdio_write
does seem to work too.
Francois, you think the below patch is ok? Should I send it as properly
@@ -559,6 +559,7 @@ static void mdio_write(void __iomem *ioaddr,
static int mdio_read(void __iomem *ioaddr, int reg_addr)