aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mtd
diff options
context:
space:
mode:
authorHuang Shijie <b32955@freescale.com>2014-02-24 05:37:35 -0500
committerBrian Norris <computersforpeace@gmail.com>2014-04-14 14:22:57 -0400
commitf39d2fa0122e6abd8505a3598f3aa535d0d5aade (patch)
tree353647090f5573b2fab9f26747be9a1d2a5cbf1a /include/linux/mtd
parentc9eaa447e77efe77b7fa4c953bd62de8297fd6c5 (diff)
mtd: spi-nor: copy the SPI NOR commands to a new header file
This patch adds a new header :spi-nor.h, and copies all the SPI NOR commands and relative macros into this new header. This hearder can be used by the m25p80.c and other spi-nor controller, such as Freescale's Quadspi. Signed-off-by: Huang Shijie <b32955@freescale.com> Acked-by: Marek Vasut <marex@denx.de> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Diffstat (limited to 'include/linux/mtd')
-rw-r--r--include/linux/mtd/spi-nor.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
new file mode 100644
index 000000000000..483fc2a086c4
--- /dev/null
+++ b/include/linux/mtd/spi-nor.h
@@ -0,0 +1,55 @@
1#ifndef __LINUX_MTD_SPI_NOR_H
2#define __LINUX_MTD_SPI_NOR_H
3
4/* Flash opcodes. */
5#define OPCODE_WREN 0x06 /* Write enable */
6#define OPCODE_RDSR 0x05 /* Read status register */
7#define OPCODE_WRSR 0x01 /* Write status register 1 byte */
8#define OPCODE_NORM_READ 0x03 /* Read data bytes (low frequency) */
9#define OPCODE_FAST_READ 0x0b /* Read data bytes (high frequency) */
10#define OPCODE_DUAL_READ 0x3b /* Read data bytes (Dual SPI) */
11#define OPCODE_QUAD_READ 0x6b /* Read data bytes (Quad SPI) */
12#define OPCODE_PP 0x02 /* Page program (up to 256 bytes) */
13#define OPCODE_BE_4K 0x20 /* Erase 4KiB block */
14#define OPCODE_BE_4K_PMC 0xd7 /* Erase 4KiB block on PMC chips */
15#define OPCODE_BE_32K 0x52 /* Erase 32KiB block */
16#define OPCODE_CHIP_ERASE 0xc7 /* Erase whole flash chip */
17#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
18#define OPCODE_RDID 0x9f /* Read JEDEC ID */
19#define OPCODE_RDCR 0x35 /* Read configuration register */
20
21/* 4-byte address opcodes - used on Spansion and some Macronix flashes. */
22#define OPCODE_NORM_READ_4B 0x13 /* Read data bytes (low frequency) */
23#define OPCODE_FAST_READ_4B 0x0c /* Read data bytes (high frequency) */
24#define OPCODE_DUAL_READ_4B 0x3c /* Read data bytes (Dual SPI) */
25#define OPCODE_QUAD_READ_4B 0x6c /* Read data bytes (Quad SPI) */
26#define OPCODE_PP_4B 0x12 /* Page program (up to 256 bytes) */
27#define OPCODE_SE_4B 0xdc /* Sector erase (usually 64KiB) */
28
29/* Used for SST flashes only. */
30#define OPCODE_BP 0x02 /* Byte program */
31#define OPCODE_WRDI 0x04 /* Write disable */
32#define OPCODE_AAI_WP 0xad /* Auto address increment word program */
33
34/* Used for Macronix and Winbond flashes. */
35#define OPCODE_EN4B 0xb7 /* Enter 4-byte mode */
36#define OPCODE_EX4B 0xe9 /* Exit 4-byte mode */
37
38/* Used for Spansion flashes only. */
39#define OPCODE_BRWR 0x17 /* Bank register write */
40
41/* Status Register bits. */
42#define SR_WIP 1 /* Write in progress */
43#define SR_WEL 2 /* Write enable latch */
44/* meaning of other SR_* bits may differ between vendors */
45#define SR_BP0 4 /* Block protect 0 */
46#define SR_BP1 8 /* Block protect 1 */
47#define SR_BP2 0x10 /* Block protect 2 */
48#define SR_SRWD 0x80 /* SR write protect */
49
50#define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */
51
52/* Configuration Register bits. */
53#define CR_QUAD_EN_SPAN 0x2 /* Spansion Quad I/O */
54
55#endif