On 19.01.2010 11:48, Stefan Reinauer wrote: > On 1/19/10 4:01 AM, Carl-Daniel Hailfinger wrote: > >> Dediprog SF100 support. >> > > MacPro:flashrom stepan$ ./flashrom -p dediprog > flashrom v0.9.1-r869 > Calibrating delay loop... OK. > Found chip "ST M25P32" (4096 KB, SPI) at physical address 0xffc00000. > No operations were specified. >
Nice. > Aside from the physical address making not much sense (for any > non-direct programmer) > Indeed. We can tackle this later. > MacPro:flashrom stepan$ ./flashrom -p dediprog -r testimage.rom > flashrom v0.9.1-r869 > Calibrating delay loop... OK. > Found chip "ST M25P32" (4096 KB, SPI) at physical address 0xffc00000. > Reading flash... ^C > > The reading does not seem to work yet, even after several minutes, the > image is still zero bytes. > Hm. To be honest, reading is something I could not find in the logs. Then again, maybe some diagnostics in SPEW mode could help. Please run flashrom -p dediprog -VV -r testimage.rom with the following debug patch (you need to run "make distclean" before compiling it) Mark 4 byte RDID as supported by Dediprog. Really abort if any unhandled command sizes are run. Add some debugging at SPEW level. Signed-off-by: Carl-Daniel Hailfinger <[email protected]> Index: flashrom-dediprog_fixups_debug/spi.c =================================================================== --- flashrom-dediprog_fixups_debug/spi.c (Revision 870) +++ flashrom-dediprog_fixups_debug/spi.c (Arbeitskopie) @@ -335,6 +335,9 @@ #if BUSPIRATE_SPI_SUPPORT == 1 case SPI_CONTROLLER_BUSPIRATE: #endif +#if DEDIPROG_SUPPORT == 1 + case SPI_CONTROLLER_DEDIPROG: +#endif return probe_spi_rdid_generic(flash, 4); default: printf_debug("4b ID not supported on this SPI controller\n"); Index: flashrom-dediprog_fixups_debug/dediprog.c =================================================================== --- flashrom-dediprog_fixups_debug/dediprog.c (Revision 870) +++ flashrom-dediprog_fixups_debug/dediprog.c (Arbeitskopie) @@ -145,6 +145,7 @@ int dediprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len) { + msg_pspew("%s, start=0x%x, len=0x%x\n", __func__, start, len); /* Maximum read length is 4 bytes for now. */ return spi_read_chunked(flash, buf, start, len, 4); } @@ -154,14 +155,21 @@ { int ret; + msg_pspew("%s, writecnt=%i, readcnt=%i\n", __func__, writecnt, readcnt); /* Paranoid, but I don't want to be blamed if anything explodes. */ - if ((writecnt != 1) && (writecnt != 4)) + if ((writecnt != 1) && (writecnt != 4)) { msg_perr("Untested writecnt=%i, aborting.\n", writecnt); - if (readcnt > 4) + return 1; + } + if (readcnt > 4) { msg_perr("Untested readcnt=%i, aborting.\n", readcnt); - if ((readcnt == 0) && (writecnt != 1)) + return 1; + } + if ((readcnt == 0) && (writecnt != 1)) { msg_perr("Untested writecnt=%i, readcnt=%i combination, " "aborting.\n", writecnt, readcnt); + return 1; + } ret = usb_control_msg(dediprog_handle, 0x42, 0x1, 0xff, readcnt ? 0x1 : 0x0, (char *)writearr, writecnt, DEFAULT_TIMEOUT); if (ret != writecnt) { -- Developer quote of the year: "We are juggling too many chainsaws and flaming arrows and tigers." _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
