diff options
author | Hung-Te Lin <hungte@chromium.org> | 2019-12-13 17:28:37 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-20 07:09:10 +0000 |
commit | e6d3c638095ea8c4cc050ad42c1f439e79b6b641 (patch) | |
tree | d38b50d589789cf820ee168a1e3949854dd04f55 /futility/updater_utils.c | |
parent | 431878c401ff0e72548d1043ac5e010a92871afc (diff) | |
download | vboot-e6d3c638095ea8c4cc050ad42c1f439e79b6b641.tar.gz |
futility: updater: Add '--servo' for updating via Servo-V2 and ServoMicro
Flashing via Servo V2 and Servo Micro was known to be a complicated.
With the new virtual control 'cpu_fw_spi' we have a better way to
prepare servo in an unified way.
The new '--servo' will detect servo type and pick up the right params
(for servo v2, servo micro, servo v4 with ccd, or servo v4 + micro)
for programming.
BRANCH=None
BUG=None
TEST=make runtest; sudo futility update --servo -i image.bin
Cq-Depend: chromium:1966176
Change-Id: Ia14288b1bd5f24acfc4fb85ba64c2c445152a3a7
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1966872
Reviewed-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Wai-Hong Tam <waihong@google.com>
Diffstat (limited to 'futility/updater_utils.c')
-rw-r--r-- | futility/updater_utils.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/futility/updater_utils.c b/futility/updater_utils.c index 3807fbbe..4a91a05f 100644 --- a/futility/updater_utils.c +++ b/futility/updater_utils.c @@ -436,6 +436,42 @@ static int host_get_platform_version(void) } /* + * Helper function to detect type of Servo board attached to host, + * and store the right programmer / prepare settings to arguments. + * Returns 0 if success, non-zero if error. + */ +int host_detect_servo(const char **programmer_ptr, int *need_prepare_ptr) +{ + int ret = 0; + char *servo_type = host_shell("dut-control -o servo_type 2>/dev/null"); + const char *programmer = NULL; + int need_prepare = 0; /* To prepare by dut-control cpu_fw_spi:on */ + + if (!*servo_type) { + ERROR("Failed to get servo type. Check servod.\n"); + ret = 1; + } else if (strstr(servo_type, "servo_micro")) { + VB2_DEBUG("Selected Servo Micro.\n"); + programmer = "raiden_debug_spi"; + need_prepare = 1; + } else if (strstr(servo_type, "ccd_cr50")) { + VB2_DEBUG("Selected CCD CR50.\n"); + programmer = "raiden_debug_spi:target=AP"; + } else { + VB2_DEBUG("Selected Servo V2.\n"); + programmer = "ft2232_spi:type=servo-v2"; + need_prepare = 1; + } + + free(servo_type); + if (programmer && !*programmer_ptr) + *programmer_ptr = programmer; + *need_prepare_ptr = need_prepare; + + return ret; +} + +/* * A helper function to invoke flashrom(8) command. * Returns 0 if success, non-zero if error. */ |