faft: Emulate a long recovery-key-combo hold
Link requires a long recovery-key-combo hold (200ms) to leave the EC in a
good state such that it won't break Ctrl-D. In FAFT, we do cold reset
twice to emulate this long recovery-key-combo hold.
BUG=chrome-os-partner:15705,chrome-os-partner:15835
TEST=run_remote_tests --board link --remote dut suite:faft_ec_wp
Change-Id: I385b1051214077ab2c25e02bde5bbc206e30def9
Reviewed-on: https://gerrit.chromium.org/gerrit/38178
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index cbe5383..c560814 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -910,11 +910,14 @@
recovery mode, i.e. just press Power + Esc + Refresh.
"""
if self.client_attr.chrome_ec:
- # Cold reset to clear EC_IN_RW signal
- self.servo.set('cold_reset', 'on')
- time.sleep(self.delay.hold_cold_reset)
- self.servo.set('cold_reset', 'off')
- time.sleep(self.delay.ec_boot_to_console)
+ # Reset twice to emulate a long recovery-key-combo hold.
+ cold_reset_num = 2 if self.client_attr.long_rec_combo else 1
+ for _ in range(cold_reset_num):
+ # Cold reset to clear EC_IN_RW signal
+ self.servo.set('cold_reset', 'on')
+ time.sleep(self.delay.hold_cold_reset)
+ self.servo.set('cold_reset', 'off')
+ time.sleep(self.delay.ec_boot_to_console)
self.ec.reboot("ap-off")
time.sleep(self.delay.ec_boot_to_console)
self.ec.set_hostevent(chrome_ec.HOSTEVENT_KEYBOARD_RECOVERY)