NAND/davinci: Fix segfault for hwecc4_infix reads
authorJon Povey <jon.povey@racelogic.co.uk>
Mon, 17 May 2010 07:16:22 +0000 (16:16 +0900)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Tue, 18 May 2010 07:25:03 +0000 (09:25 +0200)
commitdc464ad88e7b7c5e0014a1784edcdb2fdcb448fd
tree00a8f16860d88e33391be33f07e18ca639c0f235
parentfafed75d9831c8038c5504fc94e941f0ee9770e5
NAND/davinci: Fix segfault for hwecc4_infix reads

Page reads using hwecc4_infix layout segfaulted for check_bad_blocks because
the read assumed a valid data buffer, which check_bad_blocks does not use
(it only passes a 6 byte buffer for the start of OOB).

This version copes with undersized or missing data or oob buffers and uses
random read commands within the page to skip unwanted areas of data/OOB for
speed.

NOTE: Running check_bad_blocks with this layout will be reading infix
OOB locations, not manufacturer bad block markers. This means that if you
check blocks written in infix layout they will appear good, but manufacturer-
marked bad blocks may also appear good.
If you want to scan for manufactuer-marked bad blocks, you need to enable
raw_access before running check_bad_blocks, or use the non-infix layout.

Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
CC: David Brownell <dbrownell@users.sourceforge.net>
src/flash/nand/davinci.c