• Brian Norris's avatar
    mtd: nand: fix Samsung SLC NAND identification regression · bc86cf7a
    Brian Norris authored
    A combination of the following two commits caused a regression in 3.7-rc1
    when identifying some Samsung NAND, so that some previously working NAND
    were no longer detected properly:
    
        commit e3b88bd6
        mtd: nand: add generic READ ID length calculation functions
    
        commit e2d3a35e
        mtd: nand: detect Samsung K9GBG08U0A, K9GAG08U0F ID
    
    Particularly, a regression was seen on Samsung K9F2G08U0B, with the
    following full 8-byte READ ID string:
    
        ec da 10 95 44 00 ec da
    
    The basic problem is that Samsung manufactures both SLC and MLC NAND
    that use a non-standard decoding table for deriving information from
    their IDs. I have heuristically determined that all the chips that use
    the new table have ID strings which wrap around after the 6th byte.
    Unfortunately, I overlooked the fact that some older Samsung SLC (which
    use a different decoding table) have "5 byte ID strings" which also wrap
    around after the 6th byte.
    
    This patch re-introduces a distinction between these old and new Samsung
    NAND by checking that the 6th byte is non-zero, allowing both old and
    new Samsung NAND to be detected properly.
    Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
    Tested-by: default avatarBrian Norris <computersforpeace@gmail.com>
    Reported-by: default avatarMarek Vasut <marex@denx.de>
    Tested-by: default avatarMarek Vasut <marex@denx.de>
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    bc86cf7a
nand_base.c 96.8 KB