On Fri, 1 Apr 2011 14:33:19 +0200 Stefan Tauner stefan.tauner@student.tuwien.ac.at wrote:
diff --git a/ichspi.c b/ichspi.c index b24b6a0..0ad4f20 100644 --- a/ichspi.c +++ b/ichspi.c ... @@ -974,7 +973,19 @@ int ich_spi_send_command(unsigned int writecnt, unsigned int readcnt, result = run_opcode(*opcode, addr, count, data); if (result) {
msg_pdbg("run OPCODE 0x%02x failed\n",
opcode->opcode);
msg_pdbg("run OPCODE 0x%02x failed at address
0x%06x.\n",
opcode->opcode, addr);
/* Print out the data array if it contains data to
write.
* Errors are detected before the received data is
read back into
* the array so it won't make sense to print it
then. */
if (((opcode->spi_type ==
SPI_OPCODE_TYPE_WRITE_WITH_ADDRESS) ||
(opcode->spi_type ==
SPI_OPCODE_TYPE_WRITE_NO_ADDRESS))) {
msg_pspew("The data was:\n");
uint8_t i;
for(i=0; i<count; i++){
msg_pspew("%3d: 0x%02x\n", i,
data[i]);
}
}}
self-NAK :)
uint8_t is too small and could result in an endless loop. oops. :( this should not happen normally, because devices supported by ichspi.c allow only 16B or 64B data lengths, but we could be called with something bigger i guess. how should this be solved? since "count" will get truncated implicitly when it is used as parameter for "run_opcode" we could do so explicitly before the loop. or an if around the loop checking for count<256.
also i would like to include the count like so: "run OPCODE 0x%02x failed at address 0x%06x (length %d).\n"
RFC :)