All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com>
Subject: [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status
Date: Tue,  5 Jan 2016 18:20:23 +0530	[thread overview]
Message-ID: <1451998226-21433-4-git-send-email-shubhangi.shrivastava@intel.com> (raw)
In-Reply-To: <1451998226-21433-1-git-send-email-shubhangi.shrivastava@intel.com>

When created originally intel_dp_check_link_status()
was supposed to handle only link training for short
pulse but has grown into handler for short pulse itself.
This patch cleans up this function by splitting it into
two halves. First intel_dp_short_pulse() is called,
which will be entry point and handle all logic for
short pulse handling while intel_dp_check_link_status()
will retain its original purpose of only doing link
status related work.
The link retraining part when EQ is not correct is
retained to intel_dp_check_link_status whereas other
operations are handled as part of intel_dp_short_pulse.
This change is required to avoid performing all DPCD
related operations on performing link retraining.

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

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 137757b..842790e 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4289,6 +4289,33 @@ go_again:
 	return -EINVAL;
 }
 
+static void
+intel_dp_check_link_status(struct intel_dp *intel_dp)
+{
+	struct intel_encoder *intel_encoder = &dp_to_dig_port(intel_dp)->base;
+	u8 link_status[DP_LINK_STATUS_SIZE];
+
+	if (!intel_dp_get_link_status(intel_dp, link_status)) {
+		DRM_ERROR("Failed to get link status\n");
+		return;
+	}
+
+	if (!intel_encoder->base.crtc)
+		return;
+
+	if (!to_intel_crtc(intel_encoder->base.crtc)->active)
+		return;
+
+	/* if link training is requested we should perform it always */
+	if ((intel_dp->compliance_test_type == DP_TEST_LINK_TRAINING) ||
+		(!drm_dp_channel_eq_ok(link_status, intel_dp->lane_count))) {
+		DRM_DEBUG_KMS("%s: channel EQ not ok, retraining\n",
+				intel_encoder->base.name);
+		intel_dp_start_link_train(intel_dp);
+		intel_dp_stop_link_train(intel_dp);
+	}
+}
+
 /*
  * According to DP spec
  * 5.1.2:
@@ -4298,15 +4325,12 @@ go_again:
  *  4. Check link status on receipt of hot-plug interrupt
  */
 static void
-intel_dp_check_link_status(struct intel_dp *intel_dp)
+intel_dp_short_pulse(struct intel_dp *intel_dp)
 {
 	struct drm_device *dev = intel_dp_to_dev(intel_dp);
-	struct intel_encoder *intel_encoder = &dp_to_dig_port(intel_dp)->base;
 	u8 sink_irq_vector;
 	u8 link_status[DP_LINK_STATUS_SIZE];
 
-	WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex));
-
 	/*
 	 * Clearing compliance test variables to allow capturing
 	 * of values for next automated test request.
@@ -4315,12 +4339,6 @@ intel_dp_check_link_status(struct intel_dp *intel_dp)
 	intel_dp->compliance_test_type = 0;
 	intel_dp->compliance_test_data = 0;
 
-	if (!intel_encoder->base.crtc)
-		return;
-
-	if (!to_intel_crtc(intel_encoder->base.crtc)->active)
-		return;
-
 	/* Try to read receiver status if the link appears to be up */
 	if (!intel_dp_get_link_status(intel_dp, link_status)) {
 		return;
@@ -4345,14 +4363,9 @@ intel_dp_check_link_status(struct intel_dp *intel_dp)
 			DRM_DEBUG_DRIVER("CP or sink specific irq unhandled\n");
 	}
 
-	/* if link training is requested we should perform it always */
-	if ((intel_dp->compliance_test_type == DP_TEST_LINK_TRAINING) ||
-		(!drm_dp_channel_eq_ok(link_status, intel_dp->lane_count))) {
-		DRM_DEBUG_KMS("%s: channel EQ not ok, retraining\n",
-			      intel_encoder->base.name);
-		intel_dp_start_link_train(intel_dp);
-		intel_dp_stop_link_train(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);
 }
 
 /* XXX this is probably wrong for multiple downstream ports */
@@ -5080,11 +5093,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
 			}
 		}
 
-		if (!intel_dp->is_mst) {
-			drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
-			intel_dp_check_link_status(intel_dp);
-			drm_modeset_unlock(&dev->mode_config.connection_mutex);
-		}
+		if (!intel_dp->is_mst)
+			intel_dp_short_pulse(intel_dp);
 	}
 
 	ret = IRQ_HANDLED;
-- 
2.6.1

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

  parent reply	other threads:[~2016-01-05 12:47 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-05 12:50 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 1/6] drm/i915: Splitting intel_dp_detect Shubhangi Shrivastava
2016-01-13 11:20   ` Ander Conselvan De Oliveira
2016-01-13 13:33     ` Ander Conselvan De Oliveira
2016-01-14 13:50       ` Shubhangi Shrivastava
2016-01-15 10:07         ` Ander Conselvan De Oliveira
2016-01-18 10:24           ` [PATCH] " Shubhangi Shrivastava
2016-01-19  8:51           ` [PATCH 1/6] " Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 2/6] drm/i915: Cleaning up intel_dp_hpd_pulse Shubhangi Shrivastava
2016-01-13 14:05   ` Ander Conselvan De Oliveira
2016-01-05 12:50 ` Shubhangi Shrivastava [this message]
2016-01-13 15:04   ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Ander Conselvan De Oliveira
2016-01-18 10:52     ` [PATCH] " Shubhangi Shrivastava
2016-01-18 21:05       ` Lukas Wunner
2016-01-19  4:44         ` Thulasimani, Sivakumar
2016-01-19  8:44           ` Daniel Vetter
2016-01-19  8:59             ` Thulasimani, Sivakumar
2016-01-19  9:05               ` Daniel Vetter
2016-01-19  9:11                 ` Thulasimani, Sivakumar
2016-01-19  9:55                   ` [PATCH] drm/i915: Reorganizing intel_dp_check_link_status Shubhangi Shrivastava
2016-01-19  8:53     ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 4/6] drm/i915: Save sink_count for tracking changes to it Shubhangi Shrivastava
2016-01-14 13:00   ` Ander Conselvan De Oliveira
2016-01-19  8:56     ` Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 5/6] drm/i915: read sink_count dpcd always Shubhangi Shrivastava
2016-01-14 13:04   ` Ander Conselvan De Oliveira
2016-01-18 12:44     ` Shubhangi Shrivastava
2016-01-18 12:46       ` Shubhangi Shrivastava
2016-01-18 12:49         ` [PATCH] drm/i915: Save sink_count for tracking changes to it and " Shubhangi Shrivastava
2016-01-18 13:00       ` [PATCH 5/6] drm/i915: " Ander Conselvan De Oliveira
2016-01-19  8:36         ` Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 6/6] drm/i915: force full detect on sink count change Shubhangi Shrivastava
2016-01-14 13:50   ` Ander Conselvan De Oliveira
2016-01-19  8:40     ` Shubhangi Shrivastava
2016-01-05 13:49 ` ✗ warning: Fi.CI.BAT Patchwork
2016-01-18 10:49 ` ✗ Fi.CI.BAT: warning for Fixing sink count related detection over (rev6) Patchwork
2016-01-18 11:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev7) Patchwork
2016-01-18 13:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev8) Patchwork
2016-01-19  9:38   ` Ander Conselvan De Oliveira
2016-01-19 10:22     ` Shrivastava, Shubhangi
2016-01-19 10:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev9) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2015-11-06 12:28 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2015-11-06 12:28 ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Shubhangi Shrivastava
2015-11-02 12:55 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2015-11-02 12:55 ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Shubhangi Shrivastava
2015-11-02 13:11   ` kbuild test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1451998226-21433-4-git-send-email-shubhangi.shrivastava@intel.com \
    --to=shubhangi.shrivastava@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.