2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/net/mdio
Christian Marangi 67e3ba9783 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>
2025-06-27 10:09:36 +01:00
..
acpi_mdio.c net: mdio: fill in missing MODULE_DESCRIPTION()s 2023-11-01 21:50:57 -07:00
fwnode_mdio.c net: pse-pd: Introduce attached_phydev to pse control 2025-06-18 19:00:15 -07:00
Kconfig net: mdio: Add MDIO bus controller for Airoha AN7583 2025-06-27 10:09:36 +01:00
Makefile net: mdio: Add MDIO bus controller for Airoha AN7583 2025-06-27 10:09:36 +01:00
mdio-airoha.c net: mdio: Add MDIO bus controller for Airoha AN7583 2025-06-27 10:09:36 +01:00
mdio-aspeed.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-bcm-iproc.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-bcm-unimac.c net: phy: mdio-bcm-unimac: Add asp-v3.0 2025-04-24 16:59:53 -07:00
mdio-bitbang.c net: mdio: fill in missing MODULE_DESCRIPTION()s 2023-11-01 21:50:57 -07:00
mdio-cavium.c net: mdio: cavium: Remove unneeded simicolons 2023-01-17 13:19:05 +01:00
mdio-cavium.h net: mdio: cavium: Separate C22 and C45 transactions 2023-01-13 21:40:53 -08:00
mdio-gpio.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-hisi-femac.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-i2c.c net: mdio: mdio-i2c: Add support for single-byte SMBus operations 2025-03-25 09:10:55 -07:00
mdio-ipq4019.c net: mdio-ipq4019: add missing error check 2024-11-26 11:01:39 +01:00
mdio-ipq8064.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-moxart.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mscc-miim.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux-bcm6368.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux-bcm-iproc.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux-gpio.c net: mdio: mux-gpio: use gpiod_multi_set_value_cansleep 2025-06-12 18:37:51 -07:00
mdio-mux-meson-g12a.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux-meson-gxl.c net: mdio: mux-meson-gxl: set reversed bit when using internal phy 2025-04-29 12:01:53 -07:00
mdio-mux-mmioreg.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux-multiplexer.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-mux.c net: mdio-mux: be compatible with parent buses which only support C45 2023-12-14 18:55:38 -08:00
mdio-mvusb.c net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe() 2023-05-07 14:59:02 +01:00
mdio-octeon.c net: simplify resource acquisition + ioremap 2024-12-06 17:28:34 -08:00
mdio-realtek-rtl9300.c net: mdio: Add RTL9300 MDIO driver 2025-04-15 11:00:37 +02:00
mdio-regmap.c net: mdio: Introduce a regmap-based mdio driver 2023-06-05 09:56:36 +01:00
mdio-sun4i.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
mdio-thunder.c net: mdio: thunder: Use pure PCI devres API 2025-04-28 16:19:16 -07:00
mdio-xgene.c net: mdio: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
of_mdio.c net: phy: fixed_phy: remove irq argument from fixed_phy_register 2025-05-20 18:17:43 -07:00