summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2022-03-18 14:19:16 +0800
committerCommit Bot <commit-bot@chromium.org>2022-03-18 20:43:53 +0000
commit26187f1d4e2534fe9d2fe90e7ce82af23ada1866 (patch)
tree8a9327ae1d77f03c9532a89185b4e338c4e40907
parent67d21be99c7ce35bc0580c4fd4e062da90bd1cbb (diff)
downloadvboot-stabilize-14633.B.tar.gz
The new quirk will allow the updater to easily switch the underlying flash driver between the libflashrom and the external flashrom. BUG=None TEST=build and run test BRANCH=None Change-Id: I5b9da373b1e22a948e04d844973a5683adffe63c Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3534489 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Commit-Queue: Yu-Ping Wu <yupingso@chromium.org>
-rw-r--r--futility/updater.h1
-rw-r--r--futility/updater_quirks.c5
-rw-r--r--futility/updater_utils.c6
3 files changed, 8 insertions, 4 deletions
diff --git a/futility/updater.h b/futility/updater.h
index 30a96a39..77f47260 100644
--- a/futility/updater.h
+++ b/futility/updater.h
@@ -49,6 +49,7 @@ enum quirk_types {
QUIRK_NO_CHECK_PLATFORM,
QUIRK_NO_VERIFY,
QUIRK_EXTRA_RETRIES,
+ QUIRK_EXTERNAL_FLASHROM,
QUIRK_MAX,
};
diff --git a/futility/updater_quirks.c b/futility/updater_quirks.c
index 8d6114bf..73b7c2fd 100644
--- a/futility/updater_quirks.c
+++ b/futility/updater_quirks.c
@@ -521,6 +521,11 @@ void updater_register_quirks(struct updater_config *cfg)
quirks->name = "extra_retries";
quirks->help = "Extra retries when writing to system firmware.";
quirks->apply = NULL; /* Simple config. */
+
+ quirks = &cfg->quirks[QUIRK_EXTERNAL_FLASHROM];
+ quirks->name = "external_flashrom";
+ quirks->help = "Use external flashrom to access the system firmware.";
+ quirks->apply = NULL; /* Simple config. */
}
/*
diff --git a/futility/updater_utils.c b/futility/updater_utils.c
index a581c8f6..762be7c4 100644
--- a/futility/updater_utils.c
+++ b/futility/updater_utils.c
@@ -715,8 +715,7 @@ static int external_flashrom(enum flash_command flash_cmd,
static int read_flash(struct flashrom_params *params,
struct updater_config *cfg)
{
- /* TODO(hungte): Add a quirk to allow switching to external flashrom. */
- if (0)
+ if (get_config_quirk(QUIRK_EXTERNAL_FLASHROM, cfg))
return external_flashrom(FLASH_READ, params, &cfg->tempfiles);
return flashrom_read_image(params->image, NULL, params->verbose);
@@ -727,8 +726,7 @@ static int write_flash(struct flashrom_params *params,
{
int r;
- /* TODO(hungte): Add a quirk to allow switching to external flashrom. */
- if (0)
+ if (get_config_quirk(QUIRK_EXTERNAL_FLASHROM, cfg))
return external_flashrom(FLASH_WRITE, params, &cfg->tempfiles);
r = flashrom_write_image(params->image,