This page gives an overview of qspipsu driver which is available as part of the Xilinx Vivado and Vitis distribution.
Source path for the driver:https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/qspipsu
Driver source code is organized into different folders. Below diagram shows the qspipsu driver source organization
-- Doc - Provides the API and data structure details
- Examples - Reference application to show how to use the driver APIs and calling sequence
- Source - Driver source files
The controller driver will be exclusive to GQSPI including API’s to be used for configuring the host controller and transmitting the data.
The following list of basic commands are supported by the Standalone driver:
- Read Identification
- Read Page
- Program Page
- Erase (Chip/Die/Bulk Erase)
- Read Status
Controller Features Supported:
The following features are supported in the QSPI Standalone driver.
- DMA access (aligned address only)
- IO access
- Control of two chip selects/bus
- Configurable clock
- Configurable bus width
- Byte Mirror/Stripe operations
- Interrupts – will be chosen and enabled internally
- Generic register read/write operations
- 3 byte and 4 byte addressing
- Flash configurations illustrated in examples – Single, Dual Stacked, Dual Parallel
Known issues and Limitations
The standalone driver supports GenericQSPI(GQSPI) not Linear QSPI(LQSPI)
Test casesSample output of test cases that are taken from examples folder specified above
|QSPIPSU FLASH Interrupt Example Test|
Successfully ran QSPIPSU FLASH Interrupt Example Test
|QSPIPSU FLASH Polling Example Test|
Successfully ran QSPIPSU FLASH Polling Example Test
Qspipsu write throughput is 1326 KBPS
Qspipsu read throughput is 28339 KBPS
Qspipsu write throughput is 2438 KBPS
Qspipsu read throughput is 54245 KBPS
- Added Tap delay support
- Added example support for LQSPI
- Added PollData and PollTimeout Support
- Update GQSPI PollData/PollTimeout for dualparallel configurations
- Added support for accessing upper DDR
- Added CCI support
- Replaced the #ifdef COMMENTS with #if USE_FOUR_BYTE
- Examples made compatible with u-boot and linux.
- Resolved errors in qspipsu for ICCARM compiler
- lqspi and poll data poll timeout example made compatible with u-boot and linux.
- Removed unsupported 4 byte commands.
- Added support for MT25QL02G, S25FL064L and MX66U1G45G flash parts.
- Removed check before writing destination address to DMA MSB.
- Added a support to toggle WP pin of the flash.
- Added support in EL1 NS mode.
- Enable both CS in dual parallel mode, when issuing Write enable command.
- Added 64 bit dma support on 32 bit processor
- Added support for ISSI flash parts with 8/16/32/64Mb size of 3v and 1.8v variants
- Added Support for 64 bit DMA addresses for Microblaze-X
- Enable IO mode for poll feature
- Fix incorrect tap values
- Add multi-die erase and multi-die read support
- Removed LQSPI register access in Versal.
- Fixed coverity warnings in qspipsu.
- Added non-blocking DMA transfer APIs.
- Add clocking support.
- Update Makefile for parallel make execution