xref: /rk3399_rockchip-uboot/doc/SPI/README.dual-flash (revision 17998eff9021b7b579c0387e934d8c52603fe247)
1f77f4691SJagannadha Sutradharudu TekiSPI/QSPI Dual flash connection modes:
2f77f4691SJagannadha Sutradharudu Teki=====================================
3f77f4691SJagannadha Sutradharudu Teki
4f77f4691SJagannadha Sutradharudu TekiThis describes how SPI/QSPI flash memories are connected to a given
5f77f4691SJagannadha Sutradharudu Tekicontroller in a single chip select line.
6f77f4691SJagannadha Sutradharudu Teki
7f77f4691SJagannadha Sutradharudu TekiCurrent spi_flash framework supports, single flash memory connected
8f77f4691SJagannadha Sutradharudu Tekito a given controller with single chip select line, but there are some
9f77f4691SJagannadha Sutradharudu Tekihw logics(ex: xilinx zynq qspi) that describes two/dual memories are
10f77f4691SJagannadha Sutradharudu Tekiconnected with a single chip select line from a controller.
11f77f4691SJagannadha Sutradharudu Teki
12f77f4691SJagannadha Sutradharudu Teki"dual_flash" from include/spi.h describes these types of connection mode
13f77f4691SJagannadha Sutradharudu Teki
14f77f4691SJagannadha Sutradharudu TekiPossible connections:
15f77f4691SJagannadha Sutradharudu Teki--------------------
16f77f4691SJagannadha Sutradharudu TekiSF_SINGLE_FLASH:
17f77f4691SJagannadha Sutradharudu Teki       - single spi flash memory connected with single chip select line.
18f77f4691SJagannadha Sutradharudu Teki
19f77f4691SJagannadha Sutradharudu Teki  +------------+             CS         +---------------+
20f77f4691SJagannadha Sutradharudu Teki  |            |----------------------->|               |
21f77f4691SJagannadha Sutradharudu Teki  | Controller |         I0[3:0]        | Flash memory  |
22f77f4691SJagannadha Sutradharudu Teki  | SPI/QSPI   |<======================>| (SPI/QSPI)    |
23f77f4691SJagannadha Sutradharudu Teki  |            |           CLK          |               |
24f77f4691SJagannadha Sutradharudu Teki  |            |----------------------->|               |
25f77f4691SJagannadha Sutradharudu Teki  +------------+                        +---------------+
26f77f4691SJagannadha Sutradharudu Teki
27f77f4691SJagannadha Sutradharudu TekiSF_DUAL_STACKED_FLASH:
28f77f4691SJagannadha Sutradharudu Teki       - dual spi/qspi flash memories are connected with a single chipselect
29f77f4691SJagannadha Sutradharudu Teki         line and these two memories are operating stacked fasion with shared buses.
30f77f4691SJagannadha Sutradharudu Teki       - xilinx zynq qspi controller has implemented this feature [1]
31f77f4691SJagannadha Sutradharudu Teki
32f77f4691SJagannadha Sutradharudu Teki  +------------+        CS             +---------------+
33f77f4691SJagannadha Sutradharudu Teki  |            |---------------------->|               |
34f77f4691SJagannadha Sutradharudu Teki  |            |              I0[3:0]  | Upper Flash   |
35f77f4691SJagannadha Sutradharudu Teki  |            |            +=========>| memory        |
36f77f4691SJagannadha Sutradharudu Teki  |            |            |     CLK  | (SPI/QSPI)    |
37f77f4691SJagannadha Sutradharudu Teki  |            |            |    +---->|               |
38f77f4691SJagannadha Sutradharudu Teki  | Controller |        CS  |    |     +---------------+
39f77f4691SJagannadha Sutradharudu Teki  | SPI/QSPI   |------------|----|---->|               |
40f77f4691SJagannadha Sutradharudu Teki  |            |    I0[3:0] |    |     | Lower Flash   |
41f77f4691SJagannadha Sutradharudu Teki  |            |<===========+====|====>| memory        |
42f77f4691SJagannadha Sutradharudu Teki  |            |          CLK    |     | (SPI/QSPI)    |
43f77f4691SJagannadha Sutradharudu Teki  |            |-----------------+---->|               |
44f77f4691SJagannadha Sutradharudu Teki  +------------+                       +---------------+
45f77f4691SJagannadha Sutradharudu Teki
46f77f4691SJagannadha Sutradharudu Teki       - two memory flash devices should has same hw part attributes (like size,
47f77f4691SJagannadha Sutradharudu Teki         vendor..etc)
48f77f4691SJagannadha Sutradharudu Teki       - Configurations:
49f77f4691SJagannadha Sutradharudu Teki               on LQSPI_CFG register, Enable TWO_MEM[BIT:30] on LQSPI_CFG
50f77f4691SJagannadha Sutradharudu Teki               Enable U_PAGE[BIT:28] if U_PAGE flag set - upper memory
51f77f4691SJagannadha Sutradharudu Teki               Disable U_PAGE[BIT:28] if U_PAGE flag unset - lower memory
52f77f4691SJagannadha Sutradharudu Teki       - Operation:
53f77f4691SJagannadha Sutradharudu Teki               accessing memories serially like one after another.
54f77f4691SJagannadha Sutradharudu Teki               by default, if U_PAGE is unset lower memory should accessible,
55f77f4691SJagannadha Sutradharudu Teki               once user wants to access upper memory need to set U_PAGE.
56f77f4691SJagannadha Sutradharudu Teki
57*056fbc73SJagannadha Sutradharudu TekiSPI_FLASH_CONN_DUALPARALLEL:
58*056fbc73SJagannadha Sutradharudu Teki	- dual spi/qspi flash memories are connected with a single chipselect
59*056fbc73SJagannadha Sutradharudu Teki	  line and these two memories are operating parallel with separate buses.
60*056fbc73SJagannadha Sutradharudu Teki	- xilinx zynq qspi controller has implemented this feature [1]
61*056fbc73SJagannadha Sutradharudu Teki
62*056fbc73SJagannadha Sutradharudu Teki  +-------------+           CS		+---------------+
63*056fbc73SJagannadha Sutradharudu Teki  |		|---------------------->|		|
64*056fbc73SJagannadha Sutradharudu Teki  | 		|        I0[3:0]	| Upper Flash	|
65*056fbc73SJagannadha Sutradharudu Teki  | 		|<=====================>| memory	|
66*056fbc73SJagannadha Sutradharudu Teki  |		|	   CLK		| (SPI/QSPI)	|
67*056fbc73SJagannadha Sutradharudu Teki  |		|---------------------->|		|
68*056fbc73SJagannadha Sutradharudu Teki  | Controller	|	    CS		+---------------+
69*056fbc73SJagannadha Sutradharudu Teki  | SPI/QSPI	|---------------------->|		|
70*056fbc73SJagannadha Sutradharudu Teki  | 		|        I0[3:0]	| Lower Flash	|
71*056fbc73SJagannadha Sutradharudu Teki  | 		|<=====================>| memory	|
72*056fbc73SJagannadha Sutradharudu Teki  |		|	   CLK		| (SPI/QSPI)	|
73*056fbc73SJagannadha Sutradharudu Teki  |		|---------------------->|		|
74*056fbc73SJagannadha Sutradharudu Teki  +-------------+			+---------------+
75*056fbc73SJagannadha Sutradharudu Teki
76*056fbc73SJagannadha Sutradharudu Teki	- two memory flash devices should has same hw part attributes (like size,
77*056fbc73SJagannadha Sutradharudu Teki	  vendor..etc)
78*056fbc73SJagannadha Sutradharudu Teki	- Configurations:
79*056fbc73SJagannadha Sutradharudu Teki		Need to enable SEP_BUS[BIT:29],TWO_MEM[BIT:30] on LQSPI_CFG register.
80*056fbc73SJagannadha Sutradharudu Teki	- Operation:
81*056fbc73SJagannadha Sutradharudu Teki		Even bits, i.e. bit 0, 2, 4 ., of a data word is located in the lower memory
82*056fbc73SJagannadha Sutradharudu Teki		and odd bits, i.e. bit 1, 3, 5, ., of a data word is located in the upper memory.
83*056fbc73SJagannadha Sutradharudu Teki
84f77f4691SJagannadha Sutradharudu TekiNote: Technically there is only one CS line from the controller, but
85f77f4691SJagannadha Sutradharudu Tekizynq qspi controller has an internal hw logic to enable additional CS
86f77f4691SJagannadha Sutradharudu Tekiwhen controller is configured for dual memories.
87f77f4691SJagannadha Sutradharudu Teki
88f77f4691SJagannadha Sutradharudu Teki[1] http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf
89f77f4691SJagannadha Sutradharudu Teki
90f77f4691SJagannadha Sutradharudu Teki--
91f77f4691SJagannadha Sutradharudu TekiJagannadha Sutradharudu Teki <jaganna@xilinx.com>
92f77f4691SJagannadha Sutradharudu Teki05-01-2014.
93