[PATCH 18/21] arm64: dts: allwinner: orangepi-zero2w: enable Ethernet expansion
James Hilliard
james.hilliard1 at gmail.com
Sun Aug 2 22:14:28 PDT 2026
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 <james.hilliard1 at gmail.com>
---
.../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 at 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 at 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 at 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 at 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
More information about the linux-arm-kernel
mailing list