Sourav Poddar 9ea09e2037 doc: SPI: Add qspi test details on AM43xx 11 年之前
..
README.dual-flash 056fbc73d5 sf: Add dual memories support - DUAL_PARALLEL 11 年之前
README.ftssp010_spi_test 66cb9eb1d6 spi: Add Faraday SPI controller support 11 年之前
README.sandbox-spi ffdb20bea1 sandbox: spi: Add new SPI flash driver 11 年之前
README.sh_qspi_test 16f47c9c51 spi: Add support SH Quad SPI driver 11 年之前
README.ti_qspi_am43x_test 9ea09e2037 doc: SPI: Add qspi test details on AM43xx 11 年之前
README.ti_qspi_dra_test 2f24223ae1 README: qspi usecase and testing documentation. 11 年之前
README.ti_qspi_flash 2f24223ae1 README: qspi usecase and testing documentation. 11 年之前
status.txt 736ce857da doc: SPI: Update status.txt 11 年之前

README.dual-flash

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
05-01-2014.