diff --git a/packages/apps/Settings/res/values-zh-rCN/strings.xml b/packages/apps/Settings/res/values-zh-rCN/strings.xml
index fe72d85229d..541ca1e9070 100644
--- a/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -5591,6 +5591,7 @@
     <string name="screen_aux_title">"副屏"</string>
     <string name="screen_switch">"开关"</string>
     <string name="screen_resolution">"分辨率设置"</string>
+    <string name="screen_output_mode">"输出格式"</string>
     <string name="screen_scale">"屏幕缩放"</string>
     <string name="screen_rotation">"屏幕旋转"</string>
     <string name="screen_full_vh">"满屏显示"</string>
diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml
index 0f8e6987653..12b4adf7367 100644
--- a/packages/apps/Settings/res/values/strings.xml
+++ b/packages/apps/Settings/res/values/strings.xml
@@ -13707,7 +13707,8 @@
     <string name="screen_aux_title">Aux Screen</string>
     <string name="screen_switch">Turn on/off</string>
     <string name="screen_resolution">Resolution</string>
-    <string name="screen_scale">Screen Zoom</string>
+    <string name="screen_scale">Screen zoom</string>
+    <string name="screen_output_mode">Output mode</string>
     <string name="screen_rotation">Screen Rotation</string>
     <string name="screen_full_vh">screen full display</string>
     <string name="confirm_dialog_title">Save Confirm</string>
diff --git a/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java b/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java
index 9e91601e828..a5e372d0321 100644
--- a/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java
+++ b/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java
@@ -74,6 +74,24 @@ public class DrmDisplaySetting {
         manager.setOverScan(display, direction, value);
     }
 
+    public static void setColorMode(int displayid, String format) {
+        RkDisplayOutputManager manager = new RkDisplayOutputManager();
+        int type = manager.getCurrentInterface(displayid);
+        manager.setColorMode(displayid, type, format);
+    }
+
+    public static String getColorMode(int displayid) {
+        RkDisplayOutputManager manager = new RkDisplayOutputManager();
+        int type = manager.getCurrentInterface(displayid);
+        return manager.getCurrentColorMode(displayid, type);
+    }
+
+    public static String[] getColorModeList(int displayid) {
+        RkDisplayOutputManager manager = new RkDisplayOutputManager();
+        int type = manager.getCurrentInterface(displayid);
+        return manager.getSupportCorlorList(displayid, type);
+    }
+
     public static int getDisplayNumber() {
         RkDisplayOutputManager manager = new RkDisplayOutputManager();
         return manager.getDisplayNumber();
diff --git a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java
index 44ea368926c..a3d1d65003c 100755
--- a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java
+++ b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java
@@ -49,6 +49,7 @@ public class HdmiSettings extends SettingsPreferenceFragment
     private static final String TAG = "HdmiSettings";
     private static final String KEY_PRE_CATE = "Display";
     private static final String KEY_PRE_RESOLUTION = "Resolution";
+    private static final String KEY_PRE_COLOR_MODE = "ColorMode";
     private static final String KEY_PRE_SCREEN_SCALE = "ScreenScale";
     private static final String KEY_AUX_CATEGORY = "aux_category";
     private static final String KEY_AUX_SCREEN_VH = "aux_screen_vh";
@@ -347,6 +348,21 @@ public class HdmiSettings extends SettingsPreferenceFragment
             DisplayInfo displayInfo = new DisplayInfo();
             displayInfo.setDisplayNo(display);
             mDisplayInfoList.put(display, displayInfo);
+
+            //add color preference for HDMI-A
+            if ("HDMIA".equals(typeName)) {
+                String curColorMode = DrmDisplaySetting.getColorMode(display);
+                String[] colorList = DrmDisplaySetting.getColorModeList(display);
+                Log.v(TAG, "Current mode " + curColorMode + " of " + colorList.length);
+                ListPreference colorPreference = new ListPreference(mContext);
+                colorPreference.setEntries(colorList);
+                colorPreference.setEntryValues(colorList);
+                colorPreference.setKey(KEY_PRE_COLOR_MODE + display);
+                colorPreference.setTitle(mContext.getString(R.string.screen_output_mode));
+                colorPreference.setValue(curColorMode);
+                colorPreference.setOnPreferenceChangeListener(this);
+                category.addPreference(colorPreference);
+            }
         }
         sendUpdateStateMsg(ITEM_CONTROL.REFRESH_DISPLAY_STATUS_INFO, 0);
 
@@ -589,6 +605,14 @@ public class HdmiSettings extends SettingsPreferenceFragment
             }
             preference.getParent().setEnabled(false);
             updateResolution(ITEM_CONTROL.CHANGE_RESOLUTION, index);
+        } else if (key.startsWith(KEY_PRE_COLOR_MODE)) {
+            int display = Integer.parseInt(key.replace(KEY_PRE_COLOR_MODE, ""));
+            ListPreference colorPreference = (ListPreference) preference;
+            String curColorMode = DrmDisplaySetting.getColorMode(display);
+            String newColorMode = (String) obj;
+            if (!newColorMode.equals(curColorMode)) {
+                DrmDisplaySetting.setColorMode(display, newColorMode);
+            }
         } else if (preference == mAuxScreenVH) {
             mEnableDisplayListener = false;
             showWaitingDialog(R.string.dialog_wait_screen_connect);