Commit 254592db authored by Brian Norris's avatar Brian Norris

Documentation: spi-nor: rewrite some portions

Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
Reviewed-by: default avatarMarek Vasut <marex@denx.de>
parent 58b89a1f
SPI NOR framework SPI NOR framework
============================================ ============================================
Part I - why we need this framework? Part I - Why do we need this framework?
------------------------------------- ---------------------------------------
The SPI bus controller only deals with the byte stream. SPI bus controllers (drivers/spi/) only deal with streams of bytes; the bus
Some controller does not works like a SPI bus controller, it works controller operates agnostic of the specific device attached. However, some
like a SPI NOR controller instead, such as the Freescale's QuadSPI controller. controllers (such as Freescale's QuadSPI controller) cannot easily handle
arbitrary streams of bytes, but rather are designed specifically for SPI NOR.
The Freescale's QuadSPI controller should know the NOR commands to In particular, Freescale's QuadSPI controller must know the NOR commands to
find the right LUT sequence. Unfortunately, the old code can not meet find the right LUT sequence. Unfortunately, the SPI subsystem has no notion of
this requirement. opcodes, addresses, or data payloads; a SPI controller simply knows to send or
receive bytes (Tx and Rx). Therefore, we must define a new layering scheme under
which the controller driver is aware of the opcodes, addressing, and other
details of the SPI NOR protocol.
Part II - How does the framework work? Part II - How does the framework work?
------------------------------------- --------------------------------------
This framework just adds a new layer between the MTD and the SPI bus driver. This framework just adds a new layer between the MTD and the SPI bus driver.
With this new layer, the SPI NOR controller driver does not depend on the With this new layer, the SPI NOR controller driver does not depend on the
...@@ -40,7 +44,7 @@ m25p80 code anymore. ...@@ -40,7 +44,7 @@ m25p80 code anymore.
------------------------ ------------------------
SPI NOR chip SPI NOR chip
With the SPI NOR controller driver(Freescale QuadSPI), it looks like: With the SPI NOR controller driver (Freescale QuadSPI), it looks like:
MTD MTD
------------------------ ------------------------
SPI NOR framework SPI NOR framework
...@@ -49,11 +53,10 @@ m25p80 code anymore. ...@@ -49,11 +53,10 @@ m25p80 code anymore.
------------------------ ------------------------
SPI NOR chip SPI NOR chip
Part III - How can the drivers use the framework Part III - How can drivers use the framework?
------------------------------------- ---------------------------------------------
The main API is the spi_nor_scan(). Before you call the hook, you should The main API is spi_nor_scan(). Before you call the hook, a driver should
initialize the necessary fields for spi_nor{}. initialize the necessary fields for spi_nor{}. Please see
Please see the drivers/mtd/spi-nor/spi-nor.c for detail. drivers/mtd/spi-nor/spi-nor.c for detail. Please also refer to fsl-quadspi.c
Please also reference to the fsl-quadspi.c when you want to write a new driver when you want to write a new driver for a SPI NOR controller.
for a SPI NOR controller.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment