[PATCH net-next 0/4] Add DWMAC glue driver for Motorcomm YT6801

Yao Zi
2025-10-14T16:49:29Z

This series adds glue driver for Motorcomm YT6801 PCIe ethernet
controller, which is considered mostly compatible with DWMAC-4 IP by
inspecting the register layout[1]. It integrates a Motorcomm YT8531S PHY
(confirmed by reading PHY ID) and GMII is used to connect the PHY to
MAC[2].

The initialization logic of the MAC is mostly based on previous upstream
effort for the controller[3] and the Deepin-maintained downstream Linux
driver[4] licensed under GPL-2.0 according to its SPDX headers. However,
this series is a completely re-write of the previous patch series,
utilizing the existing DWMAC4 driver and introducing a glue driver only.

This series only aims to add basic networking functions for the
controller, features like WoL, RSS and LED control are omitted for now.
Testing is done on Loongson 3A5000 machine. Through a local GbE switch,
it reaches 871Mbps (TX)/942Mbps (RX) on average,

$ iperf3 -c 172.16.70.230
Connecting to host 172.16.70.230, port 5201
[ 5] local 172.16.70.12 port 48590 connected to 172.16.70.230 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 113 MBytes 950 Mbits/sec 0 376 KBytes
[ 5] 1.00-2.00 sec 113 MBytes 946 Mbits/sec 0 376 KBytes
[ 5] 2.00-3.00 sec 112 MBytes 941 Mbits/sec 0 376 KBytes
[ 5] 3.00-4.00 sec 112 MBytes 939 Mbits/sec 0 376 KBytes
[ 5] 4.00-5.00 sec 112 MBytes 939 Mbits/sec 0 376 KBytes
[ 5] 5.00-6.00 sec 113 MBytes 946 Mbits/sec 0 399 KBytes
[ 5] 6.00-7.00 sec 112 MBytes 940 Mbits/sec 0 399 KBytes
[ 5] 7.00-8.00 sec 112 MBytes 940 Mbits/sec 0 399 KBytes
[ 5] 8.00-9.00 sec 112 MBytes 938 Mbits/sec 0 399 KBytes
[ 5] 9.00-10.00 sec 112 MBytes 937 Mbits/sec 0 399 KBytes

Connecting to host 172.16.70.12, port 5201
[ 5] local 172.16.70.230 port 50466 connected to 172.16.70.12 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 106 MBytes 884 Mbits/sec 0 486 KBytes
[ 5] 1.00-2.00 sec 104 MBytes 870 Mbits/sec 0 486 KBytes
[ 5] 2.00-3.00 sec 104 MBytes 868 Mbits/sec 0 486 KBytes
[ 5] 3.00-4.00 sec 104 MBytes 869 Mbits/sec 0 486 KBytes
[ 5] 4.00-5.00 sec 104 MBytes 873 Mbits/sec 0 486 KBytes
[ 5] 5.00-6.00 sec 104 MBytes 871 Mbits/sec 0 486 KBytes
[ 5] 6.00-7.00 sec 103 MBytes 867 Mbits/sec 0 512 KBytes
[ 5] 7.00-8.00 sec 104 MBytes 872 Mbits/sec 0 512 KBytes
[ 5] 8.00-9.00 sec 104 MBytes 873 Mbits/sec 0 512 KBytes
[ 5] 9.00-10.00 sec 104 MBytes 874 Mbits/sec 0 512 KBytes

Thanks for your time and review.

[1]: https://lore.kernel.org/all/Z_T6vv013jraCzSD@shell.armlinux.org.uk/
[2]: https://lore.kernel.org/all/a48d76ac-db08-46d5-9528-f046a7b541dc@motor-comm.com/
[3]: https://lore.kernel.org/all/a48d76ac-db08-46d5-9528-f046a7b541dc@motor-comm.com/
[4]: https://github.com/deepin-community/kernel/tree/dc61248a0e21/drivers/net/ethernet/motorcomm/yt6801

Yao Zi (4):
PCI: Add vendor ID for Motorcomm Electronic Technology
net: phy: motorcomm: Support YT8531S PHY in YT6801 Ethernet controller
net: stmmac: Add glue driver for Motorcomm YT6801 ethernet controller
MAINTAINERS: Assign myself as maintainer of Motorcomm DWMAC glue
driver

MAINTAINERS | 6 +
drivers/net/ethernet/stmicro/stmmac/Kconfig | 9 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
.../ethernet/stmicro/stmmac/dwmac-motorcomm.c | 388 ++++++++++++++++++
drivers/net/phy/motorcomm.c | 4 +
include/linux/pci_ids.h | 2 +
6 files changed, 410 insertions(+)
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-motorcomm.c

--
2.50.1