From 0a6fa239241a951e524e74254b9a3bc4a323b2c7 Mon Sep 17 00:00:00 2001 From: Edward O'Callaghan Date: Wed, 25 Jan 2023 14:15:33 +1100 Subject: [PATCH] programmers: Allow opaque programmers to specify custom delay The dummyprogrammer in the opaque case can have a NOP delay to avoid wasting CPU time and energy. BUG=b:266014935 TEST=builds Change-Id: Ia86ad21f011214abc2aa0891a43559f91e2a9591 Signed-off-by: Edward O'Callaghan Reviewed-on: https://review.coreboot.org/c/flashrom/+/72424 Reviewed-by: Sam McNally Reviewed-by: Anastasia Klimchuk Tested-by: build bot (Jenkins) --- flashrom.c | 3 +++ include/programmer.h | 1 + 2 files changed, 4 insertions(+) diff --git a/flashrom.c b/flashrom.c index 3e214163e..f26bb4774 100644 --- a/flashrom.c +++ b/flashrom.c @@ -277,6 +277,9 @@ void programmer_delay(const struct flashctx *flash, unsigned int usecs) } else if (flash->mst->buses_supported & BUS_PARALLEL) { if (flash->mst->par.delay) return flash->mst->par.delay(flash, usecs); + } else if (flash->mst->buses_supported & BUS_PROG) { + if (flash->mst->opaque.delay) + return flash->mst->opaque.delay(flash, usecs); } return default_delay(usecs); diff --git a/include/programmer.h b/include/programmer.h index 9e706d589..db32b2c38 100644 --- a/include/programmer.h +++ b/include/programmer.h @@ -418,6 +418,7 @@ struct opaque_master { enum flashrom_wp_result (*wp_get_ranges)(struct flashrom_wp_ranges **, struct flashctx *); void (*get_region)(const struct flashctx *flash, unsigned int addr, struct flash_region *region); int (*shutdown)(void *data); + void (*delay) (const struct flashctx *flash, unsigned int usecs); void *data; }; int register_opaque_master(const struct opaque_master *mst, void *data);