Re: [PATCH 00/21] net: phy: add X-Powers AC200/AC300 EPHY support
Andre Przywara <[email protected]> Mon, 3 Aug 2026 15:26:22 +0200
| Newsgroups | dev.linux.lists.mfd,dev.linux.lists.linux-sunxi,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
Hi James, thanks for sending this to the list, but as Andrew already mentioned: this is quite a beast, and would need to be broken down. Jernej and I created some patches just for the AC200 PHY on the H6, which Jernej recently revived, and IIUC, wanted to send to the list. This would probably be a more workable route: start easy, then add support for more SoCs (H616 depends on the WIP PWM driver) and more variants (AC300) later. Which also brings me to some attribution questions: If I understand correctly, this has been written mostly by some LLM? I think you would need at least to disclose that, if not even add an official tag? Also I wonder how this relates to the patches floating around for a while already: https://github.com/jernejsk/linux-1/commits/ac200-v4. This branch is relatively new, but the ac200-v3 branch for instance is much older. On 8/3/26 07:14, James Hilliard wrote: > The Allwinner H616/H618 secondary EMAC is commonly connected to a Fast > Ethernet PHY in an X-Powers AC200 or AC300 companion package. The two > packages expose the same link PHY ID and largely compatible link-side > registers, but require different control paths before those registers can > be accessed: AC200 is initialized through its I2C MFD, while AC300 uses a > non-PHY Clause 22 control endpoint. > > Some H616-family products were shipped with either package under the same > board identity. For those systems, this series uses a SID NVMEM field to > select the control provider at run time. With CONFIG_OF_DYNAMIC, the link > PHY enables only the selected fail-needs-probe provider, so an AC300 board Just to bring that shallow discussion we had on IRC to the list: I wonder if this is the right solution? Alternatively I was wondering if just patching the DT in U-Boot would simplify things, and also help other DT users like *BSD or U-Boot (proper) itself, to not boil the ocean, but just allowing them to follow a standard DT description. Cheers, Andre > does not probe the unused AC200 I2C controller or claim its pins. The same > drivers also support fixed descriptions without CONFIG_OF_DYNAMIC: a board > can reference one enabled provider, or enable both candidates when runtime > selection is still required. > > The series adds: > > - the H616 EMAC1 binding, stmmac variant and controller node; > - generic MDIO OF reconfiguration support for PHYs, packages, scanned > addresses and generic MDIO devices; > - the AC200 MFD and AC200/AC300 EPHY control providers; > - the shared AC200/AC300 link-PHY driver, including calibration, power and > reset sequencing, MDI/MDI-X, statistics, EDPD, PHY-managed EEE, package > LEDs, interrupts and Wake-on-LAN; and > - H6 and H616-family device-tree descriptions and arm64 defconfig support. > > The AC200 and AC300 control and link paths were exercised on H616-family > hardware during development, including link traffic, address handling, > ethtool EDPD/EEE controls, statistics and LEDs. The H6 interrupt and > Wake-on-LAN description still needs validation by an H6 hardware user. > > This series depends on Richard Genoud's v7 H616 PWM controller series, > which provides the bypass clock used by the companion EPHY: > > https://lore.kernel.org/all/[email protected]/ > > The PWM patches are an external prerequisite and are intentionally not > included in this 21-patch series. > > Signed-off-by: James Hilliard <[email protected]> > --- > James Hilliard (18): > net: mdio: factor out OF child registration helpers > net: mdio: make device map changes hotplug-safe > net: mdio: support dynamic OF device changes > dt-bindings: net: x-powers: add AC200 EPHY control > dt-bindings: mfd: x-powers: add AC200 > mfd: add X-Powers AC200 support > net: phy: add X-Powers AC200 EPHY control driver > dt-bindings: net: x-powers: add AC300 EPHY control > net: phy: add X-Powers AC300 EPHY control driver > dt-bindings: net: x-powers: add AC200/AC300 EPHY > net: phy: support configuring PHY-autonomous Tx LPI > net: phylink: allow PHY-autonomous EEE without MAC LPI > net: phy: add X-Powers AC200/AC300 EPHY driver > arm64: dts: allwinner: h616: add ACx00 EPHY resources > arm64: dts: allwinner: orangepi-zero2w: enable Ethernet expansion > arm64: dts: allwinner: h6: add AC200 EPHY resources > arm64: dts: allwinner: h6: tanix: enable AC200 EPHY > arm64: defconfig: enable X-Powers ACx00 Ethernet support > > Richard Genoud (3): > dt-bindings: net: allwinner: add H616 EMAC1 > net: stmmac: sun8i: add support for Allwinner H616 EMAC1 > arm64: dts: allwinner: h616: add EMAC1 controller > > .../devicetree/bindings/mfd/x-powers,ac200.yaml | 118 ++ > .../bindings/net/allwinner,sun8i-a83t-emac.yaml | 18 +- > .../devicetree/bindings/net/snps,dwmac.yaml | 2 + > .../bindings/net/x-powers,ac200-ephy-ctl.yaml | 46 + > .../bindings/net/x-powers,ac300-ephy-ctl.yaml | 77 ++ > .../bindings/net/x-powers,acx00-ephy.yaml | 217 +++ > arch/arm64/boot/dts/allwinner/sun50i-h6-tanix.dtsi | 45 + > arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 73 + > .../boot/dts/allwinner/sun50i-h616-acx00-ephy.dtsi | 61 + > arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 51 + > .../dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 13 + > arch/arm64/configs/defconfig | 6 + > drivers/mfd/Kconfig | 13 + > drivers/mfd/Makefile | 1 + > drivers/mfd/ac200.c | 302 ++++ > drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 21 + > drivers/net/mdio/of_mdio.c | 508 ++++++- > drivers/net/phy/Kconfig | 30 + > drivers/net/phy/Makefile | 3 + > drivers/net/phy/mdio_bus.c | 14 +- > drivers/net/phy/mdio_bus_provider.c | 140 +- > drivers/net/phy/mdio_device.c | 235 +++- > drivers/net/phy/phy.c | 35 +- > drivers/net/phy/phy_device.c | 127 +- > drivers/net/phy/phylib-internal.h | 4 +- > drivers/net/phy/phylink.c | 35 +- > drivers/net/phy/xpowers-ac200-ctl.c | 330 +++++ > drivers/net/phy/xpowers-ac300-ctl.c | 454 ++++++ > drivers/net/phy/xpowers-acx00.c | 1457 ++++++++++++++++++++ > drivers/net/phy/xpowers-acx00.h | 27 + > include/dt-bindings/mfd/x-powers,ac200.h | 13 + > include/linux/mdio.h | 6 + > include/linux/phy.h | 36 + > 33 files changed, 4384 insertions(+), 134 deletions(-) > --- > base-commit: 075b74841bd0065a3bda3440873c747938e69b68 > change-id: 20260802-submit-acx00-of-dynamic-v1-94a0dc15f282 > prerequisite-message-id: <[email protected]> > prerequisite-patch-id: 8c447ebd677ea7bf9e63a77d34d8fdaa05eebe7f > prerequisite-patch-id: c7574f9c0e2571ce8c6129ac6db7aa959c986ef3 > prerequisite-patch-id: e8b00768102951244927ecf054314f6e02f9ff1b > prerequisite-patch-id: a3e2055ed7f3b5751a3e02d57e674b25ee404ff7 > > Best regards, > -- > James Hilliard <[email protected]> >