diff options
author | Hung-Te Lin <hungte@chromium.org> | 2022-04-09 12:13:34 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-04-13 08:10:38 +0000 |
commit | e61f21346777c792868c96aad295aa704a41eae3 (patch) | |
tree | a21778cf9c527e16ac028464b85183e9f1b75801 /futility/updater_utils.c | |
parent | a580477b7e0af844688f7f94c32b3436374b37ac (diff) | |
download | vboot-e61f21346777c792868c96aad295aa704a41eae3.tar.gz |
futility: updater: Support new servo control 'ccd_cpu_fw_spi'stabilize-quickfix-14695.187.Bstabilize-quickfix-14695.124.Bstabilize-14695.85.Bstabilize-14695.107.Brelease-R102-14695.B
Some newer devices need extra preparation steps even when using CCD via
servo, so a new 'ccd_cpu_fw_spi' is added to hdctools. The firmware
updater should use it in servo+ccd modes.
Also, the custom_rst is now moved to detect_servo so the --servo_noreset
option is removed.
BUG=b:216832684
TEST=make; run test
BRANCH=None
Change-Id: I6af0f03d5b0b1bb473ecb29680b253a5b71c7465
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3577658
Reviewed-by: Wai-Hong Tam <waihong@google.com>
Tested-by: Wai-Hong Tam <waihong@google.com>
Diffstat (limited to 'futility/updater_utils.c')
-rw-r--r-- | futility/updater_utils.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/futility/updater_utils.c b/futility/updater_utils.c index 762be7c4..c6ddae63 100644 --- a/futility/updater_utils.c +++ b/futility/updater_utils.c @@ -456,16 +456,21 @@ static int host_get_platform_version(void) * Helper function to detect type of Servo board attached to host. * Returns a string as programmer parameter on success, otherwise NULL. */ -char *host_detect_servo(int *need_prepare_ptr) +char *host_detect_servo(const char **prepare_ctrl_name) { const char *servo_port = getenv(ENV_SERVOD_PORT); const char *servo_name = getenv(ENV_SERVOD_NAME); char *servo_type = host_shell("dut-control -o servo_type 2>/dev/null"); const char *programmer = NULL; char *ret = NULL; - int need_prepare = 0; /* To prepare by dut-control cpu_fw_spi:on */ char *servo_serial = NULL; + static const char * const cpu_fw_spi = "cpu_fw_spi"; + static const char * const ccd_cpu_fw_spi = "ccd_cpu_fw_spi"; + + /* By default, no control is needed. */ + *prepare_ctrl_name = NULL; + /* Get serial name if servo port is provided. */ if ((servo_port && *servo_port) || (servo_name && *servo_name)) { const char *cmd = "dut-control -o serialname 2>/dev/null"; @@ -492,19 +497,20 @@ char *host_detect_servo(int *need_prepare_ptr) } else if (strstr(servo_type, "servo_micro")) { VB2_DEBUG("Selected Servo Micro.\n"); programmer = "raiden_debug_spi"; - need_prepare = 1; + *prepare_ctrl_name = cpu_fw_spi; } else if (strstr(servo_type, "c2d2")) { VB2_DEBUG("Selected C2D2.\n"); programmer = "raiden_debug_spi"; - need_prepare = 1; + *prepare_ctrl_name = cpu_fw_spi; } else if (strstr(servo_type, "ccd_cr50") || strstr(servo_type, "ccd_gsc")) { VB2_DEBUG("Selected CCD.\n"); - programmer = "raiden_debug_spi:target=AP"; + programmer = "raiden_debug_spi:target=AP,custom_rst=true"; + *prepare_ctrl_name = ccd_cpu_fw_spi; } else { VB2_DEBUG("Selected Servo V2.\n"); programmer = "ft2232_spi:type=google-servo-v2"; - need_prepare = 1; + *prepare_ctrl_name = cpu_fw_spi; } if (programmer) { @@ -520,7 +526,6 @@ char *host_detect_servo(int *need_prepare_ptr) free(servo_type); free(servo_serial); - *need_prepare_ptr = need_prepare; return ret; } |