[flashrom] [PATCH 4/8] ichspi: improve prettyprint_opcodes

Stefan Tauner stefan.tauner at student.tuwien.ac.at
Sat Aug 20 12:39:44 CEST 2011


add headers for the columns and some decoding into human readable format.

---
before:
[…]
Reading OPCODES... done
preop0=0x06, preop1=0x50
op[0]=0x02, 3, 0
op[1]=0x03, 2, 0
op[2]=0x20, 3, 0
op[3]=0x05, 0, 0
op[4]=0x9f, 0, 1
op[5]=0x20, 1, 2
op[6]=0x01, 1, 0
op[7]=0x06, 0, 0

SPI Read Configuration: prefetching disabled, caching enabled, OK.
This chipset supports the following protocols: FWH, SPI.
[…]

after:
[…]
Reading OPCODES... done
        OP        Type      Pre-OP
op[0]: 0x02, write w/  addr, none
op[1]: 0x03, read  w/  addr, none
op[2]: 0x20, write w/  addr, none
op[3]: 0x05, read  w/o addr, none
op[4]: 0x9f, read  w/o addr, none
op[5]: 0x20, write w/o addr,  1
op[6]: 0x01, write w/o addr,  2
op[7]: 0x06, read  w/o addr, none
Pre-OP 0: 0x06, Pre-OP 1: 0x50

SPI Read Configuration: prefetching disabled, caching enabled, OK.
This chipset supports the following protocols: FWH, SPI.
[…]

i could also print the preops directly in the preop column instead of
using that redirection. but i think as debug output it is better to
know the index of the two preops too.

side note: does it make sense to create an opcode -> string decoder
for flashrom-wide usage in user output (in spi25.c)?
an erase opcode -> function pointer decoder is used in sfdp, that could
also be generalized like that.

Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
---
 ichspi.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/ichspi.c b/ichspi.c
index d51a6b2..2e25d34 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -294,22 +294,34 @@ static OPCODES O_EXISTING = {};
 /* pretty printing functions */
 static void prettyprint_opcodes(OPCODES *ops)
 {
-	if(ops == NULL)
-		return;
-
-	msg_pdbg("preop0=0x%02x, preop1=0x%02x\n", ops->preop[0],
-		 ops->preop[1]);
-
 	OPCODE oc;
+	const char *t;
+	const char *a;
 	uint8_t i;
+	static const char *const spi_type[4] = {
+		"read  w/o addr",
+		"write w/o addr",
+		"read  w/  addr",
+		"write w/  addr"
+	};
+	static const char *const atomic_type[3] = {
+		"none",
+		" 0  ",
+		" 1  "
+	};
+
+	if (ops == NULL)
+		return;
+
+	msg_pdbg("        OP        Type      Pre-OP\n");
 	for (i = 0; i < 8; i++) {
 		oc = ops->opcode[i];
-		msg_pdbg("op[%d]=0x%02x, %d, %d\n",
-			 i,
-			 oc.opcode,
-			 oc.spi_type,
-			 oc.atomic);
+		t = (oc.spi_type > 3) ? "invalid" : spi_type[oc.spi_type];
+		a = (oc.atomic > 2) ? "invalid" : atomic_type[oc.atomic];
+		msg_pdbg("op[%d]: 0x%02x, %s, %s\n", i, oc.opcode, t, a);
 	}
+	msg_pdbg("Pre-OP 0: 0x%02x, Pre-OP 1: 0x%02x\n", ops->preop[0],
+		 ops->preop[1]);
 }
 
 #define pprint_reg(reg, bit, val, sep) msg_pdbg("%s=%d" sep, #bit, (val & reg##_##bit)>>reg##_##bit##_OFF)
-- 
1.7.1





More information about the flashrom mailing list