mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
Merge branch 'net-phy-add-x-powers-ac200-ac300-ephy-support'
James Hilliard says: ==================== net: phy: add X-Powers AC200/AC300 EPHY support This submission contains only the networking binding and PHY driver and is intended for net-next. The AC200 I2C register provider was submitted separately for the MFD tree: https://patch.msgid.link/20260907-submit-ac200-mfd-v11-0-58dd9dc7f69a@gmail.com The two series can build and be merged independently. AC300 needs only the networking series. The AC200 runtime path additionally needs the separately submitted MFD provider and binding. Their shared design point is the DT representation: the MDIO PHY-package node references the AC200 I2C node for access to package-control registers. 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. For AC200, the driver resolves the referenced I2C device, establishes a managed device link, and takes the supplier device lock before checking that the provider is fully bound and retrieving the regmap attached to that device. It waits for transient lock holders instead of treating lock contention as a missing dependency. The link then keeps the provider bound until the PHY consumer has unbound. This uses the generic device and regmap interfaces and supports multiple AC200 instances without syscon or a private cross-subsystem API. 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. A private mutex serializes package state across phylib callback contexts, while suspend recovery also holds the phylib lock. The two patches add the AC200/AC300 PHY-package binding and 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 ==================== Link: https://patch.msgid.link/20260909-submit-acx00-of-dynamic-v1-v11-0-eb45e89ef918@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
a0bd756087
8 changed files with 1547 additions and 0 deletions
Loading…
Add table
Add a link
Reference in a new issue