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