android_kernel_motorola_sm6225/drivers/mtd/devices
Brian Norris eedeac3ce9 mtd: m25p80: Micron SPI uses Macronix-style 4-byte addressing
For SPI NOR flash that are larger than 128Mbit (16MiB), we need 4 bytes
of address space to reach the entire flash; however, the original SPI
flash protocol used only 3 bytes for the address. So far, the practice
for handling this has been either to use new command opcodes that are
defined to use 4 bytes for their address, or to use special
mode-switching command to configure all traditionally-3-byte-address
commands to take 4 bytes instead.

Macronix and Spansion developed two incompatible methods for
entering/exiting "4-byte address mode." Micron flash uses the Macronix
method (OPCODE_{EN4B,EX4B}), not the Spansion method.

This patch solves addressing issues on Micron n25q256a and provides the
ability to support other future Micron SPI flash >16MiB.

Quoting a Micron representative:

  "Majority of our NOR that needs 4-byte addressing (256Mb or 32MB and
   higher) enter and exit 4byte through B7h and E9h commands. The
   N25Q256A7xxx and N25Q512A7xxx parts do not support 4-byte addressing
   mode via B7h or E9h command."

They further clarified that those that don't support the enter/exit
opcodes (B7h/E9h) are manufactured specifically to come up by default in
4-byte mode. We don't need to treat those parts any diffently, as they
will discard the EN4B opcode as a no-op.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Acked-by: Marek Vasut <marex@denx.de>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2013-08-30 21:41:28 +01:00
..
bcm47xxsflash.c mtd: bcm47xxsflash: implement polling chip status 2013-08-05 18:20:54 +01:00
bcm47xxsflash.h mtd: bcm47xxsflash: implement ChipCommon R/W ops 2013-08-05 18:20:32 +01:00
block2mtd.c mtd: Convert logging messages 2013-08-05 20:47:17 +01:00
docg3.c mtd: doc: use module_platform_driver_probe() 2013-04-05 13:14:24 +01:00
docg3.h mtd: docg3 add protection against concurrency 2012-03-27 01:03:27 +01:00
elm.c mtd: simplify use of devm_ioremap_resource 2013-08-30 21:36:15 +01:00
Kconfig mtd: diskonchip: remove unused entries in Kconfig 2013-08-05 21:01:55 +01:00
lart.c mtd: move zero length verification to MTD API functions 2012-03-27 00:32:19 +01:00
m25p80.c mtd: m25p80: Micron SPI uses Macronix-style 4-byte addressing 2013-08-30 21:41:28 +01:00
Makefile mtd: doc: remove support for DoC 2000/2001/2001+ 2013-04-05 12:04:31 +01:00
ms02-nv.c mtd: do not duplicate length and offset checks in drivers 2012-03-27 00:28:18 +01:00
ms02-nv.h MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
mtd_dataflash.c mtd: devices: use dev_get_platdata() 2013-08-30 21:34:31 +01:00
mtdram.c mtd: harmonize mtd_point interface implementation 2012-03-27 00:32:11 +01:00
phram.c mtd: phram: fix section mismatch for phram_setup 2012-03-27 01:02:29 +01:00
pmc551.c MTD merge for 3.4 2012-03-30 17:31:56 -07:00
slram.c mtd: slram: invalid checking of absolute end address 2012-11-09 17:02:50 +02:00
spear_smi.c mtd: devices: spear_smi: remove unnecessary platform_set_drvdata() 2013-08-05 20:59:11 +01:00
sst25l.c mtd: devices: use dev_get_platdata() 2013-08-30 21:34:31 +01:00