Blame view

doc/SPI/README.dual-flash 4 KB
f77f46911   Jagannadha Sutradharudu Teki   sf: Add dual memo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  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.
056fbc73d   Jagannadha Sutradharudu Teki   sf: Add dual memo...
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  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.
f77f46911   Jagannadha Sutradharudu Teki   sf: Add dual memo...
82
83
84
85
86
87
88
89
90
  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.