The goal now is to develop a network driver for the Xilinx Zynq. I just finished a network driver (for Kyu) for the Allwinner H5. Most of the difficulties with it involve me learning about the 64 bit ARM architecture (aarch64). That driver by and large was the same code as the Allwinner H3 driver. A big part was learning about the PHY chip and getting my PHY driver to handle gigabit ethernet.
The Zynq will be a 32 bit ARM, which I don't like as well as 64 bit ARM, but it is at least simpler and well understood.
The first issue with the Zynq will be the PHY chip.
I have several choices about which board to use. I do have a Zedboard, but I intend to use one of my reclaimed bitcoin miner boards, either the EBAZ-4205 or the Antminer S9. The S9 supports gigabit ethernet using a Broadcom B50612E PHY chip. The EBAZ is only 10/100 and uses a IC+ IC101GA PHY chip.
My Zedboard has a XC7Z020-1CLG484 and uses a Marvell 88E1116R PHY.
I also have a Zybo with a XC7Z010-CLG400ACX1445 that uses a RTL8211E PHY.
The PHY on the Zedboard is labeled "M-88E1518-NNG4540.5JW".
Odds are I will be able to use generic registers to do everything I need with all these chips. This was the case with the H3/H5 emac driver and the 8211E on the h5.
The Zynq TRM is a 1843 page document. Chapter 16 documents the GEM (Gigabit Ethernet controller) in 55 pages.
I have a copy of the U-boot sources (v2025.10) handy in /Projects/ARM-sources/u-boot. Look at the Makefile to check the version of U-boot you might have. This file looks like what we want:
u-boot/drivers/net/zynq_gem.cI should rebuild U-boot for the Zynq so I have object file breadcrumbs to guide me as I poke around. That will be the topic of the next page.
Tom's software pages / tom@mmto.org