1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-02 14:33:18 +02:00

Handle Bus Pirates already in bit banging mode correctly

Thanks to Johannes Sjölund for reporting that the Bus Pirate init could
not deal with a Bus Pirate which is already in binary Bitbang mode.

This is caused by a combination of the slowness of the Bus Pirate, the
slowness of USB and a fast serial port flush routine which just flushes
the buffer contents and does not wait until data arrival stops.

Make the Bus Pirate init more robust by running the flush command 10
times with 1.5 ms delay in between.

This code development was sponsored by Mattias Mattsson. Thanks! Tested
a few dozen times, should work reliably.

Corresponding to flashrom svn r1178.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Mattias Mattsson <vitplister@gmail.com>
This commit is contained in:
Carl-Daniel Hailfinger
2010-09-16 22:34:25 +00:00
parent f4925168c8
commit d2f007f98b
2 changed files with 27 additions and 2 deletions

View File

@ -200,8 +200,10 @@ int serialport_write(unsigned char *buf, unsigned int writecnt)
#else
tmp = write(sp_fd, buf, writecnt);
#endif
if (tmp == -1)
if (tmp == -1) {
msg_perr("Serial port write error!\n");
return 1;
}
if (!tmp)
msg_pdbg("Empty write\n");
writecnt -= tmp;
@ -221,8 +223,10 @@ int serialport_read(unsigned char *buf, unsigned int readcnt)
#else
tmp = read(sp_fd, buf, readcnt);
#endif
if (tmp == -1)
if (tmp == -1) {
msg_perr("Serial port read error!\n");
return 1;
}
if (!tmp)
msg_pdbg("Empty read\n");
readcnt -= tmp;