FAFT: Add option to EC reboot

This enables us to do different kind of EC reboot.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:13229
TEST=Tried cold reboot.

Change-Id: I08a5d725b35e9f9488db7dcdb4fdd863d1faee96
Reviewed-on: https://gerrit.chromium.org/gerrit/31550
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Mike Truty <truty@chromium.org>
Commit-Ready: Vic Yang <victoryang@chromium.org>
Tested-by: Vic Yang <victoryang@chromium.org>
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index 4ff9592..f9911d1 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -1065,12 +1065,21 @@
         self.cold_reboot()
 
 
-    def sync_and_ec_reboot(self):
-        """Request the client sync and do a EC triggered reboot."""
+    def sync_and_ec_reboot(self, args=''):
+        """Request the client sync and do a EC triggered reboot.
+
+        Args:
+          args: Arguments passed to "ectool reboot_ec". Including:
+                  RO: jump to EC RO firmware.
+                  RW: jump to EC RW firmware.
+                  cold: Cold/hard reboot.
+        """
         self.faft_client.run_shell_command('sync')
         time.sleep(self.SYNC_DELAY)
-        self.faft_client.run_shell_command('(sleep %d; ectool reboot_ec)&' %
-                                           self.EC_REBOOT_DELAY)
+        # Since EC reboot happens immediately, delay before actual reboot to
+        # allow FAFT client returning.
+        self.faft_client.run_shell_command('(sleep %d; ectool reboot_ec %s)&' %
+                                           (self.EC_REBOOT_DELAY, args))
         time.sleep(self.EC_REBOOT_DELAY)
         self.check_lid_and_power_on()