diff options
Diffstat (limited to 'scripts/image_signing/gbb_flags_common.sh')
-rwxr-xr-x | scripts/image_signing/gbb_flags_common.sh | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/scripts/image_signing/gbb_flags_common.sh b/scripts/image_signing/gbb_flags_common.sh index 63c3f12a..ed51f153 100755 --- a/scripts/image_signing/gbb_flags_common.sh +++ b/scripts/image_signing/gbb_flags_common.sh @@ -51,9 +51,50 @@ FLAGS_HELP="Manages Chrome OS Firmware GBB Flags value. ${GBBFLAGS_DESCRIPTION}" flashrom_read() { - flashrom -p host -i GBB -r "$@" + local file="$1" + local programmer="$2" + flashrom -p "${programmer}" -i GBB -i FMAP -r "${file}" } flashrom_write() { - flashrom -p host -i GBB --noverify-all -w "$@" + local file="$1" + local programmer="$2" + flashrom -p "${programmer}" -i GBB --noverify-all -w "${file}" +} + +get_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 + *with_servo_micro*) + serial=$(dut-control -o servo_micro_serialname 2>/dev/null) + ;; + *with_c2d2*) + serial=$(dut-control -o c2d2_serialname 2>/dev/null) + ;; + *with_ccd*) + serial=$(dut-control -o ccd_serialname 2>/dev/null) + ;; + *) + serial=$(dut-control -o serialname 2>/dev/null) + ;; + 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}" + ;; + *ccd_cr50*|*ccd_gsc*) + programmer="raiden_debug_spi:target=AP,serial=${serial}" + ;; + *) + die "Unsupported servo type ${servo_type}" + ;; + esac + echo "${programmer}" } |