diff mbox

[12/14] drm/i915: Enable DSI reset sequence

Message ID 1483953380-26586-1-git-send-email-vidya.srinivas@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Srinivas, Vidya Jan. 9, 2017, 9:16 a.m. UTC
Enable the call back for MIPI reset sequence. This is needed to
reset the panel, and is part of the VBT spec.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 drivers/gpu/drm/i915/intel_dsi.c           | 6 ++++++
 drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 9 ++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 9252490..cdcd3188 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -561,6 +561,10 @@  static void intel_dsi_pre_enable(struct intel_encoder *encoder,
 
 	intel_dsi_prepare(encoder, pipe_config);
 
+	/* Panel Enable */
+	drm_panel_power_on(intel_dsi->panel);
+	msleep(intel_dsi->panel_on_delay);
+
 	/* Panel Enable over CRC PMIC */
 	if (intel_dsi->gpio_panel)
 		gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
@@ -576,6 +580,8 @@  static void intel_dsi_pre_enable(struct intel_encoder *encoder,
 		I915_WRITE(DSPCLK_GATE_D, val);
 	}
 
+	 drm_panel_reset(intel_dsi->panel);
+
 	/* put device in ready state */
 	intel_dsi_device_ready(encoder);
 
diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
index d476b94..0dc63f5 100644
--- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
+++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
@@ -493,7 +493,6 @@  static void generic_exec_sequence(struct drm_panel *panel, enum mipi_seq seq_id)
 
 static int vbt_panel_prepare(struct drm_panel *panel)
 {
-	generic_exec_sequence(panel, MIPI_SEQ_ASSERT_RESET);
 	generic_exec_sequence(panel, MIPI_SEQ_POWER_ON);
 	generic_exec_sequence(panel, MIPI_SEQ_DEASSERT_RESET);
 	generic_exec_sequence(panel, MIPI_SEQ_INIT_OTP);
@@ -561,10 +560,18 @@  static int vbt_panel_power_off(struct drm_panel *panel)
         return 0;
 }
 
+static int vbt_panel_reset(struct drm_panel *panel)
+{
+        generic_exec_sequence(panel, MIPI_SEQ_ASSERT_RESET);
+
+        return 0;
+}
+
 static const struct drm_panel_funcs vbt_panel_funcs = {
 	.disable = vbt_panel_disable,
 	.unprepare = vbt_panel_unprepare,
 	.prepare = vbt_panel_prepare,
+	.reset = vbt_panel_reset,
 	.power_on = vbt_panel_power_on,
 	.power_off = vbt_panel_power_off,
 	.enable = vbt_panel_enable,