linux_dsm_epyc7002/drivers/mtd/spi-nor
Brian Norris 62593cf40b mtd: spi-nor: refactor block protection functions
This code was a bit sloppy, would produce a lot of copy-and-paste, and
did not always provide a sensible interface:

 * It didn't validate the length for LOCK and the offset for UNLOCK, so
   we were essentially discarding half of the user-supplied data and
   assuming what they wanted to lock/unlock
 * It didn't do very good error checking
 * It didn't make use of the fact that this operation works on
   power-of-two dimensions

So, rewrite this to do proper bit arithmetic rather than a bunch of
hard-coded condition tables. Now we have:

 * More comments on how this was derived
 * Notes on what is (and isn't) supported
 * A more exendible function, so we could add support for other
   protection ranges
 * More accurate locking - e.g., suppose the top quadrant is locked (75%
   to 100%); then in the following cases, case (a) will succeed but (b)
   will not (return -EINVAL):
     (a) user requests lock 3rd quadrant (50% to 75%)
     (b) user requests lock 3rd quadrant, minus a few blocks (e.g., 50%
         to 73%)
   Case (b) *should* fail, since we'd have to lock blocks that weren't
   requested. But the old implementation didn't know the difference and
   would lock the entire second half (50% to 100%)

This refactoring work will also help enable the addition of
mtd_is_locked() support and potentially the support of bottom boot
protection (TB=1).

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2015-10-13 18:22:54 -07:00
..
fsl-quadspi.c mtd: spi-nor: Zap unneeded write_enable from write_reg 2015-09-11 16:04:55 -07:00
Kconfig mtd: spi-nor: Improve Kconfig help text for SPI_FSL_QUADSPI 2015-08-14 11:22:56 -07:00
Makefile mtd: spi-nor: add driver for NXP SPI Flash Interface (SPIFI) 2015-08-14 11:22:55 -07:00
nxp-spifi.c mtd: spi-nor: Zap unneeded write_enable from write_reg 2015-09-11 16:04:55 -07:00
spi-nor.c mtd: spi-nor: refactor block protection functions 2015-10-13 18:22:54 -07:00