aboutsummaryrefslogtreecommitdiffstats
path: root/flashrom.c
diff options
context:
space:
mode:
Diffstat (limited to 'flashrom.c')
-rw-r--r--flashrom.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/flashrom.c b/flashrom.c
index 9c22eb6e..d0f0d2d4 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -256,12 +256,21 @@ static bool master_uses_physmap(const struct registered_master *mst)
void programmer_delay(const struct flashctx *flash, unsigned int usecs)
{
- if (usecs > 0) {
- if (programmer->delay)
- programmer->delay(usecs);
- else
- internal_delay(usecs);
+ if (usecs == 0)
+ return;
+
+ if (!flash)
+ return internal_delay(usecs);
+
+ if (flash->mst->buses_supported & BUS_SPI) {
+ if (flash->mst->spi.delay)
+ return flash->mst->spi.delay(flash, usecs);
+ } else if (flash->mst->buses_supported & BUS_PARALLEL) {
+ if (flash->mst->par.delay)
+ return flash->mst->par.delay(flash, usecs);
}
+
+ return internal_delay(usecs);
}
int read_memmapped(struct flashctx *flash, uint8_t *buf, unsigned int start,