diff options
author | Sam McNally <sammc@chromium.org> | 2022-02-17 17:47:03 +1100 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-04-02 05:51:27 +0000 |
commit | a580477b7e0af844688f7f94c32b3436374b37ac (patch) | |
tree | 4f2b8240123c2945d47b0262a5af9f787861a15d /scripts | |
parent | 4abb7e065dcdc9fa15b34da2ac53d9ab1e6a9db8 (diff) | |
download | vboot-a580477b7e0af844688f7f94c32b3436374b37ac.tar.gz |
vboot: Support servo micro and C2D2 for {get,set}_gbb_flags.sh --servo.stabilize-14682.B
Detect servo micro and C2D2 servo types and toggle cpu_fw_spi before and
after flash access is required.
BUG=b:220992685
TEST={get,set}_gbb_flags.sh --servo with C2D2 and servo micro
BRANCH=None
Cq-Depend: chromium:3470605
Change-Id: I9f8a9bcabe731001ed18150ca1db9820db20e0d3
Signed-off-by: Sam McNally <sammc@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3469747
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/image_signing/gbb_flags_common.sh | 24 | ||||
-rwxr-xr-x | scripts/image_signing/get_gbb_flags.sh | 4 | ||||
-rwxr-xr-x | scripts/image_signing/set_gbb_flags.sh | 2 |
3 files changed, 20 insertions, 10 deletions
diff --git a/scripts/image_signing/gbb_flags_common.sh b/scripts/image_signing/gbb_flags_common.sh index ed51f153..ae50c10e 100755 --- a/scripts/image_signing/gbb_flags_common.sh +++ b/scripts/image_signing/gbb_flags_common.sh @@ -62,10 +62,23 @@ flashrom_write() { flashrom -p "${programmer}" -i GBB --noverify-all -w "${file}" } -get_programmer_for_servo() { +CPU_FW_SPI="${FLAGS_FALSE}" + +enable_cpu_fw_spi() { + dut-control cpu_fw_spi:on >/dev/null + CPU_FW_SPI="${FLAGS_TRUE}" +} + +maybe_disable_cpu_fw_spi() { + if [ "${CPU_FW_SPI}" = "${FLAGS_TRUE}" ]; then + dut-control cpu_fw_spi:off >/dev/null + fi +} +trap "maybe_disable_cpu_fw_spi" EXIT + +update_programmer_for_servo() { local servo_type local serial - local programmer servo_type=$(dut-control -o servo_type 2>/dev/null) || \ die "Failed to get servo information. Is servod running?" case "${servo_type}" in @@ -84,10 +97,8 @@ get_programmer_for_servo() { esac case "${servo_type}" in *servo_micro*|*c2d2*) - # TODO(sammc): Support servo micro, servo v2 and C2D2. This requires - # toggling cpu_fw_spi via dut-control before and after running flashrom. - # C2D2 additionally requires a working cpu_fw_spi implementation. - die "Unsupported servo type ${servo_type}" + programmer="raiden_debug_spi:serial=${serial}" + enable_cpu_fw_spi ;; *ccd_cr50*|*ccd_gsc*) programmer="raiden_debug_spi:target=AP,serial=${serial}" @@ -96,5 +107,4 @@ get_programmer_for_servo() { die "Unsupported servo type ${servo_type}" ;; esac - echo "${programmer}" } diff --git a/scripts/image_signing/get_gbb_flags.sh b/scripts/image_signing/get_gbb_flags.sh index 1191e9f7..84acaa0e 100755 --- a/scripts/image_signing/get_gbb_flags.sh +++ b/scripts/image_signing/get_gbb_flags.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Copyright 2017 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be @@ -30,7 +30,7 @@ main() { if [ -z "${FLAGS_file}" ]; then image_file="$(make_temp_file)" if [ "${FLAGS_servo}" = "${FLAGS_TRUE}" ]; then - programmer=$(get_programmer_for_servo) + update_programmer_for_servo fi flashrom_read "${image_file}" "${programmer}" fi diff --git a/scripts/image_signing/set_gbb_flags.sh b/scripts/image_signing/set_gbb_flags.sh index 3057da57..57fd4c06 100755 --- a/scripts/image_signing/set_gbb_flags.sh +++ b/scripts/image_signing/set_gbb_flags.sh @@ -55,7 +55,7 @@ main() { if [ -z "${FLAGS_file}" ]; then image_file="$(make_temp_file)" if [ "${FLAGS_servo}" = "${FLAGS_TRUE}" ]; then - programmer=$(get_programmer_for_servo) + update_programmer_for_servo fi flashrom_read "${image_file}" "${programmer}" |