• Tudor Ambarus's avatar
    mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories · 5390a8df
    Tudor Ambarus authored
    Based on Cyrille Pitchen's patch https://lkml.org/lkml/2017/3/22/935.
    
    This patch is a transitional patch in introducing  the support of
    SFDP SPI memories with non-uniform erase sizes like Spansion s25fs512s.
    Non-uniform erase maps will be used later when initialized based on the
    SFDP data.
    
    Introduce the memory erase map which splits the memory array into one
    or many erase regions. Each erase region supports up to 4 erase types,
    as defined by the JEDEC JESD216B (SFDP) specification.
    
    To be backward compatible, the erase map of uniform SPI NOR flash memories
    is initialized so it contains only one erase region and this erase region
    supports only one erase command. Hence a single size is used to erase any
    sector/block of the memory.
    
    Besides, since the algorithm used to erase sectors on non-uniform SPI NOR
    flash memories is quite expensive, when possible, the erase map is tuned
    to come back to the uniform case.
    
    The 'erase with the best command, move forward and repeat' approach was
    suggested by Cristian Birsan in a brainstorm session, so:
    Suggested-by: default avatarCristian Birsan <cristian.birsan@microchip.com>
    Signed-off-by: default avatarTudor Ambarus <tudor.ambarus@microchip.com>
    Reviewed-by: default avatarMarek Vasut <marek.vasut@gmail.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
    5390a8df
spi-nor.c 101 KB