]> asedeno.scripts.mit.edu Git - linux.git/commit
mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories
authorTudor Ambarus <tudor.ambarus@microchip.com>
Tue, 11 Sep 2018 15:40:06 +0000 (18:40 +0300)
committerBoris Brezillon <boris.brezillon@bootlin.com>
Mon, 8 Oct 2018 19:28:26 +0000 (21:28 +0200)
commit5390a8df769ec9ba9c995191bb0867430f602ebb
tree7dfd9e8004656108f640dad34128c6c2aa99a633
parent5b394b2ddf0347bef56e50c69a58773c94343ff3
mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories

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: Cristian Birsan <cristian.birsan@microchip.com>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
drivers/mtd/spi-nor/spi-nor.c
include/linux/mtd/spi-nor.h