[PATCH] add support to non-uniform SFDP SPI NOR flash memories

From: Tudor Ambarus
Date: Fri Jun 08 2018 - 09:48:33 EST


The commit message became wall-of-text, my feeling is that I heavily
reworked the code so I changed the author. If someone thinks differently,
please say and I'll change back to the initial authorship. What I've done:

- minimize the amount of erase() calls by using the best sequence of erase
type commands depending on alignment.

- build the list of best fitted erase commands to be executed once we
validate that the erase can be performed.

- add improvements on how the erase map is handled. The regions are
consecutive in the address space, walk through the regions incrementally.

- speed up finding the best erase type command. Order erase types by
size, iterate them from the biggest to the smallest and stop when best
fitted command is found.

- determine at init if there are erase types that can erase the entire
memory

- fix the erase size in overlaid regions. S25FS512S states that 'if a sector
erase command is applied to a 256KB range that is overlaid by 4KB secors,
the overlaid 4kB sectors are not affected by the erase'

Backward compatibility test done on MX25L25673G.

Changes since RFC PATCH:
- build a list of erase commands to be executed once we validate
that the erase can be performed
- fix walking through the address space in overlaid regions
- drop wall-of-text description commit message, change author


Tudor Ambarus (1):
mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories

drivers/mtd/spi-nor/spi-nor.c | 357 ++++++++++++++++++++++++++++++++++++++++--
include/linux/mtd/spi-nor.h | 108 +++++++++++++
2 files changed, 451 insertions(+), 14 deletions(-)

--
2.9.4