nand: omap2: Add support for flash-based bad block table
authorEzequiel García <ezequiel@vanguardiasur.com.ar>
Thu, 11 Sep 2014 15:02:08 +0000 (12:02 -0300)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 17 Sep 2014 08:02:48 +0000 (01:02 -0700)
commitfef775caa705255358cdf7bbaf9bbc2fd1111761
treeed080f0f7c339f4b51cbc3e19fa98b73c161c4a3
parent2d405ec5fdd5b6848beb820301d4fcaa3e2c4159
nand: omap2: Add support for flash-based bad block table

This commit adds a new platform-data boolean property that enables use
of a flash-based bad block table. This can also be enabled by setting
the 'nand-on-flash-bbt' devicetree property.

If the flash BBT is not enabled, the driver falls back to use OOB
bad block markers only, as before. If the flash BBT is enabled the
kernel will keep track of bad blocks using a BBT, in addition to
the OOB markers.

As explained by Brian Norris the reasons for using a BBT are:

""
The primary reason would be that NAND datasheets specify it these days.
A better argument is that nobody guarantees that you can write a
bad block marker to a worn out block; you may just get program failures.

This has been acknowledged by several developers over the last several
years.

Additionally, you get a boot-time performance improvement if you only
have to read a few pages, instead of a page or two from every block on
the flash.
""

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
arch/arm/mach-omap2/gpmc.c
drivers/mtd/nand/omap2.c
include/linux/platform_data/mtd-nand-omap2.h