net: phy: mscc-miim: improve waiting logic
authorAntoine Tenart <antoine.tenart@bootlin.com>
Tue, 26 May 2020 16:22:55 +0000 (18:22 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 May 2020 22:33:56 +0000 (15:33 -0700)
commitd9c6de35e051c17474ec8a1fe2fdb8cd2b6f1a87
treea3e1468f56de6a4f78fdef5bb5a2fd10f809d982
parentf5112c8ae22f8d5796b10d9f5db0014b3546dd00
net: phy: mscc-miim: improve waiting logic

The MSCC MIIM MDIO driver uses a waiting logic to wait for the MDIO bus
to be ready to accept next commands. It does so by polling the BUSY
status bit which indicates the MDIO bus has completed all pending
operations. This can take time, and the controller supports writing the
next command as soon as there are no pending commands (which happens
while the MDIO bus is busy completing its current command).

This patch implements this improved logic by adding an helper to poll
the PENDING status bit, and by adjusting where we should wait for the
bus to not be busy or to not be pending.

Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio-mscc-miim.c