]> git.ipfire.org Git - thirdparty/linux.git/commit
net: mdio: Add MDIO bus controller for Airoha AN7583
authorChristian Marangi <ansuelsmth@gmail.com>
Tue, 17 Jun 2025 09:16:53 +0000 (11:16 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Jun 2025 09:09:36 +0000 (10:09 +0100)
commit67e3ba978361cb262f8f8981ab88ccb97f1e2bda
treefd9a63d740d50ad962e16dc80dadbb084f6c07a2
parenta6ee35bd1fe0ef91135479c18ff63af3ef9fe11d
net: mdio: Add MDIO bus controller for Airoha AN7583

Airoha AN7583 SoC have 2 dedicated MDIO bus controller in the SCU
register map. To driver register an MDIO controller based on the DT
reg property and access the register by accessing the parent syscon.

The MDIO bus logic is similar to the MT7530 internal MDIO bus but
deviates of some setting and some HW bug.

On Airoha AN7583 the MDIO clock is set to 25MHz by default and needs to
be correctly setup to 2.5MHz to correctly work (by setting the divisor
to 10x).

There seems to be Hardware bug where AN7583_MII_RWDATA
is not wiped in the context of unconnected PHY and the
previous read value is returned.

Example: (only one PHY on the BUS at 0x1f)
 - read at 0x1f report at 0x2 0x7500
 - read at 0x0 report 0x7500 on every address

To workaround this, we reset the Mdio BUS at every read
to have consistent values on read operation.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/mdio/Kconfig
drivers/net/mdio/Makefile
drivers/net/mdio/mdio-airoha.c [new file with mode: 0644]