[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