#include <drm/drm_panel.h>
 #include <drm/drm_mipi_dsi.h>
 #include <linux/slab.h>
+#include <linux/gpio/consumer.h>
 #include "i915_drv.h"
 #include "intel_drv.h"
 #include "intel_dsi.h"
 
        DRM_DEBUG_KMS("\n");
 
+       /* Panel Enable over CRC PMIC */
+       if (intel_dsi->gpio_panel)
+               gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
+
+       msleep(intel_dsi->panel_on_delay);
+
        /* Disable DPOunit clock gating, can stall pipe
         * and we need DPLL REFA always enabled */
        tmp = I915_READ(DPLL(pipe));
        /* put device in ready state */
        intel_dsi_device_ready(encoder);
 
-       msleep(intel_dsi->panel_on_delay);
-
        drm_panel_prepare(intel_dsi->panel);
 
        for_each_dsi_port(port, intel_dsi->ports)
 
        msleep(intel_dsi->panel_off_delay);
        msleep(intel_dsi->panel_pwr_cycle_delay);
+
+       /* Panel Disable over CRC PMIC */
+       if (intel_dsi->gpio_panel)
+               gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0);
 }
 
 static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
                /* XXX: Logically this call belongs in the panel driver. */
                drm_panel_remove(intel_dsi->panel);
        }
+
+       /* dispose of the gpios */
+       if (intel_dsi->gpio_panel)
+               gpiod_put(intel_dsi->gpio_panel);
+
        intel_encoder_destroy(encoder);
 }
 
                goto err;
        }
 
+       /*
+        * In case of BYT with CRC PMIC, we need to use GPIO for
+        * Panel control.
+        */
+       if (dev_priv->vbt.dsi.config->pwm_blc == PPS_BLC_PMIC) {
+               intel_dsi->gpio_panel =
+                       gpiod_get(dev->dev, "panel", GPIOD_OUT_HIGH);
+
+               if (IS_ERR(intel_dsi->gpio_panel)) {
+                       DRM_ERROR("Failed to own gpio for panel control\n");
+                       intel_dsi->gpio_panel = NULL;
+               }
+       }
+
        intel_encoder->type = INTEL_OUTPUT_DSI;
        intel_encoder->cloneable = 0;
        drm_connector_init(dev, connector, &intel_dsi_connector_funcs,