Xilinx Driver



Edit 3 218…

@Steve Take a look at Xilinx's cores and drivers for reference. For example, the GPIO core at data ip xilinx axigpiov20 and driver data embeddedsw XilinxProcessorIPLib drivers gpiov44 data (directories are under your Xilinx install directory; version numbers might be different). – Justin N May 16 at 0:10. 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.

. xilinxspiremove - Remove method for the SPI driver. @pdev: Pointer to the platformdevice structure. This function is called if a device is physically removed from the system. Xilinx recommends Vivado Design Suite for new design starts with Virtex-7, Kintex-7, Artix-7, and Zynq-7000. Windows 7/XP/Server and Linux - Split Installer Base Image - File 1/4 (TAR/GZIP - 1.95 GB).

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.Xilinx Driver

Driver Information

Xilinx DriverThere 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

System Monitor
ZynqMP
ZynqMP AMS
No
drivers/iio/adc/xilinx-ams

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 and
Zynq Ultrascale+ MPSoC
Cpufreq
Yes
drivers/cpufreq/cpufreq-dt.c

cpuidle
Zynq and
Zynq Ultrascale+ MPSoC
cpuidle
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
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
Available in a special branch of the Xilinx Linux 4.9 kernel
DRM KMS
Zynq
Zynq and
Zynq Ultrascale+ MPSoC
DRM KMS Driver
No
drivers/gpu/drm/xilinx/*
drivers/staging/xilinx/hdmi/xilinx_drm_hdmi.c
Including subdevice drivers
- HDMI Tx
- On Screen Display
- Video Mixer
- Chroma Resampler
- Video Timing Controller
- RGB to YUV converter
- DisplayPort: Soft IP and ZynqMP DisplayPort Controller
- MIPI DSI2 Tx Controller
- SDI Tx
EDAC
Zynq and
Zynq 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
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

HDMI Clocks
SI5324 Clock Multiplier/Jitter Attenuator
SNx5DP159 device
CCF SI5324 Driver
Misc DP159 Driver
No
No
drivers/staging/xilinx/clk/*
drivers/staging/xilinx/misc/dp159.c
2017.3_video_ea
HDMI PHY
Xilinx® Video PHY Controller LogiCORE™ IP
Xilinx Phy VideoPhy Driver
No
drivers/staging/xilinx/hdmi/phy-vphy.c
2017.3_video_ea
pinctrl
Zynq Ultrascale+ MPSoC
Pin-Controller Driver
No
drivers/pinctrl/pinctrl-zynqmp.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

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

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

Nvmem-
SoC revision read mechanism
Zynq Ultrascale+ MPSoC
ZynqMP SoC revision read mechanism
No
drivers/nvmem/zynqmp_nvmem.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

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

Zynq Ultrascale + MPSoC QSPI
Zynq Ultrascale+ MPSoC
ZynqMP QSPI

drivers/spi/spi-zynqmp-qspi.c

Reset-Controller
Zynq Ultrascale+ MPSoC
Zynqmp Linux Reset-controller Driver
No
drivers/reset/reset-zynqmp.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
axi_timer
AXI timer
Yes
arch/microblaze/kernel/timer.c
Timer Counter
TSN
Zynq, Zynq Ultrascale+ MPSoC
TSN
Yes
drivers/ethernet/net/ethernet/xilinx/*

SHA
Zynq Ultrascale+ MPSoC
SHA
No
drivers/crypto/zynqmp-sha.c

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

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)
VPSS CSC
VPSS Scaler
Video Demosaic
Gamma Correction LUT
HDMI Rx
SDI RX Subsystem
Yes
No
No
No
No
No
No
Yes
No
No
No
No
No
No
No
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
drivers/media/platform/xilinx/xilinx-vpss-csc.c
drivers/media/platform/xilinx/xilinx-vpss-scaler.c
drivers/media/platform/xilinx/xilinx-demosaic.c
drivers/media/platform/xilinx/xilinx-gamma.c
drivers/staging/xilinx/hdmi/xilinx-hdmirx.c
drivers/media/platform/xilinx/xilinx-sdirxss.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

JESD24B
IP:jesd204b
JESD204B
No
drivers/misc/jesd204b/

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


Related Links

Xilinx QDMA Subsystem for PCIe example design is implemented on a Xilinx FPGA,which is connected to an X86 host system through PCI Express.Xilinx QDMA Linux Driver is implemented as a combination of user space andkernel driver components to control and configure the QDMA subsystem.

QDMA Linux Driver consists of the following four major components:

Xilinx Driver Code

  • QDMA HW Access: QDMA HW Access module handles all the QDMA IP register access functionality and exposes a set of APIs for register read/writes.

  • Libqdma: Libqdma module exposes a set of APIs for QDMA IP configuration and management. It uses the QDMA HW Access layer for interacting with the QDMA HW and facilitates the upper layers to achieve the following QDMA functionalities

    • Physical Function(PF) Management
    • Virtual Function(VF) Management
    • Communication Management between PF and VF
    • QDMA Queue Configuration and Control
    • Descriptor Rings Creation and Control
    • Transfer Management
    • DebugFS Support
  • Driver Interface: This layer create a simple linux pci_driver interface and a character driver interface to demonstrate the QDMA IP functionalities using the Linux QDMA IP driver. It creates a NL interface to facilitate the user applications to interact with the Libqdma module. It also creates sysfs interface to enable users to configure and control various QDMA IP parameters.

  • Applications: QDMA IP Driver provides the following sample applications.

    • Dmactl : This application provides set of commands to configure and control the queues in the system
    • dma_to_device : This application enables the users to perform Host to Card(H2C) transfer
    • dma_from_device : This application enables the users to perform Card to Host(C2H) transfer
    • Dmaperf : This application provides interfaces to extract performance numbers for QDMA IP in MM and ST modes

Xilinx Linux Driver

Xilinx drivers linux

Xilinx Driver Installation Failed

Table of Contents