diff options
author | Sergii Dmytruk <sergii.dmytruk@3mdeb.com> | 2021-11-27 15:14:27 +0200 |
---|---|---|
committer | Anastasia Klimchuk <aklm@chromium.org> | 2022-11-19 06:54:20 +0000 |
commit | f32f5e31d99531ee61bd31c64f41cc4baee68d57 (patch) | |
tree | 9bbd6bd0081abf32038f38c658018d54a121d8b1 /include/flash.h | |
parent | ed351cc602e5f21a47ad3f06696a7fe72e82c198 (diff) | |
download | flashrom-f32f5e31d99531ee61bd31c64f41cc4baee68d57.tar.gz flashrom-f32f5e31d99531ee61bd31c64f41cc4baee68d57.tar.bz2 flashrom-f32f5e31d99531ee61bd31c64f41cc4baee68d57.zip |
spi25_statusreg.c: support reading security register
Not to be confused with "secure registers" of OTP.
Security register is a dedicated status register for security-related
bits. You don't write its value directly, issuing special write commands
with no data set separate OTP bits to 1 automatically (WRSCUR, WPSEL
commands). No WREN is necessary, but at least some datasheets indicate
BUSY state after those write commands.
Unlike cases where OTP bit is part of SR and can only be written while
in OTP mode, security register can only be written outside of the mode.
The register is found in at least these chips by Macronix:
* MX25L6436E
* MX25L6445E
* MX25L6465E
* MX25L6473E
Change-Id: Iae1753ca4cb051127a5bcbeba7f064053adb8dae
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/59709
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Nikolai Artemiev <nartemiev@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'include/flash.h')
-rw-r--r-- | include/flash.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/flash.h b/include/flash.h index ea8e25b8..197c11ea 100644 --- a/include/flash.h +++ b/include/flash.h @@ -155,6 +155,12 @@ enum write_granularity { #define FEATURE_WRSR_EXT3 ((1 << 22) | FEATURE_WRSR_EXT2) #define FEATURE_WRSR3 (1 << 23) +/* + * Whether chip has security register (RDSCUR/WRSCUR commands). + * Not to be confused with "secure registers" of OTP. + */ +#define FEATURE_SCUR (1 << 24) + #define ERASED_VALUE(flash) (((flash)->chip->feature_bits & FEATURE_ERASED_ZERO) ? 0x00 : 0xff) #define UNERASED_VALUE(flash) (((flash)->chip->feature_bits & FEATURE_ERASED_ZERO) ? 0xff : 0x00) @@ -189,6 +195,7 @@ enum flash_reg { STATUS1, STATUS2, STATUS3, + SECURITY, MAX_REGISTERS }; |