net: mdio: mdio-bitbang: Fix C45 read/write protocol
authorSerge Semin <fancer.lancer@gmail.com>
Wed, 16 Aug 2023 18:06:52 +0000 (21:06 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 19 Aug 2023 11:41:33 +0000 (12:41 +0100)
commit2572ce62415cf3b632391091447252e2661ed520
treed5138d4ea16c23b3c5352b88603f3838dd9d0cae
parente94b590abfff2cdbf0bdaa7d9904364c8d480af5
net: mdio: mdio-bitbang: Fix C45 read/write protocol

Based on the original code semantic in case of Clause 45 MDIO, the address
command is supposed to be followed by the command sending the MMD address,
not the CSR address. The commit 002dd3de097c ("net: mdio: mdio-bitbang:
Separate C22 and C45 transactions") has erroneously broken that. So most
likely due to an unfortunate variable name it switched the code to sending
the CSR address. In our case it caused the protocol malfunction so the
read operation always failed with the turnaround bit always been driven to
one by PHY instead of zero. Fix that by getting back the correct
behaviour: sending MMD address command right after the regular address
command.

Fixes: 002dd3de097c ("net: mdio: mdio-bitbang: Separate C22 and C45 transactions")
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/mdio/mdio-bitbang.c