[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