[PATCH 18/21] arm64: dts: allwinner: orangepi-zero2w: enable Ethernet expansion
From: James Hilliard <hidden>
Date: 2026-08-03 05:16:25
Also in:
linux-arm-kernel, linux-devicetree, linux-rockchip, linux-sunxi, lkml
Subsystem:
arm/allwinner sunxi soc support, the rest · Maintainers:
Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Linus Torvalds
The optional Orange Pi Zero 2W expansion board exposes H618 EMAC1 through a 100 Mbit Ethernet jack. Add a reusable H616-family description of the AC200/AC300 EPHY wiring alongside its first board user. The forced-ID link PHY selects the populated control path and AC300 tuning range from the logical SID configuration field. Keep the AC200 I2C controller and AC300 MDIO control node at status fail-needs-probe so only the selected path claims its pins. Enable EMAC1 and its PWM clock provider through the common include, provide the board's 3.3 V rail to either companion variant, and make EMAC1 the board Ethernet alias. Signed-off-by: James Hilliard <redacted> --- .../boot/dts/allwinner/sun50i-h616-acx00-ephy.dtsi | 61 ++++++++++++++++++++++ .../dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 13 +++++ 2 files changed, 74 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-acx00-ephy.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616-acx00-ephy.dtsi
new file mode 100644
index 000000000000..26521429957a
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-acx00-ephy.dtsi@@ -0,0 +1,61 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Common X-Powers AC200/AC300 Ethernet PHY support for H616-family SoCs + * + * Copyright (C) 2026 James Hilliard <james.hilliard1@gmail.com> + */ + +&emac1 { + phy-handle = <&acx00_ephy>; + status = "okay"; +}; + +&i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_pa_pins>; + status = "fail-needs-probe"; + + ac200: mixed-signal@10 { + compatible = "x-powers,ac200"; + reg = <0x10>; + clocks = <&pwm 5>; + nvmem-cells = <&ac200_bandgap>; + nvmem-cell-names = "bandgap"; + pinctrl-names = "default"; + pinctrl-0 = <&pwm5_pin>; + + ac200_ephy_ctl: ethernet-phy-control { + compatible = "x-powers,ac200-ephy-ctl"; + nvmem-cells = <&ephy_calibration>; + nvmem-cell-names = "calibration"; + phy-mode = "rmii"; + }; + }; +}; + +&mdio1 { + ac300_ephy_ctl: ethernet-phy-control@10 { + compatible = "x-powers,ac300-ephy-ctl"; + reg = <0x10>; + clocks = <&pwm 5>; + nvmem-cells = <&ephy_calibration>; + nvmem-cell-names = "calibration"; + pinctrl-names = "default"; + pinctrl-0 = <&pwm5_pin>; + phy-mode = "rmii"; + status = "fail-needs-probe"; + }; + + acx00_ephy: ethernet-phy@0 { + compatible = "ethernet-phy-id0044.1400"; + reg = <0>; + nvmem-cells = <&ephy_config>; + nvmem-cell-names = "configuration"; + x-powers,ac200-control = <&ac200_ephy_ctl>; + x-powers,ac300-control = <&ac300_ephy_ctl>; + }; +}; + +&pwm { + status = "okay"; +};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts
index b340bbcb710d..e833ee267c83 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts@@ -6,6 +6,7 @@ /dts-v1/; #include "sun50i-h616.dtsi" +#include "sun50i-h616-acx00-ephy.dtsi" #include "sun50i-h616-cpu-opp.dtsi" #include <dt-bindings/gpio/gpio.h>
@@ -17,6 +18,7 @@ / { compatible = "xunlong,orangepi-zero2w", "allwinner,sun50i-h618"; aliases { + ethernet0 = &emac1; serial0 = &uart0; };
@@ -54,6 +56,17 @@ reg_vcc3v3: vcc3v3 { }; }; +&ac200 { + ac-ldoin-supply = <®_vcc3v3>; + ephy-vcc-supply = <®_vcc3v3>; + rtc-vcc-supply = <®_vcc3v3>; + tv-vcc-supply = <®_vcc3v3>; +}; + +&ac300_ephy_ctl { + vcc1-supply = <®_vcc3v3>; +}; + &codec { allwinner,audio-routing = "Line Out", "LINEOUT"; status = "okay";
--
2.53.0