Huang Shijie | 1ef3910 | 2014-02-28 15:58:00 +0800 | [diff] [blame^] | 1 | SPI NOR framework |
| 2 | ============================================ |
| 3 | |
| 4 | Part I - why we need this framework? |
| 5 | ------------------------------------- |
| 6 | |
| 7 | The SPI bus controller only deals with the byte stream. |
| 8 | Some controller does not works like a SPI bus controller, it works |
| 9 | like a SPI NOR controller instead, such as the Freescale's QuadSPI controller. |
| 10 | |
| 11 | The Freescale's QuadSPI controller should know the NOR commands to |
| 12 | find the right LUT sequence. Unfortunately, the old code can not meet |
| 13 | this requirement. |
| 14 | |
| 15 | Part II - How does the framework work? |
| 16 | ------------------------------------- |
| 17 | |
| 18 | This framework just adds a new layer between the MTD and the SPI bus driver. |
| 19 | With this new layer, the SPI NOR controller driver does not depend on the |
| 20 | m25p80 code anymore. |
| 21 | |
| 22 | Before this framework, the layer is like: |
| 23 | |
| 24 | MTD |
| 25 | ------------------------ |
| 26 | m25p80 |
| 27 | ------------------------ |
| 28 | SPI bus driver |
| 29 | ------------------------ |
| 30 | SPI NOR chip |
| 31 | |
| 32 | After this framework, the layer is like: |
| 33 | MTD |
| 34 | ------------------------ |
| 35 | SPI NOR framework |
| 36 | ------------------------ |
| 37 | m25p80 |
| 38 | ------------------------ |
| 39 | SPI bus driver |
| 40 | ------------------------ |
| 41 | SPI NOR chip |
| 42 | |
| 43 | With the SPI NOR controller driver(Freescale QuadSPI), it looks like: |
| 44 | MTD |
| 45 | ------------------------ |
| 46 | SPI NOR framework |
| 47 | ------------------------ |
| 48 | fsl-quadSPI |
| 49 | ------------------------ |
| 50 | SPI NOR chip |
| 51 | |
| 52 | Part III - How can the drivers use the framework |
| 53 | ------------------------------------- |
| 54 | |
| 55 | The main API is the spi_nor_scan(). Before you call the hook, you should |
| 56 | initialize the necessary fields for spi_nor{}. |
| 57 | Please see the drivers/mtd/spi-nor/spi-nor.c for detail. |
| 58 | Please also reference to the fsl-quadspi.c when you want to write a new driver |
| 59 | for a SPI NOR controller. |