The Octal-SPI Flash Controller can be used to provide access to Serial Flash devices. Standard Serial Peripheral Interface (SPI) is supported along with high performance Octal SPI variants. The Octal-SPI Flash Controller transfer the data either in a memory mapped direct fashion or in an indirect fashion where the controller is set up via configuration registers to silently perform some requested operation, signalling its completion via interrupts or status registers. For indirect operations, data is transferred between system memory and external FLASH memory via an internal SRAM. OSPI has it’s own internal DMA which is used to read the data from the flash, SRAM is accessible only in case of DMA mode of operation (indirect mode).
In INDAC (Indirect Access Controller) mode DMA writes are not supported, Non-DMA, DAC or STIG modes are used for flash writes. In INDAC(DMA) mode only flash reads are supported.
2023.1 Versal: OSPI flash probe fails with BSP images on VCK190 in Linux AR Link
CONFIG_SPI_CADENCE_QUADSPI=y |
Sample Device-tree node for OSPI
spi@f1010000 { compatible = "xlnx,versal-ospi-1.0", "cadence,qspi", "cdns,qspi-nor"; status = "okay"; reg = <0x0 0xf1010000 0x0 0x10000 0x0 0xc0000000 0x0 0x20000000>; interrupts = <0x0 0x7c 0x4 0x0 0x7c 0x4>; clock-names = "ref_clk", "pclk"; cdns,fifo-depth = <0x100>; cdns,fifo-width = <0x4>; cdns,is-dma = <0x1>; cdns,is-stig-pgm = <0x1>; cdns,trigger-address = <0xc0000000>; #stream-id-cells = <0x1>; #address-cells = <0x1>; #size-cells = <0x0>; clocks = <0x3 0x3a 0x3 0x52>; power-domains = <0x7 0x1822402a>; bus-num = <0x2>; num-cs = <0x1>; reset-gpios = <0x28 0xc 0x0>; phandle = <0x33>; flash@0 { compatible = "mt35xu02g", "micron,m25p80", "spi-flash"; reg = <0x0>; #address-cells = <0x1>; #size-cells = <0x1>; cdns,read-delay = <0x0>; cdns,tshsl-ns = <0x0>; cdns,tsd2d-ns = <0x0>; cdns,tchsh-ns = <0x1>; cdns,tslch-ns = <0x1>; spi-tx-bus-width = <0x1>; spi-rx-bus-width = <0x8>; spi-max-frequency = <0x1312d00>; partition@0 { label = "spi0-flash0"; reg = <0x0 0x10000000>; }; }; }; |
At frequency 133.33 MHz
DDR mode:
Read Speed: 226768 KiB/s
Write Speed: 1696 KiB/s
Features added to mainline
Not in Mainline