Hardware:
- Carrier: ZedBoard (Zynq-7000)
- FMC card: AD4857FMCZ evaluation boar
Goal:
I want to build a Kuiper Linux SD card from scratch (not clone the existing one) so I can understand the full build process and be able to make modifications to the HDL and recompile. Specifically I need to produce:
- `BOOT.bin` (FSBL + bitstream + U-Boot)
- `uImage` (Linux kernel)
- `devicetree.dtb`
- rootfs (Kuiper)
What I have working:
The SD card that came with the AD4857FMCZ eval kit boots and works correctly on the ZedBoard. So the hardware combination is confirmed good.
Problem 1: Too many ad485x/ad4858 branches — which one is the right kernel source?
Looking at the `analogdevicesinc/linux` GitHub repo, I can see the following branches all related to the AD485x/AD4858:
- `staging/ad485x_toni`
- `staging/ad485x`
- `staging/linus_ad485x`
- `staging/ad485x_clean`
- `staging/ad4858_rebased`
- `staging/ad4858`
- `dev/ad4858`
I understand that `staging/` branches are pre-upstream review branches and `dev/` branches are active development — i.e., neither is a production-ready Kuiper release. But I can't tell which of these is the "source of truth" that eventually feeds into a release branch, or which is the one ADI engineers are actively maintaining for the ZedBoard + AD485x use case.
I found `arch/arm/boot/dts/zynq-zed-adv7511-ad4858.dts` and `drivers/iio/adc/ad4858.c` on some of these branches, which is exactly what I need.
Question 1a: Which of these branches is the canonical one to use as the kernel source for a ZedBoard + AD4857FMCZ build?
Question 1b: Is the plan to backport `ad4858.c` (and the SPI Engine offload changes it depends on) into a future ADI release branch (e.g. a future `2026_R2`)? Or should I be cherry-picking from a specific staging branch onto `2026_R1` right now?
Problem 2: The Zynq kernel build documentation does not list a ZedBoard + AD485x DTS
The documentation at analogdevicesinc.github.io/.../zynq.html lists many ZedBoard DTS combinations (ad9361, ad9467, cn0363, etc.) but does not include one for the AD485x/AD4857/AD4858. So even if the DTS file exists in a branch, it is not clear which release branch it belongs to or how to find the corresponding HDL release.
Question 2: Is there documentation or a wiki page for the AD4857FMCZ + ZedBoard combination that maps:
- the correct Linux kernel branch/tag
- the corresponding HDL branch/tag
- the Vivado version required
- the Kuiper image version
Problem 3: Driver appears in upstream (v6.19-rc6) but that kernel is unusable for ZedBoard
I can see that `ad4851.c` has been accepted into the upstream kernel (visible on the `v6.19-rc6` tag). However, a vanilla upstream kernel has no Xilinx Zynq platform support, no SPI Engine IP driver, and no AXI DMA infrastructure that the AD485x HDL project depends on. So using the upstream tag directly is not viable without enormous porting effort.
What I've tried / What I understand so far:
- I know the SD card BOOT partition needs `BOOT.bin`, `uImage`, `devicetree.dtb` and that these must all be built from matched release versions.
- I know the HDL repo has the `ad485x_fmcz` project for ZedBoard under `projects/ad485x_fmcz/zed/`.
- I know the `configure-setup.sh` script on Kuiper handles copying the right boot files for a given eval board + carrier combination.
- I understand that mixing a `staging/` kernel with a release rootfs risks version mismatches in kernel modules, libiio, and device tree bindings.
What I'm asking for:
A clear statement of the recommended, supported path for building a ZedBoard + AD4857FMCZ system from source today. Specifically:
1. Which Linux kernel branch to clone and build from
2. Which HDL branch/tag to use, and which Vivado version
3. Whether the ad4858 driver + ZedBoard DTS are already in a release branch, or need to be cherry-picked from a staging branch
4. If cherry-picking is needed, which staging branch and which commits (or files) are the right ones to pick
Thank you in advance.