Hi Andrew Jeffery, Thank you for your reply. > > iowrite32(ctrl, ctx->base + ASPEED_MDIO_CTRL); > > + /* Add dummy read to ensure triggering mdio controller */ > > + (void)ioread32(ctx->base + ASPEED_MDIO_CTRL); > > Why do this when the same register is immediately read by > readl_poll_timeout() below? > > If there is a reason, I'd like some more explanation in the comment you've > added, discussing the details of the problem it's solving when taking into > account the readl_poll_timeout() call. > Agree. When the bus is sometimes busy, it may cause the driver is unable to write the register to the MDIO controller immediately. Therefore, add a dummy read to ensure the previous write command has arrived to the MDIO controller before polling MDIO controller status. I will add more details in next version of the commit. Thanks, Jacky