[PATCH 18/21] arm64: dts: allwinner: orangepi-zero2w: enable Ethernet expansion
James Hilliard <[email protected]> Sun, 02 Aug 2026 23:14:28 -0600
| Newsgroups | dev.linux.lists.linux-sunxi,dev.linux.lists.mfd,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]> |
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 <[email protected]> --- .../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 <[email protected]> + */ + +&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