January 10, 2026

Kyu - Upcoming network drivers

For the H5 chip, I expect the existing driver for the H3 to be entirely portable.
In other words, this should be easy, once I have the cache flush/invalidate routines.

Allwinner H5

While the bulk of the code for the H3 will be portable, there is one imporant difference. Both the H3 and the H5 have a 10/100 Phy built into the chip. My H5 boards support 1000 Mbit (Gig) ethernet via an external Phy. The Phy used is the well known RTL8211E chip.
The U-boot driver for this is drivers/net/phy/realtek.c

However, the ethernet code for the H5 will need to select the external Phy rather than the internal phy, and a driver will be needed for the RTL8211E. My little NanoPi Neo2 boards also use the external RTL8211E Phy.

Xilinx Zynq

Here we have drivers/net/zynq_gem.c, which is 955 lines of code.

See my notes at:

My Antminer boards use the Broadcomm B50612E chip as a gigabit Phy. I have a 161 page datasheet for this. U-boot driver at drivers/net/phy/broadcom.c

My EBAZ boards use a IP101GA chip as the Phy transceiver. This is a 10/100 chip made by "IC plus". I have a 65 page datasheet for this.
The linux driver is linux/drivers/net/phy/icplus.c at master
You may find the U-boot driver for this at drivers/net/phy/icplus.c
(Running "locate icplus.c" on my system finds lots of things.)

Rockchip

Here we have the RK3328 and the RK3399. Is it possible that these will both use the same network driver?

U-boot has drivers/net/gmac_rockchip.c. This looks entirely like a Phy layer driver.

U-boot seems to use designware.c for the RK3328. Who would have guessed?
Designware (Synopsys) is notorious for not publishing tech manuals for their USB interfaces, and nobody should be surprised that they are equally secretive about this ethernet interface. This is too bad and does not win any friends for Synopsys.

Building U-boot

To figure out what files were used, I went ahead are rebuilt U-boot for the RK3328. I have notes on doing this here: The process is:
cd /Projects/RK3328/sources/u-boot
export BL31="/Projects/OrangePi/r1plus/sources/arm-trusted-firmware/build/rk3328/debug/bl31/bl31.elf"
export CROSS_COMPILE=aarch64-linux-gnu-
export LOCALVERSION="trebisky"
cd u-boot
make clean
make orangepi-r1-plus-lts-rk3328_defconfig
make
Interesting parts are:
  CC      drivers/net/phy/phy.o
  CC      drivers/net/phy/motorcomm.o
  CC      drivers/net/phy/realtek.o
  CC      drivers/net/eth-phy-uclass.o
  CC      drivers/net/designware.o
  CC      drivers/net/gmac_rockchip.o
Note that U-boot has a driver for the "motorcomm" YT8531 chip that OrangePi used on the LTS version of the board to pinch a few Yen.


Have any comments? Questions? Drop me a line!

Tom's electronics pages / tom@mmto.org