| SPI NOR framework |
| ============================================ |
| |
| Part I - why we need this framework? |
| ------------------------------------- |
| |
| The SPI bus controller only deals with the byte stream. |
| Some controller does not works like a SPI bus controller, it works |
| like a SPI NOR controller instead, such as the Freescale's QuadSPI controller. |
| |
| The Freescale's QuadSPI controller should know the NOR commands to |
| find the right LUT sequence. Unfortunately, the old code can not meet |
| this requirement. |
| |
| Part II - How does the framework work? |
| ------------------------------------- |
| |
| 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 |
| m25p80 code anymore. |
| |
| Before this framework, the layer is like: |
| |
| MTD |
| ------------------------ |
| m25p80 |
| ------------------------ |
| SPI bus driver |
| ------------------------ |
| SPI NOR chip |
| |
| After this framework, the layer is like: |
| MTD |
| ------------------------ |
| SPI NOR framework |
| ------------------------ |
| m25p80 |
| ------------------------ |
| SPI bus driver |
| ------------------------ |
| SPI NOR chip |
| |
| With the SPI NOR controller driver(Freescale QuadSPI), it looks like: |
| MTD |
| ------------------------ |
| SPI NOR framework |
| ------------------------ |
| fsl-quadSPI |
| ------------------------ |
| SPI NOR chip |
| |
| Part III - How can the drivers use the framework |
| ------------------------------------- |
| |
| The main API is the spi_nor_scan(). Before you call the hook, you should |
| initialize the necessary fields for spi_nor{}. |
| Please see the drivers/mtd/spi-nor/spi-nor.c for detail. |
| Please also reference to the fsl-quadspi.c when you want to write a new driver |
| for a SPI NOR controller. |