• Brian Norris's avatar
    mtd: nand: more BB Detection refactoring and dynamic scan options · 58373ff0
    Brian Norris authored
    This is a revision to PATCH 2/2 that I sent. Link:
    http://lists.infradead.org/pipermail/linux-mtd/2010-July/030911.html
    
    Added new flag for scanning of both bytes 1 and 6 of the OOB for
    a BB marker (instead of simply one or the other).
    
    The "check_pattern" and "check_short_pattern" functions were updated
    to include support for scanning the two different locations in the OOB.
    
    In order to handle increases in variety of necessary scanning patterns,
    I implemented dynamic memory allocation of nand_bbt_descr structs
    in new function 'nand_create_default_bbt_descr()'. This replaces
    some increasingly-unwieldy, statically-declared descriptors. It can
    replace several more (e.g. "flashbased" structs). However, I do not
    test the flashbased options personally.
    
    How this was tested:
    
    I referenced 30+ data sheets (covering 100+ parts), and I tested a
    selection of 10 different chips to varying degrees. Particularly, I
    tested the creation of bad-block descriptors and basic BB scanning on
    three parts:
    
    ST NAND04GW3B2D, 2K page
    ST NAND128W3A, 512B page
    Samsung K9F1G08U0A, 2K page
    
    To test these, I wrote some fake bad block markers to the flash (in OOB
    bytes 1, 6, and elsewhere) to see if the scanning routine would detect
    them properly. However, this method was somewhat limited because the
    driver I am using has some bugs in its OOB write functionality.
    Signed-off-by: default avatarBrian Norris <norris@broadcom.com>
    Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    58373ff0
nand_base.c 86.4 KB