intel_dsi->dcs_backlight_ports = BIT(PORT_A) | BIT(PORT_C);
                        break;
                }
+
+               switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) {
+               case DL_DCS_PORT_A:
+                       intel_dsi->dcs_cabc_ports = BIT(PORT_A);
+                       break;
+               case DL_DCS_PORT_C:
+                       intel_dsi->dcs_cabc_ports = BIT(PORT_C);
+                       break;
+               default:
+               case DL_DCS_PORT_A_AND_C:
+                       intel_dsi->dcs_cabc_ports = BIT(PORT_A) | BIT(PORT_C);
+                       break;
+               }
        } else {
                intel_dsi->ports = BIT(port);
                intel_dsi->dcs_backlight_ports = BIT(port);
+               intel_dsi->dcs_cabc_ports = BIT(port);
        }
 
+       if (!dev_priv->vbt.dsi.config->cabc_supported)
+               intel_dsi->dcs_cabc_ports = 0;
+
        /* Create a DSI host (and a device) for each port. */
        for_each_dsi_port(port, intel_dsi->ports) {
                struct intel_dsi_host *host;
 
 #define CONTROL_DISPLAY_DD             (1 << 3)
 #define CONTROL_DISPLAY_BL             (1 << 2)
 
+#define POWER_SAVE_OFF                 (0 << 0)
+#define POWER_SAVE_LOW                 (1 << 0)
+#define POWER_SAVE_MEDIUM              (2 << 0)
+#define POWER_SAVE_HIGH                        (3 << 0)
+#define POWER_SAVE_OUTDOOR_MODE                (4 << 0)
+
 #define PANEL_PWM_MAX_VALUE            0xFF
 
 static u32 dcs_get_backlight(struct intel_connector *connector)
 
        dcs_set_backlight(connector, 0);
 
+       for_each_dsi_port(port, intel_dsi->dcs_cabc_ports) {
+               u8 cabc = POWER_SAVE_OFF;
+
+               dsi_device = intel_dsi->dsi_hosts[port]->device;
+               mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_POWER_SAVE,
+                                  &cabc, sizeof(cabc));
+       }
+
        for_each_dsi_port(port, intel_dsi->dcs_backlight_ports) {
                u8 ctrl = 0;
 
                                   &ctrl, sizeof(ctrl));
        }
 
+       for_each_dsi_port(port, intel_dsi->dcs_cabc_ports) {
+               u8 cabc = POWER_SAVE_MEDIUM;
+
+               dsi_device = intel_dsi->dsi_hosts[port]->device;
+               mipi_dsi_dcs_write(dsi_device, MIPI_DCS_WRITE_POWER_SAVE,
+                                  &cabc, sizeof(cabc));
+       }
+
        dcs_set_backlight(connector, panel->backlight.level);
 }