@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.
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 | |
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 createssysfs
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 Driver Installation Failed
Table of Contents