[PATCH net-next v6 0/2] net: phy: add X-Powers AC200/AC300 EPHY support

From: James Hilliard

Date: Tue Aug 11 2026 - 04:38:15 EST


This submission contains only the networking binding and PHY driver and
is intended for net-next. The AC200 I2C register provider and managed
syscon registration support were submitted separately for the MFD tree:

https://patch.msgid.link/20260811-submit-ac200-mfd-v6-0-c5b1292c8498@xxxxxxxxx

Neither series has a compile-time dependency or required merge order.
Their only shared design point is the DT representation: the MDIO
PHY-package node references the separately described AC200 I2C node for
package-control register access.

The AC200 and AC300 contain compatible Fast Ethernet link PHYs which
report the same Clause 22 identifier and use the same link-side register
layout. The link endpoint is inaccessible until package-specific control
registers have powered and configured it.

Both variants are modeled as standard Ethernet PHY packages with one
forced-ID link-PHY child. The package reg value is the link address.
AC300's control range is a fixed package-relative offset of 16 and is
accessed with the PHY package helpers. AC200 reaches its control registers
through a phandle to the companion IC's I2C register interface.

Fixed hardware uses an AC200- or AC300-specific package compatible.
Systems which can contain either package use the ACx00 package compatible
and one packed SID configuration field. Bits 3 through 0 carry the analog
calibration, bit 8 selects AC300, and bit 9 selects its low-calibration
tuning. The driver chooses the backend before acquiring any
backend-specific resource.

One xpowers-acx00 module binds the link child, joins the parent package and
runs the selected backend. It manages the package supply, MII or RMII mode,
vendor analog initialization and package state across suspend and resume.
The common link implementation preserves automatic MDI/MDI-X and standard
MAC-managed EEE advertisement while disabling only the vendor
PHY-autonomous Intelligent EEE mode.

The two patches add the AC200/AC300 PHY-package binding and the combined
PHY driver. Board Device Trees and optional PHY features remain outside
this initial series.

The AC200 portions build on earlier work by Jernej Skrabec and Andre
Przywara:

https://github.com/jernejsk/linux-1/commits/ac200-v4

Public AC200 and AC300 documentation is linked from:

https://linux-sunxi.org/AC200

Validation completed for v6:

- dt_binding_check for the PHY-package schema;
- an x86_64 allmodconfig composite-object build with W=1;
- a built-in AC300-only configuration with I2C and MFD_SYSCON disabled,
built with W=1; and
- strict checkpatch checks with no errors and only the generic new-file
MAINTAINERS prompts.

The hardware results remain those from v5 because the driver code is
unchanged. AC200 and AC300 each negotiated a 100 Mbps full-duplex RMII
link on H616 boards and passed eight MiB of traffic in both directions.
AC200 also passed 100 consecutive pings and supplier unbind/rebind
testing. Both variants restored their regulator, package state and link
across an administrative down/up cycle.

Assisted-by: OpenAI Codex (gpt-5.6-sol, max)
Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
---
Changes in v6:
- split the networking work from the independently mergeable MFD series
- add the posting link for the separately submitted MFD series
- remove the redundant explicit schema selector
- describe the AC200 phandle in hardware terms and state its purpose
- simplify the clock description and keep only the needed NVMEM dependency
- reduce the binding examples to one
- rebase onto current net-next
- Link to v5: https://patch.msgid.link/20260809-submit-acx00-of-dynamic-v1-v5-0-bfa1f8518b28@xxxxxxxxx

---
James Hilliard (2):
dt-bindings: net: x-powers: add AC200/AC300 EPHY packages
net: phy: add X-Powers AC200/AC300 EPHY driver

.../bindings/net/x-powers,acx00-ephy-package.yaml | 154 ++++++
drivers/net/phy/Kconfig | 11 +
drivers/net/phy/Makefile | 1 +
drivers/net/phy/xpowers/Makefile | 3 +
drivers/net/phy/xpowers/ac200.c | 315 ++++++++++++
drivers/net/phy/xpowers/ac300.c | 387 +++++++++++++++
drivers/net/phy/xpowers/acx00.c | 536 +++++++++++++++++++++
drivers/net/phy/xpowers/acx00.h | 28 ++
8 files changed, 1435 insertions(+)
---
base-commit: d67e5dbda22604d0fcde32fce58c65f88676e676
change-id: 20260802-submit-acx00-of-dynamic-v1-94a0dc15f282

Best regards,
--
James Hilliard <james.hilliard1@xxxxxxxxx>