Documentation: add the document for the SPI NOR framework
[pandora-kernel.git] / Documentation / mtd / spi-nor.txt
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.