This page is intended to give more details on the Xilinx drivers for Linux, such as testing, how to use the drivers, known issues, etc. The drivers included in the kernel tree are intended to run on ARM (Zynq,
Zynq Ultrascale+ MPSoC) and MicroBlaze Linux.

Driver Information

There are a number of drivers in the kernel tree due to history and they may work, but the following list of drivers are currently what's tested and users are encouraged to use these rather than others. Any other drivers, not in the mainline and only in the Xilinx tree, may be old and obsolete such that they could be removed at any time.

Component
Platform/IP Core
Link
In Mainline
Location
Comment
Analog to Digital Converter
Zynq, axi_xadc, xadc_wiz
XADC Driver
Yes
drivers/iio/adc/xilinx-xadc

AXI Traffic generator
axi_trafficgen
TrafficgenDriver
No
drivers/misc/xilinx_trafgen.c

CAN Controller
Zynq
axi_can
Zynq Ultrascale+ MPSoC
LinuxCAN Driver
Yes
drivers/net/can/xilinx_can.c
Alternative CAN4Linux project: can4linux
CANFD Controller
axi_canfd
LinuxCAN Driver
No
drivers/net/can/xilinx_can.c

Common Clock Framework
Zynq

Yes
drivers/clk/zynq/

cpufreq
Zynq
Zynq PM
Yes
drivers/cpufreq/cpufreq-dt.c

cpuidle
Zynq
Zynq PM
Yes
drivers/cpuidle/cpuidle-zynq.c

Devcfg
Zynq
PL Programming
No
drivers/char/xilinx_devcfg.c

FPGA Manager
Zynq Ultrascale+ MPSoC
PL Programming
No
drivers/fpga/zynqmp-fpga.c

DMA Controller
Zynq (PL330)

Yes
drivers/dma/pl330.c

DMA Controller
Platform: Zynq/Zynq Ultrascale+ MPSoc/Microblaze

IP: axi_dma
DMA drivers
Yes
drivers/dma/xilinx/xilinx_dma.c
AXI DMA driver is mainlined and is availble in the 4.8 kernel
DMA Controller
Platform: Zynq/Zynq Ultrascale+ MPSoc/Microblaze

IP: axi_cdma
DMA drivers
Yes
drivers/dma/xilinx/xilinx_dma.c
AXI CDMA driver is mainlined and is availble in the 4.8 kernel
DMA Controller
Platform: Zynq/Zynq Ultrascale+ MPSOC/Microblase

IP: axi_vdma
DMA drivers
Yes
drivers/dma/xilinx/xilinx_dma.c
AXI VDMA driver is mainlined and is available in kernel v3.16.
DMA Controller
Platform: Zynq Ultrascale+ MPSOC

IP: ZynqMP DMA
ZynqMP DMA
Yes
drivers/dma/xilinx/zynqmp_dma.c
ZYNQMP DMA driver is mainlined and is availble in the 4.8
kernel
DRM KMS
Zynq
Zynq and
Zynq Ultrascale+ MPSoC
DRM KMS Driver
No
drivers/gpu/drm/xilinx/*
Including subdevice drivers
- On Screen Display
- Chroma Resampler
- Video Timing Controller
- RGB to YUV converter
- DisplayPort: Soft IP and ZynqMP DisplayPort subsystem
EDAC
Zynq and
Zynq Ultrascale+ MPSoC
EDAC Driver
Yes
No
drivers/edac/synopsys_edac.c

Ethernet MAC
Platform: Zynq
IP Core: GEM
Emacps Driver
No
drivers/net/ethernet/xilinx/xilinx_emacps.c
xilinx_emacps.c is DEPRECATED
Ethernet MAC
Platform: Zynq, Zynq Ultrascale+ MPSoC
IP Core: GEM
Macb Driver
Yes
drivers/net/ethernet/cadence/macb.c

Ethernet MAC
Platform: Zynq/Zynq Ultrascale+ MPSOC/Microblaze

IP: axi_ethernet, legacy 10G MAC
Axi Ethernet Driver
Yes
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c
drivers/net/ethernet/xilinx/xilinx_axienet.h
Uses AXI DMA
Ethernetlite
Platform: Zynq/Zynq Ultrascale+ MPSOC/Microblaze

IP: axi_ethernetlite
EmacLite Driver
Yes
drivers/net/ethernet/xilinx/xilinx_emaclite.c

GPIO
Zynq and
Zynq Ultrascale+ MPSoC
GPIO Driver
Yes
drivers/gpio/gpio-zynq.c

GPIO
axi_gpio
AXI GPIO Driver
Yes
drivers/gpio/gpio-xilinx.c

I2C Controller
Zynq and
Zynq Ultrascale+ MPSoC
Cadence I2C Driver
Yes
drivers/i2c/busses/i2c-cadence.c

I2C Controller
axi_iic
I2C Driver
Yes
drivers/i2c/busses/i2c-xiic.c

Interrupt Controller
Zynq and
Zynq Ultrascale+ MPSoC
gic
Yes
drivers/irqchip/irq-gic.c

Interrupt Controller
MicroBlaze (axi_intc)
INTC
Yes
arch/microblaze/kernel/intc.c

L2 Cache Controller (PL310)
Zynq

Yes
arch/arm/mm/cache-l2x0.c

MALI
Zynq Ultrascale+ MPSoC
Xilinx MALI driver
No
drivers/staging/mali/*

NAND
Zynq Ultrascale+ MPSoC
Nand
No
drivers/mtd/nand/arasan_nfc.c

PCIe
axi_pcie (Zynq)
PCIe Root Port Driver
Yes
No
No
drivers/pci/host/pcie-xilinx.c
arch/arm/mach-zynq/xaxipcie.c
arch/arm/mach-zynq/xaxipcie-msi.c
Zynq AXI PCIe driver is mainlined and is available in kernel v3.18.
PCIe
Zynq Ultrascale+ MPSoC
ZynqMP Linux PCIe Root Port Driver

drivers/pci/host/pci-xilinx-nwl.c

PCIe
axi_pcie (MicroBlaze)

No
drivers/pci/host/pcie-xilinx.c

Pinctrl
Zynq

Yes
drivers/pinctrl/pinctrl-zynq.c

QSPI Flash Controller
Zynq
Zynq QSPI Driver
No
drivers/spi/spi-zynq-qspi.c

QSPI
Zynq Ultrascale+ MPSoC
ZynqMP QSPI

drivers/spi/spi-zynqmp-qspi.c

RTC
Zynq Ultrascale+ MPSoC
Zynqmp RTC

drivers/rtc/rtc-zynqmp.c

SATA
Zynq Ultrascale+ MPSoC
SATA

drivers/ata/ahci_ceva.c

SD Controller
Zynq and
Zynq Ultrascale+ MPSoC
SD controller
Yes
drivers/mmc/host/sdhci-of-arasan.c

SDIO WiFi

SDIO WiFi Driver
Yes
drivers/net/wireless/ath/ath6kl/sdio.c

SMC Controller
Zynq
SMC & NAND driver
No
drivers/memory/pl353-smc.c
drivers/mtd/nand/pl353_nand.c
PL353 SMC controller driver
PL353 SMC Nand Controller driver
SPI Controller
Zynq and
Zynq Ultrascale+ MPSoC
Zynq SPI Driver
Yes
drivers/spi/spi-cadence.c

SPI/QSPI Controller
axi_spi/axi_quad_spi
SPI Driver
Yes
drivers/spi/spi-xilinx.c

System ACE
axi_sysace
System ACE Driver
Yes
drivers/block/xsysace.c

TFT
axi_tft
TFT Driver
Yes
drivers/video/fbdev/xilinxfb.c

Timer
Zynq
Zynq
Zynq, Zynq Ultrascale+ MPSoC

Yes
Yes
Yes
drivers/clocksource/arm_global_timer.c
arch/arm/kernel/smp_twd.c
drivers/clocksource/cadence_ttc.c
ARM Global Timer
ARM Local Timers
Cadence Triple Timer Counter
Timer
axi_timer
AXI timer
Yes
arch/microblaze/kernel/timer.c
Timer Counter
UART
Zynq and
Zynq Ultrascale+ MPSoC
PSUART
Yes
drivers/tty/serial/xilinx_uartps.c

UART
axi_uartlite
Uartlite Driver
Yes
drivers/tty/serial/uartlite.c

UART
axi_uart16550

Yes

Not Xilinx specific driver, but in mainline, works with Xilinx IP.
USB (host)
Zynq
USB Host Driver
No
No
Yes
drivers/usb/host/zynq-dr-of.c
drivers/usb/host/ehci-zynq.c
drivers/usb/chipidea/
Zynq PS USB Dual role driver
Zynq PS ehci host controller driver
USB (device)
Zynq
USB Gadget driver
No
Yes

Yes
drivers/usb/gadget/zynq_udc.c
drivers/usb/chipidea/udc.c

drivers/usb/chipidea/ci_hdrc_usb2.c
Zynq PS usb gadget controller driver
USB (OTG)
Zynq
USB OTG Driver
Yes
drivers/usb/phy/phy-ulpi.c
drivers/usb/chipidea/
Zynq PS OTG driver
USB (device)
axi_usb2_device
AXI USB gadget driver
Yes
drivers/usb/gadget/udc/udc-xilinx.c
AXI USB device soft IP linux driver.
USB
Zynq Ultrascale+ MPSoC
zynqMP USB Driver

drivers/usb/dwc3

V4L2

VIPP
CFA
CRESAMPLE
CSIRX
REMAPPER
RGB2YUV
SCALER
SWITCH
TPG (including VTC)
Yes
No
No
No
No
No
No
Yes
drivers/media/platform/xilinx/xilinx-vipp.c + xilinx-vip.c + xilinx-dma.c
drivers/media/platform/xilinx/xilinx-cfa.c
drivers/media/platform/xilinx/xilinx-cresample.c
drivers/media/platform/xilinx/xilinx-csi2rxss.c
drivers/media/platform/xilinx/xilinx-remapper.c
drivers/media/platform/xilinx/xilinx-rgb2yuv.c
drivers/media/platform/xilinx/xilinx-scaler.c
drivers/media/platform/xilinx/xilinx-switch.c
drivers/media/platform/xilinx/xilinx-tpg.c + xilinx-vtc.c

Watchdog
Zynq and
Zynq Ultrascale+ MPSoC
Cadence WDT Driver
Yes
drivers/watchdog/cadence_wdt.c

Watchdog
axi_timebase_wdt
Axi Watchdog
Yes
drivers/watchdog/of_xilinx_wdt.c

APM
axi Performance monitor
APM
No
drivers/uio/uio_xilinx_apm.c

SERDES/SIOU
ZynqMP
SERDES
No
drivers/phy/phy-zynqmp.c
serdes/siou linux device driver
Clock Framework Zynqmp
Zynq Ultrascale+ MPSoC
ccf
No
drivers/clk/zynqmp

GMII2RGMII convertor
<>
GMII2RGMII convertor
Yes
drivers/net/phy/xilinx_gmii2rgmii.c


Related Links