if (ret < 0)
                return ret;
 
-       ret = drm_panel_enable(dsi->panel);
+       ret = drm_panel_prepare(dsi->panel);
        if (ret < 0) {
                exynos_dsi_poweroff(dsi);
                return ret;
        exynos_dsi_set_display_mode(dsi);
        exynos_dsi_set_display_enable(dsi, true);
 
+       ret = drm_panel_enable(dsi->panel);
+       if (ret < 0) {
+               exynos_dsi_set_display_enable(dsi, false);
+               drm_panel_unprepare(dsi->panel);
+               exynos_dsi_poweroff(dsi);
+               return ret;
+       }
+
        dsi->state |= DSIM_STATE_ENABLED;
 
        return 0;
        if (!(dsi->state & DSIM_STATE_ENABLED))
                return;
 
-       exynos_dsi_set_display_enable(dsi, false);
        drm_panel_disable(dsi->panel);
+       exynos_dsi_set_display_enable(dsi, false);
+       drm_panel_unprepare(dsi->panel);
        exynos_dsi_poweroff(dsi);
 
        dsi->state &= ~DSIM_STATE_ENABLED;