summaryrefslogtreecommitdiff
path: root/scripts/image_signing/gbb_flags_common.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/image_signing/gbb_flags_common.sh')
-rwxr-xr-xscripts/image_signing/gbb_flags_common.sh45
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}"
}