net: lpc32xx: fix ignored MDIO busy wait status on read
authorVladimir Zapolskiy <vz@mleia.com>
Sun, 27 Dec 2015 03:12:24 +0000 (05:12 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 14 Jan 2016 02:05:25 +0000 (21:05 -0500)
commit79206c04a9269f87fd943713db70fbc53ec05ed3
treeac62bc47dc5bca941ec4e8bb6568596ae902755e
parent5c58e3a71cfa1b739b1f322fbe996fa09da33b2d
net: lpc32xx: fix ignored MDIO busy wait status on read

The change fixes PHY write operation, which incorrectly waits for
released busy state before issuing a write operation, this breaks
sequential write/read operation logic, because read operation
starts immediately on request and it completes, when busy state is
gone.

Instead of adding the second preceding busy state check to read
function, do busy state release check after issuing a write operation,
this method of operation is also recommended by the LPC32xx User's
Manual, see MII Mgmt Indicators Register notes:

  For PHY Write if scan is not used:
  1. Write 0 to MCMD
  2. Write PHY address and register address to MADR
  3. Write data to MWTD
  4. Wait for busy bit to be cleared in MIND

Reported-by: Alexandre Messier <amessier@tycoint.com>
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Tested-by: Alexandre Messier <amessier@tycoint.com>
drivers/net/lpc32xx_eth.c