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)