]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
riscv: dts: sophgo: cv180x: fix USB dwc2 FIFO sizes
authorAnton D. Stavinskii <stavinsky@gmail.com>
Wed, 26 Nov 2025 17:21:16 +0000 (21:21 +0400)
committerInochi Amaoto <inochiama@gmail.com>
Wed, 24 Dec 2025 06:39:40 +0000 (14:39 +0800)
I've tested the current dwc2 FIFO configuration and found that USB
device mode breaks in ECM mode when transmitting frames larger than
128 bytes. For example, large ICMP packets or iperf3 traffic cause
the USB link to hang and eventually disconnect without any messages in
dmesg.

After switching to more conservative FIFO sizes, ECM becomes stable
and no longer drops the connection. iperf3 now shows ~130 Mbit/s RX
and ~100 Mbit/s TX on SG2002 (MilkV Duo 256M).

Fix the FIFO sizes accordingly.

Signed-off-by: Anton D. Stavinskii <stavinsky@gmail.com>
Reviewed-by: Inochi Amaoto <inochiama@gmail.com>
Fixes: e307248a3c2d ("riscv: dts: sophgo: Add USB support for cv18xx")
Link: https://lore.kernel.org/r/20251126172115.1894190-2-stavinsky@gmail.com
Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
Signed-off-by: Chen Wang <wangchen20@iscas.ac.cn>
arch/riscv/boot/dts/sophgo/cv180x.dtsi

index 1b2b1969a6484e9c3b196eae7384a195543944cd..06b0ce5a2db7af53de5e06649f3cc55c54cb72ba 100644 (file)
                        clocks = <&clk CLK_AXI4_USB>, <&clk CLK_APB_USB>;
                        clock-names = "otg", "utmi";
                        g-np-tx-fifo-size = <32>;
-                       g-rx-fifo-size = <536>;
-                       g-tx-fifo-size = <768 512 512 384 128 128>;
+                       g-rx-fifo-size = <1536>;
+                       g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
                        interrupts = <SOC_PERIPHERAL_IRQ(14) IRQ_TYPE_LEVEL_HIGH>;
                        phys = <&usbphy>;
                        phy-names = "usb2-phy";