+++ /dev/null
-SPI/QSPI Dual flash connection modes:
-=====================================
-
-This describes how SPI/QSPI flash memories are connected to a given
-controller in a single chip select line.
-
-Current spi_flash framework supports, single flash memory connected
-to a given controller with single chip select line, but there are some
-hw logics(ex: xilinx zynq qspi) that describes two/dual memories are
-connected with a single chip select line from a controller.
-
-"dual_flash" from include/spi.h describes these types of connection mode
-
-Possible connections:
---------------------
-SF_SINGLE_FLASH:
- - single spi flash memory connected with single chip select line.
-
- +------------+ CS +---------------+
- | |----------------------->| |
- | Controller | I0[3:0] | Flash memory |
- | SPI/QSPI |<======================>| (SPI/QSPI) |
- | | CLK | |
- | |----------------------->| |
- +------------+ +---------------+
-
-SF_DUAL_STACKED_FLASH:
- - dual spi/qspi flash memories are connected with a single chipselect
- line and these two memories are operating stacked fasion with shared buses.
- - xilinx zynq qspi controller has implemented this feature [1]
-
- +------------+ CS +---------------+
- | |---------------------->| |
- | | I0[3:0] | Upper Flash |
- | | +=========>| memory |
- | | | CLK | (SPI/QSPI) |
- | | | +---->| |
- | Controller | CS | | +---------------+
- | SPI/QSPI |------------|----|---->| |
- | | I0[3:0] | | | Lower Flash |
- | |<===========+====|====>| memory |
- | | CLK | | (SPI/QSPI) |
- | |-----------------+---->| |
- +------------+ +---------------+
-
- - two memory flash devices should has same hw part attributes (like size,
- vendor..etc)
- - Configurations:
- on LQSPI_CFG register, Enable TWO_MEM[BIT:30] on LQSPI_CFG
- Enable U_PAGE[BIT:28] if U_PAGE flag set - upper memory
- Disable U_PAGE[BIT:28] if U_PAGE flag unset - lower memory
- - Operation:
- accessing memories serially like one after another.
- by default, if U_PAGE is unset lower memory should accessible,
- once user wants to access upper memory need to set U_PAGE.
-
-SPI_FLASH_CONN_DUALPARALLEL:
- - dual spi/qspi flash memories are connected with a single chipselect
- line and these two memories are operating parallel with separate buses.
- - xilinx zynq qspi controller has implemented this feature [1]
-
- +-------------+ CS +---------------+
- | |---------------------->| |
- | | I0[3:0] | Upper Flash |
- | |<=====================>| memory |
- | | CLK | (SPI/QSPI) |
- | |---------------------->| |
- | Controller | CS +---------------+
- | SPI/QSPI |---------------------->| |
- | | I0[3:0] | Lower Flash |
- | |<=====================>| memory |
- | | CLK | (SPI/QSPI) |
- | |---------------------->| |
- +-------------+ +---------------+
-
- - two memory flash devices should has same hw part attributes (like size,
- vendor..etc)
- - Configurations:
- Need to enable SEP_BUS[BIT:29],TWO_MEM[BIT:30] on LQSPI_CFG register.
- - Operation:
- Even bits, i.e. bit 0, 2, 4 ., of a data word is located in the lower memory
- and odd bits, i.e. bit 1, 3, 5, ., of a data word is located in the upper memory.
-
-Note: Technically there is only one CS line from the controller, but
-zynq qspi controller has an internal hw logic to enable additional CS
-when controller is configured for dual memories.
-
-[1] http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf
-
---
-Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
-05-01-2014.