summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Altherr <rick@oxidecomputer.com>2021-12-13 17:10:00 -0800
committerNico Huber <nico.h@gmx.de>2022-01-14 15:41:20 +0000
commit3ae04a1204ab724689dadeac0548aadd5e5eb088 (patch)
tree0a379808d042e283adc3e327860c84adc0f8e644
parent89c73b5a746088fb303f2f69c7107b9e2d386a79 (diff)
downloadflashrom-3ae04a1204ab724689dadeac0548aadd5e5eb088.tar.gz
flashrom-3ae04a1204ab724689dadeac0548aadd5e5eb088.tar.bz2
flashrom-3ae04a1204ab724689dadeac0548aadd5e5eb088.zip
dediprog: wait for spi bulk read xfers to finish
dediprog_bulk_read_poll()'s finish argument allows it to be used in two distinct cases: where dediprog_bulk_read_poll will be called as part of a loop (finish=0) and where dediprog_bulk_read_poll should wait for all outstanding transfers to finish (finish=1). In both cases, dediprog_bulk_read_poll() calls libusb to process events with a 10 second timeout. After dediprog_spi_bulk_read() has queued the last transfers, it calls dediprog_bulk_read_poll() with finish=0 when it should be finish=1. finish=0 just happens to work because frequently the transfers finish in the 10 second timeout. Signed-off-by: Rick Altherr <rick@oxidecomputer.com> Change-Id: If7cb541742c8620358c8e04275d8316131b2d1ab Reviewed-on: https://review.coreboot.org/c/flashrom/+/60087 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--dediprog.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/dediprog.c b/dediprog.c
index 939673cca..8a05a7c16 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -526,7 +526,7 @@ static int dediprog_spi_bulk_read(struct flashctx *flash, uint8_t *buf, unsigned
goto err_free;
}
/* Wait for transfers to finish. */
- if (dediprog_bulk_read_poll(dp_data->usb_ctx, &status, 0))
+ if (dediprog_bulk_read_poll(dp_data->usb_ctx, &status, 1))
goto err_free;
/* Check if everything has been transmitted. */
if ((status.finished_idx < count) || status.error)