Skip to contentSkip to conversation

Patch "drm/i915: Allow DP to work w/o EDID" has been added to the 4.8-stable tree

PATCH [email protected] 1 participant 1 message Oct 28, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

drm/i915: Allow DP to work w/o EDID

to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:

     drm-i915-allow-dp-to-work-w-o-edid.patch

and it can be found in the queue-4.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 16c83fad79ca912b8b5bbdcb5272794a2be41262 Mon Sep 17 00:00:00 2001

From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
Date: Mon, 3 Oct 2016 10:55:16 +0300
Subject: drm/i915: Allow DP to work w/o EDID
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Ville Syrjälä <[email protected]>

commit 16c83fad79ca912b8b5bbdcb5272794a2be41262 upstream.

Allow returning "connected" or "unknown" connector status for DP branch devices that don't have an EDID. Currently we'd claim the thing as "disconnected" if there is no EDID.

This stuff used to broken already, I think, but it got more broken by commit f21a21983ef1 ("drm/i915: Splitting intel_dp_detect")

Cc Damien Cassou <[email protected]>
Cc Shubhangi Shrivastava <[email protected]>
Cc Sivakumar Thulasimani <[email protected]>
Cc Ander Conselvan de Oliveira <[email protected]>
Fixes f21a21983ef1 ("drm/i915: Splitting intel_dp_detect")

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83348

---
 drivers/gpu/drm/i915/intel_dp.c |   22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)
drivers/gpu/drm/i915/intel_dp.c +9 -13
@@ -4207,7 +4207,7 @@ intel_dp_unset_edid(struct intel_dp *int
 	intel_dp->has_audio = false;
 }
 
-static void
+static enum drm_connector_status
 intel_dp_long_pulse(struct intel_connector *intel_connector)
 {
 	struct drm_connector *connector = &intel_connector->base;
@@ -4232,7 +4232,7 @@ intel_dp_long_pulse(struct intel_connect
 	else
 		status = connector_status_disconnected;
 
-	if (status != connector_status_connected) {
+	if (status == connector_status_disconnected) {
 		intel_dp->compliance_test_active = 0;
 		intel_dp->compliance_test_type = 0;
 		intel_dp->compliance_test_data = 0;
@@ -4284,8 +4284,8 @@ intel_dp_long_pulse(struct intel_connect
 	intel_dp->aux.i2c_defer_count = 0;
 
 	intel_dp_set_edid(intel_dp);
-
-	status = connector_status_connected;
+	if (is_edp(intel_dp) || intel_connector->detect_edid)
+		status = connector_status_connected;
 	intel_dp->detect_done = true;
 
 	/* Try to read the source of the interrupt */
@@ -4303,12 +4303,11 @@ intel_dp_long_pulse(struct intel_connect
 	}
 
 out:
-	if ((status != connector_status_connected) &&
-	    (intel_dp->is_mst == false))
+	if (status != connector_status_connected && !intel_dp->is_mst)
 		intel_dp_unset_edid(intel_dp);
 
 	intel_display_power_put(to_i915(dev), power_domain);
-	return;
+	return status;
 }
 
 static enum drm_connector_status
@@ -4317,7 +4316,7 @@ intel_dp_detect(struct drm_connector *co
 	struct intel_dp *intel_dp = intel_attached_dp(connector);
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct intel_encoder *intel_encoder = &intel_dig_port->base;
-	struct intel_connector *intel_connector = to_intel_connector(connector);
+	enum drm_connector_status status = connector->status;
 
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 		      connector->base.id, connector->name);
@@ -4332,14 +4331,11 @@ intel_dp_detect(struct drm_connector *co
 
 	/* If full detect is not performed yet, do a full detect */
 	if (!intel_dp->detect_done)
-		intel_dp_long_pulse(intel_dp->attached_connector);
+		status = intel_dp_long_pulse(intel_dp->attached_connector);
 
 	intel_dp->detect_done = false;
 
-	if (is_edp(intel_dp) || intel_connector->detect_edid)
-		return connector_status_connected;
-	else
-		return connector_status_disconnected;
+	return status;
 }
 
 static void

Patches currently in stable-queue which might be from [email protected] are

queue-4.8/drm-i915-backlight-setup-backlight-pwm-alternate-increment-on-backlight-enable.patch queue-4.8/drm-i915-skl-update-plane-watermarks-atomically-during-plane-updates.patch queue-4.8/drm-i915-skl-update-ddb-values-atomically-with-wms-plane-attrs.patch queue-4.8/drm-i915-allow-dp-to-work-w-o-edid.patch queue-4.8/drm-i915-move-crtc-updating-in-atomic_commit-into-it-s-own-hook.patch queue-4.8/drm-i915-backlight-setup-and-cache-pwm-alternate-increment-value.patch queue-4.8/drm-i915-skl-ensure-pipes-with-changed-wms-get-added-to-the-state.patch queue-4.8/drm-i915-allow-pch-dpll-sharing-regardless-of-dpll_sdvo_high_speed.patch queue-4.8/drm-i915-move-long-hpd-handling-into-the-hotplug-work.patch queue-4.8/drm-i915-account-for-tseg-size-when-determining-865g-stolen-base.patch