Re: Intel-gfx Digest, Vol 96, Issue 26

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Can someone review the patches in the below mail?
PFB the link to the same:
               https://patchwork.freedesktop.org/series/369/#rev5

Thanks and Regards,
Shubhangi Shrivastava.


On Tuesday 05 January 2016 06:28 PM, intel-gfx-request@xxxxxxxxxxxxxxxxxxxxx wrote:
Send Intel-gfx mailing list submissions to
	intel-gfx@xxxxxxxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
	http://lists.freedesktop.org/mailman/listinfo/intel-gfx
or, via email, send a message with subject or body 'help' to
	intel-gfx-request@xxxxxxxxxxxxxxxxxxxxx

You can reach the person managing the list at
	intel-gfx-owner@xxxxxxxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Intel-gfx digest..."


Today's Topics:

    1. [PATCH 2/6] drm/i915: Cleaning up intel_dp_hpd_pulse
       (Shubhangi Shrivastava)
    2. [PATCH 0/6] Fixing sink count related detection over
       (Shubhangi Shrivastava)
    3. [PATCH 4/6] drm/i915: Save sink_count for tracking	changes to
       it (Shubhangi Shrivastava)
    4. [PATCH 3/6] drm/i915: Splitting	intel_dp_check_link_status
       (Shubhangi Shrivastava)
    5. [PATCH 5/6] drm/i915: read sink_count dpcd always
       (Shubhangi Shrivastava)
    6. [PATCH 6/6] drm/i915: force full detect on sink count	change
       (Shubhangi Shrivastava)
    7. Re: [PATCH 0/2] DPCD Backlight Control (Adebisi, YetundeX)


----------------------------------------------------------------------

Message: 1
Date: Tue,  5 Jan 2016 18:20:22 +0530
From: Shubhangi Shrivastava <shubhangi.shrivastava@xxxxxxxxx>
To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Shubhangi Shrivastava <shubhangi.shrivastava@xxxxxxxxx>
Subject:  [PATCH 2/6] drm/i915: Cleaning up
	intel_dp_hpd_pulse
Message-ID:
	<1451998226-21433-3-git-send-email-shubhangi.shrivastava@xxxxxxxxx>

Current DP detection has DPCD operations split across
intel_dp_hpd_pulse and intel_dp_detect which contains
duplicates as well. Also intel_dp_detect is called
during modes enumeration as well which will result
in multiple dpcd operations. So this patch tries
to solve both these by bringing all DPCD operations
in one single function and make intel_dp_detect
use existing values instead of repeating same steps.

v2: Pulled in a hunk from last patch of the series to
     this patch. (Ander)
v3: Added MST hotplug handling. (Ander)

Tested-by: Nathan D Ciobanu <nathan.d.ciobanu@xxxxxxxxx>
Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani@xxxxxxxxx>
Signed-off-by: Shubhangi Shrivastava <shubhangi.shrivastava@xxxxxxxxx>
---
  drivers/gpu/drm/i915/intel_dp.c | 71 +++++++++++++++++++++++++----------------
  1 file changed, 44 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index e3b4208..137757b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4645,8 +4645,19 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
  	intel_dp_probe_oui(intel_dp);
ret = intel_dp_probe_mst(intel_dp);
-	if (ret)
+	if (ret) {
+		goto out;
+	} else if (connector->status == connector_status_connected) {
+		/*
+		 * If display was connected already and is still connected
+		 * check links status, there has been known issues of
+		 * link loss triggerring long pulse!!!!
+		 */
+		drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+		intel_dp_check_link_status(intel_dp);
+		drm_modeset_unlock(&dev->mode_config.connection_mutex);
  		goto out;
+	}
/*
  	 * Clearing NACK and defer counts to get their exact values
@@ -4677,8 +4688,21 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
  	}
out:
-	if (status != connector_status_connected)
+	if (status != connector_status_connected) {
  		intel_dp_unset_edid(intel_dp);
+		/*
+		 * If we were in MST mode, and device is not there,
+		 * get out of MST mode
+		 */
+		if (intel_dp->is_mst) {
+			DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
+				intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
+			intel_dp->is_mst = false;
+			drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+							intel_dp->is_mst);
+		}
+	}
+
  	intel_display_power_put(to_i915(dev), power_domain);
  	return;
  }
@@ -4701,7 +4725,8 @@ intel_dp_detect(struct drm_connector *connector, bool force)
  		return connector_status_disconnected;
  	}
- intel_dp_long_pulse(intel_dp->attached_connector);
+	if (force)
+		intel_dp_long_pulse(intel_dp->attached_connector);
if (intel_connector->detect_edid)
  		return connector_status_connected;
@@ -5034,25 +5059,25 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
  		/* indicate that we need to restart link training */
  		intel_dp->train_set_valid = false;
- if (!intel_digital_port_connected(dev_priv, intel_dig_port))
-			goto mst_fail;
-
-		if (!intel_dp_get_dpcd(intel_dp)) {
-			goto mst_fail;
-		}
-
-		intel_dp_probe_oui(intel_dp);
+		intel_dp_long_pulse(intel_dp->attached_connector);
+		if (intel_dp->is_mst)
+			ret = IRQ_HANDLED;
+		goto put_power;
- if (!intel_dp_probe_mst(intel_dp)) {
-			drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
-			intel_dp_check_link_status(intel_dp);
-			drm_modeset_unlock(&dev->mode_config.connection_mutex);
-			goto mst_fail;
-		}
  	} else {
  		if (intel_dp->is_mst) {
-			if (intel_dp_check_mst_status(intel_dp) == -EINVAL)
-				goto mst_fail;
+			if (intel_dp_check_mst_status(intel_dp) == -EINVAL) {
+				/*
+				 * If we were in MST mode, and device is not
+				 * there, get out of MST mode
+				 */
+				DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
+					intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
+				intel_dp->is_mst = false;
+				drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+								intel_dp->is_mst);
+				goto put_power;
+			}
  		}
if (!intel_dp->is_mst) {
@@ -5064,14 +5089,6 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
ret = IRQ_HANDLED; - goto put_power;
-mst_fail:
-	/* if we were in MST mode, and device is not there get out of MST mode */
-	if (intel_dp->is_mst) {
-		DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n", intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
-		intel_dp->is_mst = false;
-		drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr, intel_dp->is_mst);
-	}
  put_power:
  	intel_display_power_put(dev_priv, power_domain);

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux