summaryrefslogtreecommitdiffstats
path: root/flashrom.c
diff options
context:
space:
mode:
authorEdward O'Callaghan <quasisec@google.com>2022-08-25 23:11:56 +1000
committerAnastasia Klimchuk <aklm@chromium.org>2022-11-06 23:30:33 +0000
commitaf76e447527da609965dff5726696b59d6873d6e (patch)
treea6153ef63056d4501cec684410a28314a4aea7e5 /flashrom.c
parent39b189077379a6cdd99e5ae20452fa685b94500e (diff)
downloadflashrom-af76e447527da609965dff5726696b59d6873d6e.tar.gz
flashrom-af76e447527da609965dff5726696b59d6873d6e.tar.bz2
flashrom-af76e447527da609965dff5726696b59d6873d6e.zip
flashrom.c: Make 'chip_to_probe' a param to probe_flash()
Apart from the very bespoke case of 'probe_w29ee011()' the override 'chip_to_probe' name is a nature parameter to 'probe_flash()'. However we can deal with w29ee011 by providing a probe specific validation function to check if the chip can indeed be overriden. TEST=`./flashrom -p internal --flash-name`. Change-Id: Ifcdace07ea2135d83dea92cfa5c6bec8d7ddf05d Signed-off-by: Edward O'Callaghan <quasisec@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/67091 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <felixsinger@posteo.net> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Diffstat (limited to 'flashrom.c')
-rw-r--r--flashrom.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/flashrom.c b/flashrom.c
index 694e2c5ed..db4dd7d0b 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -35,7 +35,6 @@
#include "chipdrivers.h"
const char flashrom_version[] = FLASHROM_VERSION;
-const char *chip_to_probe = NULL;
static const struct programmer_entry *programmer = NULL;
@@ -824,7 +823,7 @@ static probe_func_t *lookup_probe_func_ptr(const struct flashchip *chip)
return NULL;
}
-int probe_flash(struct registered_master *mst, int startchip, struct flashctx *flash, int force)
+int probe_flash(struct registered_master *mst, int startchip, struct flashctx *flash, int force, const char *const chip_to_probe)
{
const struct flashchip *chip;
enum chipbustype buses_common;
@@ -864,6 +863,10 @@ int probe_flash(struct registered_master *mst, int startchip, struct flashctx *f
if (force)
break;
+ if (probe_func == &probe_w29ee011)
+ if (!w29ee011_can_override(flash->chip->name, chip_to_probe))
+ goto notfound;
+
if (probe_func(flash) != 1)
goto notfound;