* [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support
@ 2026-10-03 8:46 Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 1/2] riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay Chen-Yu Yeh
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Chen-Yu Yeh @ 2026-10-03 8:46 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Hiago De Franco, Longbin Li, Anton D. Stavinskii, Joshua Milas,
devicetree, linux-riscv, sophgo, linux-kernel, Chen-Yu Yeh
The Milk-V Duo 256M has no Ethernet connector of its own; the SG2002's
internal PHY is only usable through the optional USB & Ethernet IO
board. This series adds an overlay for that board and fixes the name of
the internal PHY node it exposes.
Changes in v2:
- Enable Ethernet through an overlay instead of in the board
devicetree, since without the IO board the pins may be used as GPIO
(Inochi)
- Send both patches in one thread (Inochi)
- Test link-up and traffic on the IO board, which v1 could not
- Collect Inochi's Reviewed-by on the PHY node name fix
The overlay has the same shape as Hiago's for the Milk-V Duo [1], so the
two boards stay consistent. The PHY node name fix is in cv180x.dtsi and
so covers that board as well.
Testing, with a kernel built from this branch:
- sg2002-milkv-duo256m-eth.dtb: eth0 comes up at 100Mbps/Full, gets an
address via DHCP and passes traffic
- sg2002-milkv-duo256m.dtb: no eth0 is created, and the gmac node
reads back as disabled
Kernel log with sg2002-milkv-duo256m-eth.dtb:
[ 1.426499] stmmaceth 4070000.ethernet: User ID: 0x10, Synopsys ID: 0x37
[ 1.426536] stmmaceth 4070000.ethernet: DWMAC1000
[ 6.052829] stmmaceth 4070000.ethernet eth0: PHY [mdio_mux-0.0:01] driver [Generic PHY] (irq=POLL)
[ 8.138131] stmmaceth 4070000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
inet 192.168.0.47/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
With the base sg2002-milkv-duo256m.dtb:
# ip addr show eth0
ip: can't find device 'eth0'
# cat /proc/device-tree/soc/ethernet@4070000/status
disabled
iperf3 against a desktop on the same switch gives 94 Mbit/s with the
board sending and 70-74 Mbit/s with it receiving, with no
retransmissions either way. The receive side being slower is not a CPU
limit on the board; I have not looked into it further yet.
v1: https://lore.kernel.org/sophgo/20260803163323.74414-1-chenyou910331@gmail.com/
https://lore.kernel.org/sophgo/20260803163427.74445-1-chenyou910331@gmail.com/
[1] https://lore.kernel.org/sophgo/20261001-milkv-duo-eth-overlay-v1-1-78bc1454f35b@baylibre.com/
Chen-Yu Yeh (2):
riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay
riscv: dts: sophgo: cv180x: Fix internal ephy node name
arch/riscv/boot/dts/sophgo/Makefile | 3 +++
arch/riscv/boot/dts/sophgo/cv180x.dtsi | 2 +-
.../dts/sophgo/sg2002-milkv-duo256m-eth.dtso | 17 +++++++++++++++++
3 files changed, 21 insertions(+), 1 deletion(-)
create mode 100644 arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay
2026-10-03 8:46 [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Chen-Yu Yeh
@ 2026-10-03 8:46 ` Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name Chen-Yu Yeh
2026-10-03 16:32 ` [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Hiago De Franco
2 siblings, 0 replies; 5+ messages in thread
From: Chen-Yu Yeh @ 2026-10-03 8:46 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Hiago De Franco, Longbin Li, Anton D. Stavinskii, Joshua Milas,
devicetree, linux-riscv, sophgo, linux-kernel, Chen-Yu Yeh
The SG2002 has an internal 10/100 Ethernet PHY, but on the Milk-V Duo
256M the Ethernet signals only reach the RJ45 connector on the optional
USB & Ethernet IO board. The MAC (gmac0) and the MDIO multiplexer used
to reach the internal PHY are already described in cv180x.dtsi but are
disabled, and they cannot be enabled in the board devicetree because
without the IO board the same pins may be used as GPIO.
Add an overlay that enables them.
Tested on Milk-V Duo 256M with the USB & Ethernet IO board: the link
comes up at 100Mbps/Full, the interface gets an address via DHCP and
passes traffic in both directions. Without the overlay, eth0 does not
appear.
Signed-off-by: Chen-Yu Yeh <chenyou910331@gmail.com>
---
arch/riscv/boot/dts/sophgo/Makefile | 3 +++
.../dts/sophgo/sg2002-milkv-duo256m-eth.dtso | 17 +++++++++++++++++
2 files changed, 20 insertions(+)
create mode 100644 arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso
diff --git a/arch/riscv/boot/dts/sophgo/Makefile b/arch/riscv/boot/dts/sophgo/Makefile
index d5c80d4ff005..49639cb0888b 100644
--- a/arch/riscv/boot/dts/sophgo/Makefile
+++ b/arch/riscv/boot/dts/sophgo/Makefile
@@ -4,6 +4,9 @@ dtb-$(CONFIG_ARCH_SOPHGO) += cv1812h-huashan-pi.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2000-milkv-duo-s.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-licheerv-nano-b.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-milkv-duo256m.dtb
+sg2002-milkv-duo256m-eth-dtbs := sg2002-milkv-duo256m.dtb sg2002-milkv-duo256m-eth.dtbo
+dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-milkv-duo256m-eth.dtb
+dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-milkv-duo256m-eth.dtbo
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-milkv-pioneer.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-evb-v1.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-evb-v2.dtb
diff --git a/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso b/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso
new file mode 100644
index 000000000000..cc93746d932c
--- /dev/null
+++ b/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Enable ethernet on Milk-V Duo 256M with the USB & Ethernet IO board.
+ *
+ * Copyright (c) 2026, Chen-Yu Yeh <chenyou910331@gmail.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&gmac0 {
+ status = "okay";
+};
+
+&mdio {
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name
2026-10-03 8:46 [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 1/2] riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay Chen-Yu Yeh
@ 2026-10-03 8:46 ` Chen-Yu Yeh
2026-10-03 16:23 ` Hiago De Franco
2026-10-03 16:32 ` [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Hiago De Franco
2 siblings, 1 reply; 5+ messages in thread
From: Chen-Yu Yeh @ 2026-10-03 8:46 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: Hiago De Franco, Longbin Li, Anton D. Stavinskii, Joshua Milas,
devicetree, linux-riscv, sophgo, linux-kernel, Chen-Yu Yeh
The internal EPHY node is named "phy@0" while its reg property is <1>.
The unit-address should match the first entry of the reg property, but
this is not checked by dtc for MDIO buses. The kernel confirms the PHY
is indeed at address 1:
eth0: PHY [mdio_mux-0.0:01] driver [Generic PHY]
Rename the node to ethernet-phy@1, which also follows the common naming
convention for ethernet PHY nodes.
Fixes: ba1abacc57cb ("riscv: dts: sophgo: Add mdio multiplexer device for cv18xx")
Reviewed-by: Inochi Amaoto <inochiama@gmail.com>
Signed-off-by: Chen-Yu Yeh <chenyou910331@gmail.com>
---
arch/riscv/boot/dts/sophgo/cv180x.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/riscv/boot/dts/sophgo/cv180x.dtsi b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
index ec3bf305274a..cf672cc6b935 100644
--- a/arch/riscv/boot/dts/sophgo/cv180x.dtsi
+++ b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
@@ -71,7 +71,7 @@ internal_mdio: mdio@0 {
#size-cells = <0>;
reg = <0>;
- internal_ephy: phy@0 {
+ internal_ephy: phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name
2026-10-03 8:46 ` [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name Chen-Yu Yeh
@ 2026-10-03 16:23 ` Hiago De Franco
0 siblings, 0 replies; 5+ messages in thread
From: Hiago De Franco @ 2026-10-03 16:23 UTC (permalink / raw)
To: Chen-Yu Yeh
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, Longbin Li, Anton D. Stavinskii, Joshua Milas,
devicetree, linux-riscv, sophgo, linux-kernel
Hi Chen-Yu,
On Sat, Oct 03, 2026 at 04:46:26PM +0800, Chen-Yu Yeh wrote:
> The internal EPHY node is named "phy@0" while its reg property is <1>.
> The unit-address should match the first entry of the reg property, but
> this is not checked by dtc for MDIO buses. The kernel confirms the PHY
> is indeed at address 1:
>
> eth0: PHY [mdio_mux-0.0:01] driver [Generic PHY]
>
> Rename the node to ethernet-phy@1, which also follows the common naming
> convention for ethernet PHY nodes.
>
> Fixes: ba1abacc57cb ("riscv: dts: sophgo: Add mdio multiplexer device for cv18xx")
My only comment here is that I belive you should remove the newline
between "Fixes" and the "Reviewed-by".
>
> Reviewed-by: Inochi Amaoto <inochiama@gmail.com>
> Signed-off-by: Chen-Yu Yeh <chenyou910331@gmail.com>
> ---
> arch/riscv/boot/dts/sophgo/cv180x.dtsi | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/riscv/boot/dts/sophgo/cv180x.dtsi b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
> index ec3bf305274a..cf672cc6b935 100644
> --- a/arch/riscv/boot/dts/sophgo/cv180x.dtsi
> +++ b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
> @@ -71,7 +71,7 @@ internal_mdio: mdio@0 {
> #size-cells = <0>;
> reg = <0>;
>
> - internal_ephy: phy@0 {
> + internal_ephy: phy@1 {
> compatible = "ethernet-phy-ieee802.3-c22";
> reg = <1>;
> };
> --
> 2.43.0
>
Best regards,
--
Hiago
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support
2026-10-03 8:46 [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 1/2] riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name Chen-Yu Yeh
@ 2026-10-03 16:32 ` Hiago De Franco
2 siblings, 0 replies; 5+ messages in thread
From: Hiago De Franco @ 2026-10-03 16:32 UTC (permalink / raw)
To: Chen-Yu Yeh
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen Wang,
Inochi Amaoto, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti, Longbin Li, Anton D. Stavinskii, Joshua Milas,
devicetree, linux-riscv, sophgo, linux-kernel
On Sat, Oct 03, 2026 at 04:46:24PM +0800, Chen-Yu Yeh wrote:
> The Milk-V Duo 256M has no Ethernet connector of its own; the SG2002's
> internal PHY is only usable through the optional USB & Ethernet IO
> board. This series adds an overlay for that board and fixes the name of
> the internal PHY node it exposes.
>
> Changes in v2:
> - Enable Ethernet through an overlay instead of in the board
> devicetree, since without the IO board the pins may be used as GPIO
> (Inochi)
> - Send both patches in one thread (Inochi)
> - Test link-up and traffic on the IO board, which v1 could not
> - Collect Inochi's Reviewed-by on the PHY node name fix
>
> The overlay has the same shape as Hiago's for the Milk-V Duo [1], so the
> two boards stay consistent. The PHY node name fix is in cv180x.dtsi and
> so covers that board as well.
>
> Testing, with a kernel built from this branch:
>
> - sg2002-milkv-duo256m-eth.dtb: eth0 comes up at 100Mbps/Full, gets an
> address via DHCP and passes traffic
> - sg2002-milkv-duo256m.dtb: no eth0 is created, and the gmac node
> reads back as disabled
>
> Kernel log with sg2002-milkv-duo256m-eth.dtb:
>
> [ 1.426499] stmmaceth 4070000.ethernet: User ID: 0x10, Synopsys ID: 0x37
> [ 1.426536] stmmaceth 4070000.ethernet: DWMAC1000
> [ 6.052829] stmmaceth 4070000.ethernet eth0: PHY [mdio_mux-0.0:01] driver [Generic PHY] (irq=POLL)
> [ 8.138131] stmmaceth 4070000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
>
> # ip addr show eth0
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
> inet 192.168.0.47/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
>
> With the base sg2002-milkv-duo256m.dtb:
>
> # ip addr show eth0
> ip: can't find device 'eth0'
> # cat /proc/device-tree/soc/ethernet@4070000/status
> disabled
>
> iperf3 against a desktop on the same switch gives 94 Mbit/s with the
> board sending and 70-74 Mbit/s with it receiving, with no
> retransmissions either way. The receive side being slower is not a CPU
> limit on the board; I have not looked into it further yet.
>
> v1: https://lore.kernel.org/sophgo/20260803163323.74414-1-chenyou910331@gmail.com/
> https://lore.kernel.org/sophgo/20260803163427.74445-1-chenyou910331@gmail.com/
>
> [1] https://lore.kernel.org/sophgo/20261001-milkv-duo-eth-overlay-v1-1-78bc1454f35b@baylibre.com/
for the series,
Reviewed-by: Hiago De Franco <hfranco@baylibre.com>
>
> Chen-Yu Yeh (2):
> riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay
> riscv: dts: sophgo: cv180x: Fix internal ephy node name
>
> arch/riscv/boot/dts/sophgo/Makefile | 3 +++
> arch/riscv/boot/dts/sophgo/cv180x.dtsi | 2 +-
> .../dts/sophgo/sg2002-milkv-duo256m-eth.dtso | 17 +++++++++++++++++
> 3 files changed, 21 insertions(+), 1 deletion(-)
> create mode 100644 arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m-eth.dtso
>
> --
> 2.43.0
>
Best regards,
--
Hiago
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-03 16:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-03 8:46 [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 1/2] riscv: dts: sophgo: add Milk-V Duo 256M ethernet support overlay Chen-Yu Yeh
2026-10-03 8:46 ` [PATCH v2 2/2] riscv: dts: sophgo: cv180x: Fix internal ephy node name Chen-Yu Yeh
2026-10-03 16:23 ` Hiago De Franco
2026-10-03 16:32 ` [PATCH v2 0/2] riscv: dts: sophgo: Milk-V Duo 256M ethernet support Hiago De Franco
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®