ZYNQ

About this

This document describes the information about Xilinx Zynq U-Boot - like supported boards, ML status and TODO list.

Zynq boards

Xilinx Zynq-7000 All Programmable SoCs enable extensive system level differentiation, integration, and flexibility through hardware, software, and I/O programmability.

  • zc702 (single qspi, gem0, mmc) [1]
  • zc706 (dual parallel qspi, gem0, mmc) [2]
  • zed (single qspi, gem0, mmc) [3]
  • microzed (single qspi, gem0, mmc) [4]
  • zc770
    • zc770-xm010 (single qspi, gem0, mmc)
    • zc770-xm011 (8 or 16 bit nand)
    • zc770-xm012 (nor)
    • zc770-xm013 (dual parallel qspi, gem1)

Building

configure and build for zc702 board:

$ make zynq_zc702_config
$ make

Bootmode

Zynq has a facility to read the bootmode from the slcr bootmode register once user is setting through jumpers on the board - see page no:1546 on [5]

All possible bootmode values are defined in Table 6-2:Boot_Mode MIO Pins on [5].

board_late_init() will read the bootmode values using slcr bootmode register at runtime and assign the modeboot variable to specific bootmode string which is intern used in autoboot.

SLCR bootmode register Bit[3:0] values

#define ZYNQ_BM_NOR          0x02
#define ZYNQ_BM_SD           0x05
#define ZYNQ_BM_JTAG         0x0

“modeboot” variable can assign any of “norboot”, “sdboot” or “jtagboot” bootmode strings at runtime.

Mainline status

  • Added basic board configurations support.
  • Added zynq u-boot bsp code - arch/arm/cpu/armv7/zynq
  • Added zynq boards named - zc70x, zed, microzed, zc770_xm010/xm011/xm012/xm013
  • Added zynq drivers:
    serial:drivers/serial/serial_zynq.c
    net:drivers/net/zynq_gem.c
    mmc:drivers/mmc/zynq_sdhci.c
    spi:drivers/spi/zynq_spi.c
    qspi:drivers/spi/zynq_qspi.c
    i2c:drivers/i2c/zynq_i2c.c
    nand:drivers/mtd/nand/raw/zynq_nand.c
  • Done proper cleanups on board configurations
  • Added basic FDT support for zynq boards
  • d-cache support for zynq_gem.c