• Kevin Cernekee's avatar
    mtd: nand: extend NAND flash detection to new MLC chips · 426c457a
    Kevin Cernekee authored
    Some of the newer MLC devices have a 6-byte ID sequence in which
    several field definitions differ from older chips in a manner that is
    not backward compatible.  For instance:
    
    Samsung K9GAG08U0M (5-byte sequence): ec d5 14 b6 74
    4th byte, bits 1:0 encode the page size: 0=1KiB, 1=2KiB, 2=4KiB, 3=8KiB
    4th byte, bits 5:4 encode the block size: 0=64KiB, 1=128KiB, ...
    4th byte, bit 6 encodes the OOB size: 0=8B/512B, 1=16B/512B
    
    Samsung K9GAG08U0D (6-byte sequence): ec d5 94 29 34 41
    4th byte, bits 1:0 encode the page size: 0=2KiB, 1=4KiB, 3=8KiB, 4=rsvd
    4th byte, bits 7;5:4 encode the block size: 0=128KiB, 1=256KiB, ...
    4th byte, bits 6;3:2 encode the OOB size: 1=128B/page, 2=218B/page
    
    This patch uses the new 6-byte scheme if the following conditions are
    all true:
    
    1) The ID code wraps around after exactly 6 bytes
    
    2) Manufacturer is Samsung
    
    3) 6th byte is zero
    
    The patch also extends the maximum OOB size from 128B to 256B.
    Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    426c457a
nand_base.c 85 KB