linux_dsm_epyc7002/drivers/mtd/chips
Stefan Roese 1648eaaa15 mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking
Currently cfi_cmdset_0002.c does not support PPB locking of sectors. This
patch adds support for this locking/unlocking mechanism. It is needed on
some platforms, since newer U-Boot versions do support this PPB locking
and protect for example their environment sector(s) this way.

This PPB locking/unlocking will be enabled for all devices supported by
cfi_cmdset_0002 reporting 8 in the CFI word 0x49 (Sector Protect/Unprotect
scheme).

Please note that PPB locking does support sector-by-sector locking. But
the whole chip can only be unlocked together. So unlocking one sector
will automatically unlock all sectors of this device. Because of this
chip limitation, the PPB unlocking function saves the current locking
status of all sectors before unlocking the whole device. After unlocking
the saved locking status is re-configured. This way only the addressed
sectors will be unlocked.

To selectively enable this advanced sector protection mechanism, the
device-tree property "use-advanced-sector-protection" has been created.
To enable support for this locking this property needs to be present in the
flash DT node. E.g.:

nor_flash@0,0 {
	compatible = "amd,s29gl256n", "cfi-flash";
	bank-width = <2>;
	use-advanced-sector-protection;
	...

Tested with Spansion S29GL512S10THI and Micron JS28F512M29EWx flash
devices.

Signed-off-by: Stefan Roese <sr@denx.de>
Tested-by: Holger Brunck <holger.brunck@keymile.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2013-02-04 09:27:33 +02:00
..
cfi_cmdset_0001.c mtd: cfi_cmdset_0001: Fix problem with unlocking timeout 2012-09-29 15:29:08 +01:00
cfi_cmdset_0002.c mtd: cfi_cmdset_0002: Support Persistent Protection Bits (PPB) locking 2013-02-04 09:27:33 +02:00
cfi_cmdset_0020.c mtd: move zero length verification to MTD API functions 2012-03-27 00:32:19 +01:00
cfi_probe.c mtd: cfi_cmdset_0002: make sector erase command variable 2010-10-26 11:39:17 +01:00
cfi_util.c mtd: do not duplicate length and offset checks in drivers 2012-03-27 00:28:18 +01:00
chipreg.c mtd: simplify return logic in do_map_probe() 2012-03-27 00:35:06 +01:00
fwh_lock.h mtd: add leading underscore to all mtd functions 2012-03-27 00:20:01 +01:00
gen_probe.c mtd: cfi_cmdset_0002: use AMD standard command-set with Winbond flash chips 2010-05-20 16:57:00 +01:00
jedec_probe.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00
Kconfig mtd: chips: reorganize Kconfig help on swapping 2012-07-06 18:17:07 +01:00
Makefile [MTD] [CHIPS] Remove MTD_OBSOLETE_CHIPS (jedec, amd_flash, sharp) 2007-05-09 13:34:37 +01:00
map_absent.c mtd: remove retlen zeroing duplication 2012-03-27 00:29:34 +01:00
map_ram.c mtd: remove R/O checking duplication 2012-03-27 00:29:11 +01:00
map_rom.c mtd: remove R/O checking duplication 2012-03-27 00:29:11 +01:00