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 <sergii.dmytruk@3mdeb.com>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/68179
Original-Reviewed-by: Nico Huber <nico.h@gmx.de>
Original-Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71000
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/cli_common.c b/cli_common.c
index 9375859..5373585 100644
--- a/cli_common.c
+++ b/cli_common.c
@@ -35,12 +35,14 @@
 	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 @@
 				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 @@
 				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/flash.h b/flash.h
index 41d8b97..753b46e 100644
--- a/flash.h
+++ b/flash.h
@@ -162,17 +162,19 @@
 	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 occurences. */
@@ -232,6 +234,7 @@
 		enum test_state read;
 		enum test_state erase;
 		enum test_state write;
+		enum test_state wp;
 	} tested;
 
 	/*
diff --git a/libflashrom.h b/libflashrom.h
index c35f331..2570362 100644
--- a/libflashrom.h
+++ b/libflashrom.h
@@ -58,6 +58,7 @@
 		enum flashrom_test_state read;
 		enum flashrom_test_state erase;
 		enum flashrom_test_state write;
+		enum flashrom_test_state wp;
 	} tested;
 };