return 0;
 
        src->ops->enable(src);
-       src->ops->dsi.enable_hs(src, ddata->dsi->channel, true);
+       ddata->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
 
        r = _dsicm_enable_te(ddata, true);
        if (r) {
 
        dsicm_hw_reset(ddata);
 
-       src->ops->dsi.enable_hs(src, ddata->dsi->channel, false);
+       ddata->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
 
        r = dsicm_sleep_out(ddata);
        if (r)
                ddata->intro_printed = true;
        }
 
-       src->ops->dsi.enable_hs(src, ddata->dsi->channel, true);
+       ddata->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
 
        return 0;
 err:
 
        int irq;
 
        bool is_enabled;
+       bool in_lp_mode;
 
        struct clk *dss_clk;
        struct regmap *syscon;
        /* start the DDR clock by sending a NULL packet */
        if (dsi->vm_timings.ddr_clk_always_on && enable)
                dsi_vc_send_null(dsi, channel);
+
+       dsi->in_lp_mode = !enable;
 }
 
 static void dsi_vc_flush_long_data(struct dsi_data *dsi, int channel)
        struct dsi_data *dsi = host_to_omap(host);
        struct omap_dss_device *dssdev = &dsi->output;
 
+       if (!!(msg->flags & MIPI_DSI_MSG_USE_LPM) != dsi->in_lp_mode)
+               dsi_vc_enable_hs(dssdev, msg->channel,
+                                !(msg->flags & MIPI_DSI_MSG_USE_LPM));
+
        switch (msg->type) {
        case MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM:
        case MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM:
 
                .disable = dsi_display_disable,
 
-               .enable_hs = dsi_vc_enable_hs,
-
                .set_config = dsi_set_config,
 
                .enable_video_output = dsi_enable_video_output,
 
        int (*set_config)(struct omap_dss_device *dssdev,
                        const struct omap_dss_dsi_config *cfg);
 
-       void (*enable_hs)(struct omap_dss_device *dssdev, int channel,
-                       bool enable);
        int (*enable_te)(struct omap_dss_device *dssdev, bool enable);
 
        int (*update)(struct omap_dss_device *dssdev, int channel,