[PATCH 3/3] drm/dp/i915: Sleep after edp off and init pps values in pre enable

Manasi Navare manasi.d.navare at intel.com
Sat Jun 17 00:47:56 UTC 2017


Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c |  2 ++
 drivers/gpu/drm/i915/intel_dp.c  | 11 +++++++++++
 drivers/gpu/drm/i915/intel_drv.h |  1 +
 3 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index c011d74..b2266e4 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2002,6 +2002,7 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 				    bool link_mst)
 {
 	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
+	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	enum port port = intel_ddi_get_encoder_port(encoder);
 	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
@@ -2012,6 +2013,7 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 	intel_dp_set_link_params(intel_dp, link_rate, lane_count,
 				 link_mst);
 	if (encoder->type == INTEL_OUTPUT_EDP) {
+		intel_dp_reinitialize_pps(dev, intel_dp);
 		test = intel_digital_port_connected(dev_priv, dig_port);
 		DRM_DEBUG_KMS("\nManasi Debug: HPD Live status before turning Panel On = %d", test);
 		intel_edp_panel_on(intel_dp);
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 22f7014..efec4c3 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -415,6 +415,7 @@ uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes)
 	return v;
 }
 
+
 static void intel_dp_unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes)
 {
 	int i;
@@ -2665,6 +2666,7 @@ static void intel_disable_dp(struct intel_encoder *encoder,
 	intel_edp_backlight_off(old_conn_state);
 	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
 	intel_edp_panel_off(intel_dp);
+	usleep_range(2000, 5000);
 
 	/* disable the port before the pipe on g4x */
 	if (INTEL_GEN(dev_priv) < 5)
@@ -5766,6 +5768,15 @@ intel_dp_drrs_init(struct intel_connector *intel_connector,
 	return downclock_mode;
 }
 
+void intel_dp_reinitialize_pps(struct drm_device *dev, struct intel_dp *intel_dp)
+{
+	pps_lock(intel_dp);
+	intel_dp_init_panel_power_timestamps(intel_dp);
+	intel_dp_pps_init(dev, intel_dp);
+	intel_edp_panel_vdd_sanitize(intel_dp);
+	pps_unlock(intel_dp);
+}
+
 static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 				     struct intel_connector *intel_connector)
 {
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index d93efb4..589bfc9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1538,6 +1538,7 @@ int intel_dp_rate_select(struct intel_dp *intel_dp, int rate);
 void intel_dp_hot_plug(struct intel_encoder *intel_encoder);
 void intel_power_sequencer_reset(struct drm_i915_private *dev_priv);
 uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes);
+void intel_dp_reinitialize_pps(struct drm_device *dev, struct intel_dp *intel_dp);
 void intel_plane_destroy(struct drm_plane *plane);
 void intel_edp_drrs_enable(struct intel_dp *intel_dp,
 			   struct intel_crtc_state *crtc_state);
-- 
2.1.4



More information about the Intel-gfx-trybot mailing list