diff options
author | Bean Huo 霍斌斌 (beanhuo) <beanhuo@micron.com> | 2014-12-17 02:35:45 -0500 |
---|---|---|
committer | Brian Norris <computersforpeace@gmail.com> | 2015-01-07 14:33:22 -0500 |
commit | 548cd3ab54da10f896daa7ca422236847a915734 (patch) | |
tree | b639d9d85db919c3ddfbf4be097cd25ab08f7e87 /include/linux/mtd | |
parent | ed0215cc3b5292fc0f4af70e29dc61fa2d0aa76c (diff) |
mtd: spi-nor: Add quad I/O support for Micron SPI NOR
This patch adds code which enables Quad I/O mode on Micron SPI NOR flashes.
For Micron SPI NOR flash, enabling or disabling quad I/O protocol can be
done By two methods, which are to use EVCR (Enhanced Volatile
Configuration Register) and the ENTER QUAD I/O MODE command. There is no
difference between these two methods. Unfortunately, for some Micron SPI
NOR flashes, there no ENTER Quad I/O command (35h), such as n25q064. But
for all current Micron SPI NOR, if it support quad I/O mode, using EVCR
definitely be supported. It is a recommended method to enable Quad I/O
mode by EVCR, Quad I/O protocol bit 7. When EVCR bit 7 is reset to 0,
the SPI NOR flash will operate in quad I/O mode.
This patch has been tested on N25Q512A and MT25TL256BAA1ESF. Micron SPI
NOR of spi_nor_ids[] table all support this method.
Signed-off-by: Bean Huo <beanhuo@micron.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.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index 63aeccf9ddc8..4720b86ee73d 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h | |||
@@ -56,6 +56,10 @@ | |||
56 | /* Used for Spansion flashes only. */ | 56 | /* Used for Spansion flashes only. */ |
57 | #define SPINOR_OP_BRWR 0x17 /* Bank register write */ | 57 | #define SPINOR_OP_BRWR 0x17 /* Bank register write */ |
58 | 58 | ||
59 | /* Used for Micron flashes only. */ | ||
60 | #define SPINOR_OP_RD_EVCR 0x65 /* Read EVCR register */ | ||
61 | #define SPINOR_OP_WD_EVCR 0x61 /* Write EVCR register */ | ||
62 | |||
59 | /* Status Register bits. */ | 63 | /* Status Register bits. */ |
60 | #define SR_WIP 1 /* Write in progress */ | 64 | #define SR_WIP 1 /* Write in progress */ |
61 | #define SR_WEL 2 /* Write enable latch */ | 65 | #define SR_WEL 2 /* Write enable latch */ |
@@ -67,6 +71,9 @@ | |||
67 | 71 | ||
68 | #define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */ | 72 | #define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */ |
69 | 73 | ||
74 | /* Enhanced Volatile Configuration Register bits */ | ||
75 | #define EVCR_QUAD_EN_MICRON 0x80 /* Micron Quad I/O */ | ||
76 | |||
70 | /* Flag Status Register bits */ | 77 | /* Flag Status Register bits */ |
71 | #define FSR_READY 0x80 | 78 | #define FSR_READY 0x80 |
72 | 79 | ||