Adding custom KEY_MATRIX for in order to enable FAFT for PARROT

BUG=chrome-os-partner:13542
TEST=firmware_DevMode firmware screen got skipped

Change-Id: If93f52e67232446b6fe949bd67c80dbc308e3639
Reviewed-on: https://gerrit.chromium.org/gerrit/32819
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Gediminas Ramanauskas <gedis@chromium.org>
Tested-by: Gediminas Ramanauskas <gedis@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
Commit-Ready: Gediminas Ramanauskas <gedis@chromium.org>
diff --git a/server/cros/faft_client_attribute.py b/server/cros/faft_client_attribute.py
index caf2ab6..32d1701 100644
--- a/server/cros/faft_client_attribute.py
+++ b/server/cros/faft_client_attribute.py
@@ -11,7 +11,8 @@
                        'has_lid': True,
                        'keyboard_dev': True,
                        'ec_capability': list(),
-                       'wp_voltage': 'pp1800'}
+                       'wp_voltage': 'pp1800',
+                       'key_matrix_layout': 0}
 
     def __init__(self, platform):
         """Initialized.
@@ -59,4 +60,8 @@
         if platform == 'Link':
             setting['wp_voltage'] = 'pp3300'
 
+        # Set 'key_matrix_layout'
+        if platform == 'Parrot':
+            setting['key_matrix_layout'] = 1
+
         return setting
diff --git a/server/cros/faftsequence.py b/server/cros/faftsequence.py
index 41a57f2..87a3408 100644
--- a/server/cros/faftsequence.py
+++ b/server/cros/faftsequence.py
@@ -280,6 +280,9 @@
             self.client_attr = FAFTClientAttribute(
                     self.faft_client.get_platform_name())
 
+            # Setting up key matrix mapping
+            self.servo.set_key_matrix(self.client_attr.key_matrix_layout)
+
 
     def setup(self):
         """Autotest setup function."""
diff --git a/server/cros/servo.py b/server/cros/servo.py
index fc33d5c..df1beb1 100644
--- a/server/cros/servo.py
+++ b/server/cros/servo.py
@@ -60,13 +60,21 @@
     # Time between an usb disk plugged-in and detected in the system.
     USB_DETECTION_DELAY = 10
 
-    KEY_MATRIX = {
+    KEY_MATRIX_ALT_0 = {
         'm1': {'ctrl_r': ['0', '0'], 'd': ['0', '1'],
                'enter': ['1', '0'], 'none': ['1', '1']},
         'm2': {'ctrl': ['0', '0'], 'refresh': ['0', '1'],
                'unused': ['1', '0'], 'none': ['1', '1']}
         }
 
+    KEY_MATRIX_ALT_1 = {
+        'm1': {'d': ['0', '0'], 'enter': ['0', '1'],
+               'ctrl_r': ['1', '0'], 'none': ['1', '1']},
+        'm2': {'unused': ['0', '0'], 'refresh': ['0', '1'],
+               'ctrl': ['1', '0'], 'none': ['1', '1']}
+        }
+
+    KEY_MATRIX = [KEY_MATRIX_ALT_0, KEY_MATRIX_ALT_1]
 
     @staticmethod
     def _make_servo_hostname(hostname):
@@ -106,6 +114,7 @@
                           is running.
         @param servo_port Port the servod process is listening on.
         """
+        self._key_matrix = 0
         self._server = None
         self._connect_servod(servo_host, servo_port)
 
@@ -196,15 +205,15 @@
                                 press_secs=SERVO_KEY_PRESS_DELAY):
         """Simulate button presses."""
         # set keys to none
-        (m2_a1, m2_a0) = self.KEY_MATRIX['m2']['none']
-        (m1_a1, m1_a0) = self.KEY_MATRIX['m1']['none']
+        (m2_a1, m2_a0) = self.KEY_MATRIX[self._key_matrix]['m2']['none']
+        (m1_a1, m1_a0) = self.KEY_MATRIX[self._key_matrix]['m1']['none']
         self.set_nocheck('kbd_m2_a0', m2_a0)
         self.set_nocheck('kbd_m2_a1', m2_a1)
         self.set_nocheck('kbd_m1_a0', m1_a0)
         self.set_nocheck('kbd_m1_a1', m1_a1)
 
-        (m2_a1, m2_a0) = self.KEY_MATRIX['m2'][m2]
-        (m1_a1, m1_a0) = self.KEY_MATRIX['m1'][m1]
+        (m2_a1, m2_a0) = self.KEY_MATRIX[self._key_matrix]['m2'][m2]
+        (m1_a1, m1_a0) = self.KEY_MATRIX[self._key_matrix]['m1'][m1]
         self.set_nocheck('kbd_en', 'on')
         self.set_nocheck('kbd_m2_a0', m2_a0)
         self.set_nocheck('kbd_m2_a1', m2_a1)
@@ -214,6 +223,11 @@
         self.set_nocheck('kbd_en', 'off')
 
 
+    def set_key_matrix(self, matrix=0):
+        """Set keyboard mapping"""
+        self._key_matrix = matrix
+
+
     def ctrl_d(self):
         """Simulate Ctrl-d simultaneous button presses."""
         self._press_and_release_keys('d', 'ctrl')