Anastasia Klimchuk submitted this change.

View Change



8 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.

Approvals: build bot (Jenkins): Verified Edward O'Callaghan: Looks good to me, approved Nikolai Artemiev: Looks good to me, but someone else must approve
spi25_statusreg: support reading/writing configuration register

One more variation of registers.

This one is read via a separate RDCR command, but written as if it's
SR2 using WRSR_EXT2.

Change-Id: I45f9afcc31f1928ef6263a749596380082963de4
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/66211
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Nikolai Artemiev <nartemiev@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
---
M include/flash.h
M include/spi.h
M spi25_statusreg.c
3 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/include/flash.h b/include/flash.h
index 197c11e..23222c7 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -161,6 +161,9 @@
*/
#define FEATURE_SCUR (1 << 24)

+/* Whether chip has configuration register (RDCR/WRSR_EXT2 commands) */
+#define FEATURE_CFGR (1 << 25)
+
#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)

@@ -196,6 +199,7 @@
STATUS2,
STATUS3,
SECURITY,
+ CONFIG,
MAX_REGISTERS
};

diff --git a/include/spi.h b/include/spi.h
index c77866c..505aecd 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -177,6 +177,11 @@
#define JEDEC_WRSCUR_OUTSIZE 0x01
#define JEDEC_WRSCUR_INSIZE 0x00

+/* Read Configuration Register */
+#define JEDEC_RDCR 0x15
+#define JEDEC_RDCR_OUTSIZE 0x01
+#define JEDEC_RDCR_INSIZE 0x01
+
/* Enter 4-byte Address Mode */
#define JEDEC_ENTER_4_BYTE_ADDR_MODE 0xB7

diff --git a/spi25_statusreg.c b/spi25_statusreg.c
index 2859b23..b178b2e 100644
--- a/spi25_statusreg.c
+++ b/spi25_statusreg.c
@@ -107,6 +107,23 @@
*/
msg_cerr("Cannot write SECURITY: unsupported by design\n");
return 1;
+ case CONFIG:
+ /*
+ * This one is read via a separate command, but written as if it's SR2
+ * in FEATURE_WRSR_EXT2 case of WRSR command.
+ */
+ if (feature_bits & FEATURE_CFGR) {
+ write_cmd[0] = JEDEC_WRSR;
+ if (spi_read_register(flash, STATUS1, &write_cmd[1])) {
+ msg_cerr("Writing CONFIG failed: failed to read SR1 for writeback.\n");
+ return 1;
+ }
+ write_cmd[2] = value;
+ write_cmd_len = 3;
+ break;
+ }
+ msg_cerr("Cannot write CONFIG: unsupported by chip\n");
+ return 1;
default:
msg_cerr("Cannot write register: unknown register\n");
return 1;
@@ -209,6 +226,13 @@
}
msg_cerr("Cannot read SECURITY: unsupported by chip\n");
return 1;
+ case CONFIG:
+ if (feature_bits & FEATURE_CFGR) {
+ read_cmd = JEDEC_RDCR;
+ break;
+ }
+ msg_cerr("Cannot read CONFIG: unsupported by chip\n");
+ return 1;
default:
msg_cerr("Cannot read register: unknown register\n");
return 1;

To view, visit change 66211. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I45f9afcc31f1928ef6263a749596380082963de4
Gerrit-Change-Number: 66211
Gerrit-PatchSet: 10
Gerrit-Owner: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Gerrit-Reviewer: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Nikolai Artemiev <nartemiev@google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: merged