From 5f3d3fad3ccbaa366ccd9bc9a743bdf5a9500b5f Mon Sep 17 00:00:00 2001 From: Sergii Dmytruk Date: Thu, 6 Oct 2022 15:17:52 +0300 Subject: flash.h: extend `struct tested` with .wp field Using "B" letter for "block protection" in TEST_* macros. Ticket: https://ticket.coreboot.org/issues/377 Change-Id: I791400889159bc6f305fb05f3e2dd9a90dbe18a4 Signed-off-by: Sergii Dmytruk Reviewed-on: https://review.coreboot.org/c/flashrom/+/68179 Reviewed-by: Nico Huber Reviewed-by: Anastasia Klimchuk Tested-by: build bot (Jenkins) --- cli_common.c | 13 ++++++++++--- include/flash.h | 21 ++++++++++++--------- include/libflashrom.h | 1 + 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/cli_common.c b/cli_common.c index 93758590..53735856 100644 --- a/cli_common.c +++ b/cli_common.c @@ -35,12 +35,14 @@ void print_chip_support_status(const struct flashchip *chip) if ((chip->tested.probe == BAD) || (chip->tested.probe == NT) || (chip->tested.read == BAD) || (chip->tested.read == NT) || (chip->tested.erase == BAD) || (chip->tested.erase == NT) || - (chip->tested.write == BAD) || (chip->tested.write == NT)){ + (chip->tested.write == BAD) || (chip->tested.write == NT) || + (chip->tested.wp == BAD) || (chip->tested.wp == NT)){ msg_cinfo("===\n"); if ((chip->tested.probe == BAD) || (chip->tested.read == BAD) || (chip->tested.erase == BAD) || - (chip->tested.write == BAD)) { + (chip->tested.write == BAD) || + (chip->tested.wp == BAD)) { msg_cinfo("This flash part has status NOT WORKING for operations:"); if (chip->tested.probe == BAD) msg_cinfo(" PROBE"); @@ -50,12 +52,15 @@ void print_chip_support_status(const struct flashchip *chip) msg_cinfo(" ERASE"); if (chip->tested.write == BAD) msg_cinfo(" WRITE"); + if (chip->tested.wp == BAD) + msg_cinfo(" WP"); msg_cinfo("\n"); } if ((chip->tested.probe == NT) || (chip->tested.read == NT) || (chip->tested.erase == NT) || - (chip->tested.write == NT)) { + (chip->tested.write == NT) || + (chip->tested.wp == NT)) { msg_cinfo("This flash part has status UNTESTED for operations:"); if (chip->tested.probe == NT) msg_cinfo(" PROBE"); @@ -65,6 +70,8 @@ void print_chip_support_status(const struct flashchip *chip) msg_cinfo(" ERASE"); if (chip->tested.write == NT) msg_cinfo(" WRITE"); + if (chip->tested.wp == NT) + msg_cinfo(" WP"); msg_cinfo("\n"); } msg_cinfo("The test status of this chip may have been updated in the latest development\n" diff --git a/include/flash.h b/include/flash.h index cd7f994f..633601db 100644 --- a/include/flash.h +++ b/include/flash.h @@ -165,17 +165,19 @@ enum test_state { NA, /* Not applicable (e.g. write support on ROM chips) */ }; -#define TEST_UNTESTED (struct tested){ .probe = NT, .read = NT, .erase = NT, .write = NT } +#define TEST_UNTESTED (struct tested){ .probe = NT, .read = NT, .erase = NT, .write = NT, .wp = NT } -#define TEST_OK_PROBE (struct tested){ .probe = OK, .read = NT, .erase = NT, .write = NT } -#define TEST_OK_PR (struct tested){ .probe = OK, .read = OK, .erase = NT, .write = NT } -#define TEST_OK_PRE (struct tested){ .probe = OK, .read = OK, .erase = OK, .write = NT } -#define TEST_OK_PREW (struct tested){ .probe = OK, .read = OK, .erase = OK, .write = OK } +#define TEST_OK_PROBE (struct tested){ .probe = OK, .read = NT, .erase = NT, .write = NT, .wp = NT } +#define TEST_OK_PR (struct tested){ .probe = OK, .read = OK, .erase = NT, .write = NT, .wp = NT } +#define TEST_OK_PRE (struct tested){ .probe = OK, .read = OK, .erase = OK, .write = NT, .wp = NT } +#define TEST_OK_PREW (struct tested){ .probe = OK, .read = OK, .erase = OK, .write = OK, .wp = NT } +#define TEST_OK_PREWB (struct tested){ .probe = OK, .read = OK, .erase = OK, .write = OK, .wp = OK } -#define TEST_BAD_PROBE (struct tested){ .probe = BAD, .read = NT, .erase = NT, .write = NT } -#define TEST_BAD_PR (struct tested){ .probe = BAD, .read = BAD, .erase = NT, .write = NT } -#define TEST_BAD_PRE (struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = NT } -#define TEST_BAD_PREW (struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = BAD } +#define TEST_BAD_PROBE (struct tested){ .probe = BAD, .read = NT, .erase = NT, .write = NT, .wp = NT } +#define TEST_BAD_PR (struct tested){ .probe = BAD, .read = BAD, .erase = NT, .write = NT, .wp = NT } +#define TEST_BAD_PRE (struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = NT, .wp = NT } +#define TEST_BAD_PREW (struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = BAD, .wp = NT } +#define TEST_BAD_PREWB (struct tested){ .probe = BAD, .read = BAD, .erase = BAD, .write = BAD, .wp = BAD } struct flashrom_flashctx; #define flashctx flashrom_flashctx /* TODO: Agree on a name and convert all occurrences. */ @@ -235,6 +237,7 @@ struct flashchip { enum test_state read; enum test_state erase; enum test_state write; + enum test_state wp; } tested; /* diff --git a/include/libflashrom.h b/include/libflashrom.h index 21a5785f..9bbdcc5d 100644 --- a/include/libflashrom.h +++ b/include/libflashrom.h @@ -121,6 +121,7 @@ struct flashrom_flashchip_info { enum flashrom_test_state read; enum flashrom_test_state erase; enum flashrom_test_state write; + enum flashrom_test_state wp; } tested; }; -- cgit v1.2.3