Linux Drivers
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 the ARM (Zynq, Ultrascale+ MPSoC, Versal) 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 that they could be removed at any time.Component | Platform/IP Core | Link | In Mainline | Location | Comment |
Analog to Digital Converter | Zynq-7000 SoC, axi_xadc, xadc_wiz | XADC Driver | Yes | drivers/iio/adc/xilinx-xadc-core.c | |
System Monitor | Ultrascale+ MPSoC | AMS | No | drivers/iio/adc/xilinx-ams.c | |
AXI Traffic generator | axi_trafficgen | TRAF | No | drivers/misc/xilinx_trafgen.c | |
CAN Controller | Zynq-7000 SoC , axi_can 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-7000 SoC | Yes | drivers/clk/zynq/ | ||
cpufreq | Zynq-7000 SoC and Ultrascale+ MPSoC | Cpufreq | Yes | drivers/cpufreq/cpufreq-dt.c | |
cpuidle | Zynq-7000 SoC and Ultrascale+ MPSoC | cpuidle | Yes | drivers/cpuidle/cpuidle-zynq.c | |
Devcfg | Zynq-7000 SoC | PL Programming | No | drivers/char/xilinx_devcfg.c | xilinx_devcfg.c driver got deprecated in 2018.1 release. So this driver is not part of mainline tree. |
FPGA Manager | Ultrascale+ MPSoC | PL Programming | Yes | drivers/fpga/zynqmp-fpga.c | |
FPGA Manager | Zynq-7000 SoC | PL Programming | Yes | drivers/fpga/zynq-fpga.c | |
FPGA Manager | Versal | PL Programming | No | drivers/fpga/versal.c | |
DMA Controller | Zynq-7000 SoC (PL330) | N/A | Yes | drivers/dma/pl330.c | PL330 driver is owned/maintained by linux open source community. |
DMA Controller | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze IP: axi_dma | DMA drivers | Yes | drivers/dma/xilinx/xilinx_dma.c | |
DMA Controller | Platform:Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze | DMA drivers | Yes | drivers/dma/xilinx/xilinx_dma.c | |
DMA Controller | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze IP: axi_vdma | DMA drivers | Yes | drivers/dma/xilinx/xilinx_dma.c | |
DMA Controller | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze IP: axi_mcdma | DMA drivers | Yes | drivers/dma/xilinx/xilinx_dma.c | |
DMA Controller | Platform: Zynq Ultrascale+ MPSoC, Versal IP: ZynqMP DMA | ZynqMP DMA | Yes | drivers/dma/xilinx/zynqmp_dma.c | |
DMA Controller | Platform: Zynq Ultrascale+ MPSoC IP: Video Framebuffer Write IP: Video Framebuffer Read | Video Framebuffer Write Video Framebuffer Read | No | drivers/dma/xilinx/xilinx_frmbuf.c | |
DRM KMS | Ultrascale+ MPSoC | DRM KMS Driver | Yes | drivers/gpu/drm/xilinx/* | Including subdevice drivers -DP Tx Subsystem |
Video Mixer driver | No | drivers/gpu/drm/xlnx/xlnx_mixer.c | |||
Video SDI-TX driver | No | drivers/gpu/drm/xlnx/xlnx_sdi.c | |||
MIPI DSI2-TX driver | No | drivers/gpu/drm/xlnx/xlnx_dsi.c | |||
HDMI Tx driver | No | hdmi-modules/hdmi/xilinx_drm_hdmi.c | |||
DP Tx Subsystem driver | No | drivers/gpu/drm/xlnx/xlnx_dptx.c | |||
DRM VPSS Scaler driver | No | drivers/gpu/drm/xlnx/xlnx_scaler.c | |||
EDAC | Zynq-7000 SoC and Ultrascale+ MPSoC Zynq Ultrascale+ MPSoC OCM | EDAC Driver ZynqMP OCM EDAC | Yes No No | drivers/edac/synopsys_edac.c drivers/edac/zynqmp_ocm_edac.c | |
Ethernet MAC | Platform: Zynq, Zynq Ultrascale+ MPSoC, Versal IP Core: GEM | Macb Driver | Yes | drivers/net/ethernet/cadence/macb.c | |
Ethernet MAC | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC, Versal and Microblaze IP: axi_ethernet, legacy 10G MAC,10G/25G and USXGMII Ethernet Subsystem. | Axi Ethernet Driver | Yes | drivers/net/ethernet/xilinx/xilinx_axienet_main.c | Uses AXI DMA and AXI MCDMA |
Ethernetlite | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC and Microblaze IP: axi_ethernetlite | EmacLite Driver | Yes | drivers/net/ethernet/xilinx/xilinx_emaclite.c | |
GPIO | Zynq-7000 SoC, Ultrascale+ MPSoC, Versal | GPIO Driver | Yes | drivers/gpio/gpio-zynq.c | |
GPIO | axi_gpio | AXI GPIO Driver | Yes | drivers/gpio/gpio-xilinx.c | |
HDMI Clocks | SI5324 Clock | CCF SI5324 Driver | No | drivers/clk/clk-si5324.c | |
HDMI Clocks | Multiplier/Jitter Attenuator SNx5DP159 device | Misc DP159 Driver | No No | hdmi-modules/misc/dp159.c | |
HDMI PHY | Video PHY Controller LogiCORE™ IP | Xilinx Phy VideoPhy Driver | No | /hdmi-modules/hdmi/phy-xilinx-vphy/xvphy_hdmi.c | |
pinctrl | Ultrascale+ MPSoC | Pin-Controller Driver | No | drivers/pinctrl/pinctrl-zynqmp.c | |
I2C Controller | Zynq-7000 SoC and Ultrascale+ MPSoC, Versal | 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-7000 SoC and Ultrascale+ MPSoC | GIC driver | Yes | drivers/irqchip/irq-gic.c | |
Interrupt Controller | MicroBlaze (axi_intc) | INTC | Yes | arch/microblaze/kernel/intc.c | |
MALI | Ultrascale+ MPSoC | Xilinx MALI driver | No | drivers/staging/mali/* | |
NAND | Ultrascale+ MPSoC | ZynqMP NAND | Yes | drivers/mtd/nand/raw/arasan_nand.c | DDR support is pending |
Nvmem- SoC revision read mechanism | Ultrascale+ MPSoC | SoC revision read mechanism | No | drivers/nvmem/zynqmp_nvmem.c | |
PCIe | axi_pcie (Zynq-7000 SoC) | PCIe Root Port Driver | Yes | drivers/pci/controller/pcie-xilinx.c | |
PCIe | Ultrascale+ MPSoC | PCIe Root Port Driver | Yes | drivers/pci/controller/pcie-xilinx-nwl.c | |
PL PCIe | Ultrascale+ MPSoC | PL PCIe Root Port Driver | No | drivers/pci/controller/pcie-xdma-pl.c | |
CPM PCIe RC | Versal | Versal CCIX-PCIe Module (CPM) Root port Linux driver | No | drivers/pci/controller/pcie-xdma-pl.c | |
PCIe | axi_pcie (MicroBlaze) | PCIe Root Port Driver | Yes | drivers/pci/controller/pcie-xilinx.c | |
Pinctrl | Zynq-7000 SoC | Zynq Linux Pin Controller Driver | Yes | drivers/pinctrl/pinctrl-zynq.c | |
Zynq QSPI | Zynq-7000 SoC | Zynq QSPI Driver | Yes | drivers/spi/spi-zynq-qspi.c | EAR support, Dual parallel and stacked mode support is pending |
Zynq Ultrascale + MPSoC QSPI | Ultrascale+ MPSoC, Versal | ZynqMP QSPI | drivers/spi/spi-zynqmp-qspi.c | Dual parallel and stacked mode support is pending | |
Reset-Controller | Ultrascale+ MPSoC Versal | Reset-controller Driver | Yes | drivers/reset/reset-zynqmp.c | |
remoteproc | Zynq-7000 SoC Zynq Ultrascale+ MPSoC | OpenAMP | No | drivers/remoteproc/zynq_remoteproc.c drivers/remoteproc/zynqmp_r5*.c | |
RTC | Ultrascale+ MPSoC, Versal | Zynqmp RTC | Yes | drivers/rtc/rtc-zynqmp.c | |
SATA | Ultrascale+ MPSoC | SATA | Yes | drivers/ata/ahci_ceva.c | |
SD Controller | Zynq-7000 SoC, Ultrascale+ MPSoC and Versal | SD controller | Yes | drivers/mmc/host/sdhci-of-arasan.c | |
SD-FEC | Zynq Ultrascale+ RFSoC | SD-FEC Driver | Yes | drivers/misc/xilinx_sdfec.c | |
SDIO WiFi | SDIO WiFi Driver | Yes | drivers/net/wireless/ath/ath6kl/sdio.c | ||
SMC Controller | Zynq-7000 SoC | SMC & NAND driver | No | drivers/memory/pl353-smc.c drivers/mtd/nand/raw/pl353_nand.c | PL353 SMC controller driver PL353 SMC Nand Controller driver |
SPI Controller | Zynq-7000 SoC, Ultrascale+ MPSoC, Versal | Zynq SPI Driver | Yes | drivers/spi/spi-cadence.c | |
SPI/QSPI Controller | axi_spi/axi_quad_spi | SPI Driver | No | 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 | axi_timer | AXI timer | Yes | arch/microblaze/kernel/timer.c | Timer Counter |
TSN | Zynq-7000 SoC, Zynq Ultrascale+ MPSoC | TSN | Yes | drivers/ethernet/net/ethernet/xilinx/* | |
SHA | Ultrascale+ MPSoC | SHA | No | drivers/crypto/zynqmp-sha.c | |
RSA | Ultrascale+ MPSoC | RSA | No | drivers/crypto/zynqmp-rsa.c | |
UART | Zynq-7000 SoC and Ultrascale+ MPSoC | PSUART | Yes | drivers/tty/serial/xilinx_uartps.c | |
UART | axi_uartlite | Uartlite Driver | Yes | drivers/tty/serial/uartlite.c | |
UART | Versal | Versal uart Driver | Yes | drivers/tty/serial/amba-pl011.c | |
USB (host) | Zynq-7000 SoC | 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-7000 SoC | 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-7000 SoC | 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 | Ultrascale+ MPSoC, Versal | zynqMP USB Driver | No | drivers/usb/dwc3 | |
V4L2 | UltraScale+ MPSoC | Yes | drivers/media/platform/xilinx/xilinx-vipp.c and xilinx-vip.c and xilinx-dma.c | ||
Multi-Scaler | No | drivers/media/platform/xilinx/xilinx-multi-scaler.c | |||
CFA | No | drivers/media/platform/xilinx/xilinx-cfa.c | |||
CRESAMPLE | No | drivers/media/platform/xilinx/xilinx-cresample.c | |||
CSIRX | Yes | drivers/media/platform/xilinx/xilinx-csi2rxss.c | |||
REMAPPER | No | drivers/media/platform/xilinx/xilinx-remapper.c | |||
RGB2YUV | No | drivers/media/platform/xilinx/xilinx-rgb2yuv.c | |||
SCALER | No | drivers/media/platform/xilinx/xilinx-scaler.c | |||
SWITCH | No | drivers/media/platform/xilinx/xilinx-switch.c | |||
TPG (including VTC) | Yes | drivers/media/platform/xilinx/xilinx-tpg.c + xilinx-vtc.c | |||
VPSS CSC | No | drivers/media/platform/xilinx/xilinx-vpss-csc.c | |||
VPSS Scaler | No | drivers/media/platform/xilinx/xilinx-vpss-scaler.c | |||
Video Demosaic | No | drivers/media/platform/xilinx/xilinx-demosaic.c | |||
Gamma Correction LUT | No | drivers/media/platform/xilinx/xilinx-gamma.c | |||
HDMI Rx | No | hdmi-modules/hdmi/xilinx-hdmirx.c | |||
SDI RX Subsystem | No | drivers/media/platform/xilinx/xilinx-sdirxss.c | |||
DP Rx Subsystem Driver | No | drivers/media/platform/xilinx/xilinx-dprxss.c | |||
Video Codec Unit (VCU) | Zynq UltraScale+ MPSoC | Xilinx Zynq UltraScale+ MPSoC Video Codec Unit | No | https://github.com/Xilinx/vcu-modules/ | |
Watchdog | Zynq and Ultrascale+ MPSoC | Cadence WDT Driver | Yes | drivers/watchdog/cadence_wdt.c | |
Watchdog | axi_timebase_wdt, Zynq UltraScale+ MPSoC, Versal | Axi Watchdog | Yes | drivers/watchdog/of_xilinx_wdt.c | |
APM | axi Performance monitor | APM | No | drivers/uio/uio_xilinx_apm.c | |
SERDES/SIOU | Ultrascale+ MPSoC | SERDES | No | drivers/phy/phy-zynqmp.c | serdes/siou linux device driver |
Clock Framework Zynqmp | Ultrascale+ MPSoC Versal | CCF | Yes | drivers/clk/zynqmp | |
JESD24B | IP:jesd204b | JESD204B | No | drivers/misc/jesd204b/xilinx_jesd204b.c drivers/misc/jesd204b/xilinx_jesd204b.h | |
GMII2RGMII converter | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC and Microblaze IP: gmii_to_rgmii | GMII2RGMII converter | Yes | drivers/net/phy/xilinx_gmii2rgmii.c | |
ALSA SoC | Ultrascale+ MPSoC | ASoC Platform/DMA | Yes No No | sound/soc/xilinx/xlnx_formatter_pcm.c sound/soc/xilinx/xlnx_pl_snd_card.c hdmi-modules/hdmi/xlnx_hdmirx_audio.c hdmi-modules/hdmi/xlnx_hdmitx_audio.c | Linux PL audio drivers based on ALSA SoC (ASoC) framework. |
ZynqMP firmware driver | Ultrascale+ MPSoC | ZynqMP firmware driver | Yes | drivers/firmware/xilinx/zynqmp/ | |
RFdc wrapper | Zynq Ultrascale+ RFSoC | rfdc | No | /XilinxProcessorIPLib/drivers/rfdc | Linux user space driver |
ZynqMP AES driver | Ultrascale+ MPSoC | AES | No | drivers/crypto/zynqmp-aes.c | |
ZynqMp Secure driver | Ultrascale+ MPSoC | ZynqMp Secure driver | No | drivers/firmware/xilinx/zynqmp-secure.c | |
OSPI | Versal | OSPI Linux driver | No | drivers/mtd/spi-nor/cadence-quadspi.c | |
Clock Wizard | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC , Versal and Microblaze | Linux Clocking Wizard | No | drivers/clk/clk-xlnx-clock-wizard.c | |
Xilinx EDAC | Versal | Linux Versal EDAC Driver | No | drivers/edac/xilinx_ddrmc_edac.c | |
Versal Sysmon Driver | Versal | Versal Sysmon Driver | No | drivers/iio/adc/versal-sysmon.c | |
Xillinx FlexNoc APM | Versal | Versal FlexNoC Driver | No | drivers/misc/xilinx_flex_pm.c |
Related Links
- CAN Driver can4linux
- DRM KMS Driver
- Emaclite Driver
- GPIO Driver
- I2C Aardvark
- I2C Driver
- PCIe Root Port Driver
- SDIO WiFi Driver
- SPI Driver
- SystemACE Driver
- TFT Driver
- USB Gadget Driver
- USB Device Driver
- User Mode Pseudo Driver
- V4L2 Pipeline Driver
- V4L2 Color Filter Array Driver
- V4L2 Chroma Resampler Driver
- V4L2 Remapper Driver
- V4L2 RGB to YUV Converter Driver
- V4L2 Scaler Driver
- V4L2 Switch Driver
- V4L2 TPG Driver
- Zynq PL330 DMA Driver
- SERDES
- ZynqMP firmware driver