Linux Drivers
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 | Yes | drivers/iio/adc/xilinx-xadc-core.c | ||
AI Engine Driver | Versal | Yes | drivers/misc/xilinx-ai-engine/ | AI Engine SSW Driver | |
System Monitor | Ultrascale+ MPSoC | No | drivers/iio/adc/xilinx-ams.c | ||
CAN Controller | Zynq-7000 SoC , axi_can | Yes | drivers/net/can/xilinx_can.c | Alternative CAN4Linux project: can4linux | |
CANFD Controller | axi_canfd | Yes | drivers/net/can/xilinx_can.c | ||
Common Clock Framework | Zynq-7000 SoC | Yes | drivers/clk/zynq/ | ||
cpufreq | Zynq-7000 SoC and | Yes | drivers/cpufreq/cpufreq-dt.c | ||
cpuidle | Zynq-7000 SoC and | Yes | drivers/cpuidle/cpuidle-zynq.c | ||
Devcfg | Zynq-7000 SoC | 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. | |
DFX Decoupler DFX Axi Shutdown manager | Zynq Ultrascale+ MPSoC, Versal | Yes | drivers/fpga/xilinx-pr-decoupler.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 | Yes | drivers/dma/xilinx/xilinx_dma.c | ||
DMA Controller | Platform:Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze | Yes | drivers/dma/xilinx/xilinx_dma.c | ||
DMA Controller | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze | Yes | drivers/dma/xilinx/xilinx_dma.c | ||
DMA Controller | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC/Versal and Microblaze | Yes | drivers/dma/xilinx/xilinx_dma.c | ||
DMA Controller | Platform: Zynq Ultrascale+ MPSoC, Versal | Yes | drivers/dma/xilinx/zynqmp_dma.c | ||
DMA Controller | Platform: Zynq Ultrascale+ MPSoC | 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 - HDMI 2.1 Tx driver |
No | drivers/gpu/drm/xlnx/xlnx_mixer.c | ||||
No | drivers/gpu/drm/xlnx/xlnx_sdi.c | ||||
No | drivers/gpu/drm/xlnx/xlnx_dsi.c | ||||
No | |||||
No | drivers/gpu/drm/xlnx/xlnx_dptx.c | ||||
No | drivers/gpu/drm/xlnx/xlnx_scaler.c | ||||
No | drivers/gpu/drm/xlnx/xlnx_hdmi.c | ||||
EDAC | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC | Yes | drivers/edac/synopsys_edac.c | ||
Platform: Zynq Ultrascale+ MPSoC, Versal | Yes | drivers/edac/zynqmp_edac.c |
| ||
Versal DDR | Yes | drivers/edac/versal_edac.c |
| ||
Ethernet MAC | Platform: Zynq, Zynq Ultrascale+ MPSoC, Versal | Yes | drivers/net/ethernet/cadence/macb.c | ||
Ethernet MAC | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC, Versal | Yes | drivers/net/ethernet/xilinx/xilinx_axienet_main.c | Uses AXI DMA and AXI MCDMA | |
Ethernetlite | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC | Yes | drivers/net/ethernet/xilinx/xilinx_emaclite.c | ||
FPGA Manager | Ultrascale+ MPSoC | Yes | drivers/fpga/zynqmp-fpga.c | ||
FPGA Manager | Zynq-7000 SoC | Yes | drivers/fpga/zynq-fpga.c | ||
FPGA Manager | Versal | No | drivers/fpga/versal.c | ||
GPIO | Zynq-7000 SoC, | Yes | drivers/gpio/gpio-zynq.c | ||
GPIO | axi_gpio | Yes | drivers/gpio/gpio-xilinx.c | ||
HDMI Clocks | SI5324 Clock | No | drivers/clk/clk-si5324.c | ||
HDMI Clocks | Multiplier/Jitter Attenuator | No | hdmi-modules/misc/dp159.c | ||
HDMI PHY | Video PHY Controller LogiCORE™ IP | No | /hdmi-modules/hdmi/phy-xilinx-vphy/xvphy_hdmi.c | ||
Pinctrl | Ultrascale+ MPSoC | Yes | drivers/pinctrl/pinctrl-zynqmp.c | ||
Pinctrl | Zynq-7000 SoC | Yes | drivers/pinctrl/pinctrl-zynq.c |
| |
I2C Controller | Zynq-7000 SoC and | Yes | drivers/i2c/busses/i2c-cadence.c | ||
I2C Controller | axi_iic | Yes | drivers/i2c/busses/i2c-xiic.c | ||
Interrupt Controller | Zynq-7000 SoC and | Yes | drivers/irqchip/irq-gic.c | ||
Interrupt Controller | MicroBlaze (axi_intc) | Yes | drivers/irqchip/irq-xilinx-intc.c | INTC as module feature is in experimental form and yet to be upstreamed | |
MALI | Ultrascale+ MPSoC | No | drivers/staging/mali/* | ||
NAND | Ultrascale+ MPSoC | Yes | drivers/mtd/nand/raw/arasan-nand-controller.c | ||
Nvmem- | Ultrascale+ MPSoC | No | drivers/nvmem/zynqmp_nvmem.c | ||
PCIe | axi_pcie (Zynq-7000 SoC) | Yes | drivers/pci/controller/pcie-xilinx.c | ||
PCIe | Ultrascale+ MPSoC | Yes | drivers/pci/controller/pcie-xilinx-nwl.c | ||
PL PCIe | Ultrascale+ MPSoC | No | drivers/pci/controller/pcie-xdma-pl.c | ||
CPM4 PCIe RC | Versal | Versal Adaptive SoC CCIX-PCIe Module (CPM) Root port Linux driver | Yes | drivers/pci/controller/pcie-xilinx-cpm.c | |
PCIe | axi_pcie (MicroBlaze) | Yes | drivers/pci/controller/pcie-xilinx.c | ||
Zynq QSPI | Zynq-7000 SoC | No | drivers/spi/spi-zynq-qspi.c | EAR support, Dual parallel and stacked mode support is pending | |
Zynq Ultrascale + MPSoC QSPI | Ultrascale+ MPSoC, Versal |
| drivers/spi/spi-zynqmp-gqspi.c | Dual parallel and stacked mode support is pending | |
Reset-Controller | Ultrascale+ MPSoC Versal | Yes | drivers/reset/reset-zynqmp.c | ||
remoteproc | Zynq-7000 SoC Zynq Ultrascale+ MPSoC | No | drivers/remoteproc/zynq_remoteproc.c drivers/remoteproc/zynqmp_r5*.c | ||
RTC | Ultrascale+ MPSoC, Versal | Yes | drivers/rtc/rtc-zynqmp.c | ||
SATA | Ultrascale+ MPSoC | Yes | drivers/ata/ahci_ceva.c | ||
SD Controller | Zynq-7000 SoC, | Yes | drivers/mmc/host/sdhci-of-arasan.c | ||
SD-FEC | Zynq Ultrascale+ RFSoC | Yes | drivers/misc/xilinx_sdfec.c | ||
SDIO WiFi | Yes | drivers/net/wireless/ath/ath6kl/sdio.c | |||
SMC Controller | Zynq-7000 SoC | Yes | drivers/memory/pl353-smc.c | PL353 SMC controller driver | |
SPIPS Controller | Zynq-7000 SoC, | Yes | drivers/spi/spi-cadence.c | ||
SPI/QSPI Controller | axi_spi/axi_quad_spi | No | drivers/spi/spi-xilinx.c | ||
System ACE | axi_sysace | Yes | drivers/block/xsysace.c | ||
TFT | axi_tft | Yes | drivers/video/fbdev/xilinxfb.c | ||
Timer | axi_timer | Yes | arch/microblaze/kernel/timer.c | Timer Counter | |
TSN | Zynq-7000 SoC, Zynq Ultrascale+ MPSoC | Yes | drivers/ethernet/net/ethernet/xilinx/* | ||
SHA | Ultrascale+ MPSoC | No | drivers/crypto/zynqmp-sha.c | ||
RSA | Ultrascale+ MPSoC | No | drivers/crypto/zynqmp-rsa.c | ||
UART | Zynq-7000 SoC and | Yes | drivers/tty/serial/xilinx_uartps.c | ||
UART | axi_uartlite | Yes | drivers/tty/serial/uartlite.c | ||
UART | Versal | Yes | drivers/tty/serial/amba-pl011.c | ||
USB (host) | Zynq-7000 SoC |
Yes |
drivers/usb/chipidea/host.c | Zynq PS USB Dual role driver | |
USB (device) | Zynq-7000 SoC | Yes Yes | drivers/usb/chipidea/udc.c drivers/usb/chipidea/core.c | Zynq PS usb gadget controller driver | |
USB (OTG) | Zynq-7000 SoC | Yes Yes | drivers/usb/phy/phy-ulpi.c | Zynq PS OTG driver | |
USB (device) | axi_usb2_device | Yes | drivers/usb/gadget/udc/udc-xilinx.c | AXI USB device soft IP linux driver. | |
USB | Ultrascale+ MPSoC, Versal | Yes | drivers/usb/dwc3/dwc3-xilinx.c | dwc3 - xilinx driver | |
V4L2 | UltraScale+ MPSoC | Yes | drivers/media/platform/xilinx/xilinx-vipp.c and xilinx-vip.c and xilinx-dma.c | ||
No | drivers/media/platform/xilinx/xilinx-multi-scaler.c | ||||
No | drivers/media/platform/xilinx/xilinx-cfa.c | ||||
No | drivers/media/platform/xilinx/xilinx-cresample.c | ||||
Yes | drivers/media/platform/xilinx/xilinx-csi2rxss.c | ||||
No | drivers/media/platform/xilinx/xilinx-remapper.c | ||||
No | drivers/media/platform/xilinx/xilinx-rgb2yuv.c | ||||
No | drivers/media/platform/xilinx/xilinx-scaler.c | ||||
No | drivers/media/platform/xilinx/xilinx-switch.c | ||||
TPG (including VTC) | Yes | drivers/media/platform/xilinx/xilinx-tpg.c + xilinx-vtc.c | |||
No | drivers/media/platform/xilinx/xilinx-vpss-csc.c | ||||
No | drivers/media/platform/xilinx/xilinx-vpss-scaler.c | ||||
No | drivers/media/platform/xilinx/xilinx-demosaic.c | ||||
No | drivers/media/platform/xilinx/xilinx-gamma.c | ||||
No | hdmi-modules/hdmi/xilinx-hdmirx.c | ||||
No | drivers/media/platform/xilinx/xilinx-sdirxss.c | ||||
No | drivers/media/platform/xilinx/xilinx-dprxss.c | ||||
No | drivers/media/platform/xilinx/xilinx-hdmirxss.c |
| |||
Video Codec Unit (VCU) | Zynq UltraScale+ MPSoC | No | https://github.com/Xilinx/vcu-modules/ | ||
Watchdog | Zynq and | Yes | drivers/watchdog/cadence_wdt.c | ||
Watchdog | axi_timebase_wdt, Zynq UltraScale+ MPSoC, Versal | Yes | drivers/watchdog/of_xilinx_wdt.c | ||
Window Watchdog | Versal | Yes | drivers/watchdog/xilinx_wwdt.c |
| |
APM | AXI Performance Monitor | No | drivers/uio/uio_xilinx_apm.c | ||
SERDES/SIOU | Ultrascale+ MPSoC | No | drivers/phy/phy-zynqmp.c | serdes/siou linux device driver | |
Clock Framework Zynqmp | Ultrascale+ MPSoC | Yes | drivers/clk/zynqmp | ||
GMII2RGMII converter | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC | Yes | drivers/net/phy/xilinx_gmii2rgmii.c | ||
ALSA SoC | Ultrascale+ MPSoC | 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 | Yes | drivers/firmware/xilinx/zynqmp/ | ||
RFdc wrapper | Zynq Ultrascale+ RFSoC | No | Linux user space driver | ||
ZynqMP AES driver | Ultrascale+ MPSoC | No | drivers/crypto/zynqmp-aes.c | ||
ZynqMp Secure driver | Ultrascale+ MPSoC | No | drivers/firmware/xilinx/zynqmp-secure.c | ||
OSPI | Versal | No | drivers/mtd/spi-nor/cadence-quadspi.c | ||
Clock Wizard | Platform: Zynq-7000 SoC/Zynq Ultrascale+ MPSoC , Versal | Yes | drivers/clk/xilinx/clk-xlnx-clock-wizard.c | ||
Versal Sysmon Driver | Versal | No | drivers/iio/adc/versal-sysmon.c | ||
Microblaze Triple Modular Redundancy (TMR) Subsystem | Microblaze | No | drivers/misc/xilinx_tmr_manager.c drivers/misc/xilinx_tmr_inject.c | ||
Ethernet Offload Engine | Zynq Ultrascale+ MPSoC | No | drivers/net/ethernet/xilinx/xilinx_axienet_eoe.c drivers/net/ethernet/xilinx/xilinx_axienet_eoe.h |
| |
UFS XHCI | AMD Versal Gen 2 | No | drivers/ufs/host/ufs-amd-versal2.c |
|
Related Links
Related content
© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy