.../devicetree/bindings/net/spacemit,k1-emac.yaml | 81 + arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 46 + arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 + arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 48 + arch/riscv/boot/dts/spacemit/k1.dtsi | 22 + drivers/net/ethernet/Kconfig | 1 + drivers/net/ethernet/Makefile | 1 + drivers/net/ethernet/spacemit/Kconfig | 29 + drivers/net/ethernet/spacemit/Makefile | 6 + drivers/net/ethernet/spacemit/k1_emac.c | 1884 ++++++++++++++++++++ drivers/net/ethernet/spacemit/k1_emac.h | 420 +++++ 11 files changed, 2584 insertions(+)
SpacemiT K1 has two gigabit Ethernet MACs with RGMII and RMII support. Add a driver for them, as well as the supporting devicetree and bindings updates. Tested on BananaPi BPI-F3 and Milk-V Jupiter. I would like to note that even though some bit field names superficially resemble that of DesignWare MAC, all other differences point to it in fact being a custom design. Based on SpacemiT drivers [1]. This series depends on reset controller support [2] and DMA buses [3] for K1. There are some minor conflicts resulting from both touching k1.dtsi, but it should just both be adding nodes. These patches can also be pulled from: https://github.com/dramforever/linux/tree/k1/ethernet/v3 [1]: https://github.com/spacemit-com/linux-k1x [2]: https://lore.kernel.org/all/20250613011139.1201702-1-elder@riscstar.com [3]: https://lore.kernel.org/all/20250623-k1-dma-buses-rfc-wip-v1-0-c0144082061f@iscas.ac.cn --- Changes in v3: - Refactored and simplified emac_tx_mem_map - Addressed other minor v2 review comments - Removed what was patch 3 in v2, depend on DMA buses instead - DT nodes in alphabetical order where appropriate - Link to v2: https://lore.kernel.org/r/20250618-net-k1-emac-v2-0-94f5f07227a8@iscas.ac.cn Changes in v2: - dts: Put eth0 and eth1 nodes under a bus with dma-ranges - dts: Added Milk-V Jupiter - Fix typo in emac_init_hw() that broke the driver (Oops!) - Reformatted line lengths to under 80 - Addressed other v1 review comments - Link to v1: https://lore.kernel.org/r/20250613-net-k1-emac-v1-0-cc6f9e510667@iscas.ac.cn --- Vivian Wang (5): dt-bindings: net: Add support for SpacemiT K1 net: spacemit: Add K1 Ethernet MAC riscv: dts: spacemit: Add Ethernet support for K1 riscv: dts: spacemit: Add Ethernet support for BPI-F3 riscv: dts: spacemit: Add Ethernet support for Jupiter .../devicetree/bindings/net/spacemit,k1-emac.yaml | 81 + arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 46 + arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 + arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 48 + arch/riscv/boot/dts/spacemit/k1.dtsi | 22 + drivers/net/ethernet/Kconfig | 1 + drivers/net/ethernet/Makefile | 1 + drivers/net/ethernet/spacemit/Kconfig | 29 + drivers/net/ethernet/spacemit/Makefile | 6 + drivers/net/ethernet/spacemit/k1_emac.c | 1884 ++++++++++++++++++++ drivers/net/ethernet/spacemit/k1_emac.h | 420 +++++ 11 files changed, 2584 insertions(+) --- base-commit: d9946fe286439c2aeaa7953b8c316efe5b83d515 change-id: 20250606-net-k1-emac-3e181508ea64 prerequisite-message-id: <20250613011139.1201702-1-elder@riscstar.com> prerequisite-patch-id: 2c73c63bef3640e63243ddcf3c07b108d45f6816 prerequisite-patch-id: 0faba75db33c96a588e722c4f2b3862c4cbdaeae prerequisite-patch-id: 5db8688ef86188ec091145fae9e14b2211cd2b8c prerequisite-patch-id: e0fe84381637dc888d996a79ea717ff0e3441bd1 prerequisite-patch-id: 2fc0ef1c2fcda92ad83400da5aadaf194fe78627 prerequisite-patch-id: bfa54447803e5642059c386e2bd96297e691d0bf prerequisite-message-id: <20250523-22-k1-sdhci-v1-1-6e0adddf7494@gentoo.org> prerequisite-patch-id: 53fc23b06e26ab0ebb2c52ee09f4b2cffab889e2 prerequisite-message-id: <20250623-k1-dma-buses-rfc-wip-v1-0-c0144082061f@iscas.ac.cn> prerequisite-patch-id: 7f04dcf6f82a9a9fa3a8a78ae4992571f85eb6ca prerequisite-patch-id: 291c9bcd2ce688e08a8ab57c6d274a57cac6b33c prerequisite-patch-id: 957d7285e8d2a7698beb0c25cb0f6ea733246af0 Best regards, -- Vivian "dramforever" Wang
On Wed, Jul 02, 2025 at 02:01:39PM +0800, Vivian Wang wrote: > SpacemiT K1 has two gigabit Ethernet MACs with RGMII and RMII support. > Add a driver for them, as well as the supporting devicetree and bindings > updates. > > Tested on BananaPi BPI-F3 and Milk-V Jupiter. > > I would like to note that even though some bit field names superficially > resemble that of DesignWare MAC, all other differences point to it in > fact being a custom design. > > Based on SpacemiT drivers [1]. > > This series depends on reset controller support [2] and DMA buses [3] > for K1. There are some minor conflicts resulting from both touching > k1.dtsi, but it should just both be adding nodes. > > These patches can also be pulled from: > > https://github.com/dramforever/linux/tree/k1/ethernet/v3 > > [1]: https://github.com/spacemit-com/linux-k1x > [2]: https://lore.kernel.org/all/20250613011139.1201702-1-elder@riscstar.com > [3]: https://lore.kernel.org/all/20250623-k1-dma-buses-rfc-wip-v1-0-c0144082061f@iscas.ac.cn > > --- > Changes in v3: > - Refactored and simplified emac_tx_mem_map > - Addressed other minor v2 review comments > - Removed what was patch 3 in v2, depend on DMA buses instead > - DT nodes in alphabetical order where appropriate > - Link to v2: https://lore.kernel.org/r/20250618-net-k1-emac-v2-0-94f5f07227a8@iscas.ac.cn > > Changes in v2: > - dts: Put eth0 and eth1 nodes under a bus with dma-ranges > - dts: Added Milk-V Jupiter > - Fix typo in emac_init_hw() that broke the driver (Oops!) > - Reformatted line lengths to under 80 > - Addressed other v1 review comments > - Link to v1: https://lore.kernel.org/r/20250613-net-k1-emac-v1-0-cc6f9e510667@iscas.ac.cn > > --- > Vivian Wang (5): > dt-bindings: net: Add support for SpacemiT K1 > net: spacemit: Add K1 Ethernet MAC > riscv: dts: spacemit: Add Ethernet support for K1 > riscv: dts: spacemit: Add Ethernet support for BPI-F3 > riscv: dts: spacemit: Add Ethernet support for Jupiter I'm unsure on the plan for merging this. But it seems to me that the first two patches ought to go though net-next. But in order for patches to proceed through net-next the entire series ought to apply on that tree - so CI can run. I'm not sure on the way forward. But perhaps splitting the series in two: the first two patches for net-next; and, the riscv patches targeted elsewhere makes sense? </2c>
Hi Simon, On 7/3/25 15:23, Simon Horman wrote: > On Wed, Jul 02, 2025 at 02:01:39PM +0800, Vivian Wang wrote: >> SpacemiT K1 has two gigabit Ethernet MACs with RGMII and RMII support. >> Add a driver for them, as well as the supporting devicetree and bindings >> updates. >> >> Tested on BananaPi BPI-F3 and Milk-V Jupiter. >> >> I would like to note that even though some bit field names superficially >> resemble that of DesignWare MAC, all other differences point to it in >> fact being a custom design. >> >> Based on SpacemiT drivers [1]. >> >> This series depends on reset controller support [2] and DMA buses [3] >> for K1. There are some minor conflicts resulting from both touching >> k1.dtsi, but it should just both be adding nodes. >> >> These patches can also be pulled from: >> >> https://github.com/dramforever/linux/tree/k1/ethernet/v3 >> >> [1]: https://github.com/spacemit-com/linux-k1x >> [2]: https://lore.kernel.org/all/20250613011139.1201702-1-elder@riscstar.com >> [3]: https://lore.kernel.org/all/20250623-k1-dma-buses-rfc-wip-v1-0-c0144082061f@iscas.ac.cn >> >> --- >> Changes in v3: >> - Refactored and simplified emac_tx_mem_map >> - Addressed other minor v2 review comments >> - Removed what was patch 3 in v2, depend on DMA buses instead >> - DT nodes in alphabetical order where appropriate >> - Link to v2: https://lore.kernel.org/r/20250618-net-k1-emac-v2-0-94f5f07227a8@iscas.ac.cn >> >> Changes in v2: >> - dts: Put eth0 and eth1 nodes under a bus with dma-ranges >> - dts: Added Milk-V Jupiter >> - Fix typo in emac_init_hw() that broke the driver (Oops!) >> - Reformatted line lengths to under 80 >> - Addressed other v1 review comments >> - Link to v1: https://lore.kernel.org/r/20250613-net-k1-emac-v1-0-cc6f9e510667@iscas.ac.cn >> >> --- >> Vivian Wang (5): >> dt-bindings: net: Add support for SpacemiT K1 >> net: spacemit: Add K1 Ethernet MAC >> riscv: dts: spacemit: Add Ethernet support for K1 >> riscv: dts: spacemit: Add Ethernet support for BPI-F3 >> riscv: dts: spacemit: Add Ethernet support for Jupiter > I'm unsure on the plan for merging this. But it seems to me that the first > two patches ought to go though net-next. But in order for patches to > proceed through net-next the entire series ought to apply on that tree - so > CI can run. > > I'm not sure on the way forward. But perhaps splitting the series in two: > the first two patches for net-next; and, the riscv patches targeted elsewhere > makes sense? Oops. I had not considered this originally, since v1 only depended on the reset stuff, which seemed like it was going to be taken up at v6.16-rc1. That did not happen, and this unfortunately also gained a dependency on DMA buses. So: I will send a v4 fixing suggestions here but with only patch 1 and 2, i.e. bindings and driver. The DTS changes will go through the SpacemiT tree. Thanks for the suggestion. Regards, Vivian "dramforever" Wang > </2c>
© 2016 - 2025 Red Hat, Inc.