All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Subject: [PATCH 07/15] drm/i915: Create intel_dp->prepare_link_retrain() hook
Date: Mon,  5 Oct 2015 10:01:19 +0300	[thread overview]
Message-ID: <1444028487-6501-8-git-send-email-ander.conselvan.de.oliveira@intel.com> (raw)
In-Reply-To: <1444028487-6501-1-git-send-email-ander.conselvan.de.oliveira@intel.com>

In order to prepare for a link training with DDI, the state machine
would call intel_ddi_prepare_link_retrain(). To remove the dependency to
the hardware information, replace that direct call with a callback.

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c              | 8 ++++----
 drivers/gpu/drm/i915/intel_dp.c               | 3 +++
 drivers/gpu/drm/i915/intel_dp_link_training.c | 6 ++----
 drivers/gpu/drm/i915/intel_drv.h              | 6 +++++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 220679d..d9af009 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2968,11 +2968,11 @@ void intel_ddi_pll_init(struct drm_device *dev)
 	}
 }
 
-void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder)
+void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp)
 {
-	struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
-	struct intel_dp *intel_dp = &intel_dig_port->dp;
-	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
+	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+	struct drm_i915_private *dev_priv =
+		to_i915(intel_dig_port->base.base.dev);
 	enum port port = intel_dig_port->port;
 	uint32_t val;
 	bool wait = false;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 619b422..f64888f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5746,6 +5746,9 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 	else
 		intel_dp->get_aux_send_ctl = i9xx_get_aux_send_ctl;
 
+	if (HAS_DDI(dev))
+		intel_dp->prepare_link_retrain = intel_ddi_prepare_link_retrain;
+
 	/* Preserve the current hw state. */
 	intel_dp->DP = I915_READ(intel_dp->output_reg);
 	intel_dp->attached_connector = intel_connector;
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
index f33cbbb..e7f9320 100644
--- a/drivers/gpu/drm/i915/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
@@ -108,8 +108,6 @@ intel_dp_update_link_train(struct intel_dp *intel_dp)
 static bool
 intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp)
 {
-	struct drm_encoder *encoder = &dp_to_dig_port(intel_dp)->base.base;
-	struct drm_device *dev = encoder->dev;
 	int i;
 	uint8_t voltage;
 	int voltage_tries, loop_tries;
@@ -117,8 +115,8 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp)
 	uint8_t link_bw, rate_select;
 	uint8_t link_status[DP_LINK_STATUS_SIZE];
 
-	if (HAS_DDI(dev))
-		intel_ddi_prepare_link_retrain(encoder);
+	if (intel_dp->prepare_link_retrain)
+		intel_dp->prepare_link_retrain(intel_dp);
 
 	intel_dp_compute_rate(intel_dp, intel_dp->link_rate,
 			      &link_bw, &rate_select);
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index f6fd359..5bb7eb5 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -798,6 +798,10 @@ struct intel_dp {
 				     bool has_aux_irq,
 				     int send_bytes,
 				     uint32_t aux_clock_divider);
+
+	/* This is called before a link training is starterd */
+	void (*prepare_link_retrain)(struct intel_dp *intel_dp);
+
 	bool train_set_valid;
 
 	/* Displayport compliance testing */
@@ -1002,7 +1006,7 @@ void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
 bool intel_ddi_pll_select(struct intel_crtc *crtc,
 			  struct intel_crtc_state *crtc_state);
 void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
-void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
+void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp);
 bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
 void intel_ddi_fdi_disable(struct drm_crtc *crtc);
 void intel_ddi_get_config(struct intel_encoder *encoder,
-- 
2.4.3

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

  parent reply	other threads:[~2015-10-05  7:02 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05  7:01 [PATCH 00/15] Making DP link training code more readable Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 01/15] drm/i915: Rename DP link training functions Ander Conselvan de Oliveira
2015-10-06  8:54   ` Daniel Vetter
2015-10-05  7:01 ` [PATCH 02/15] drm/i915: Don't pass *DP around to " Ander Conselvan de Oliveira
2015-10-19  4:45   ` Thulasimani, Sivakumar
2015-10-19  7:36     ` Conselvan De Oliveira, Ander
2015-10-19  8:56     ` Ander Conselvan De Oliveira
2015-10-19  9:01       ` Thulasimani, Sivakumar
2015-10-21 13:52         ` [PATCH v2] " Ander Conselvan de Oliveira
2015-10-21 14:08           ` Thulasimani, Sivakumar
2015-10-05  7:01 ` [PATCH 03/15] drm/i915: Split intel_dp_update_link_train() Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 04/15] drm/i915: Split write of pattern to DP reg from intel_dp_set_link_train Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 05/15] drm/i915: Don't call intel_dp_set_signal_levels() on link train reset Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 06/15] drm/i915: Move generic link training code to a separate file Ander Conselvan de Oliveira
2015-10-05  7:01 ` Ander Conselvan de Oliveira [this message]
2015-10-05  7:01 ` [PATCH 08/15] drm/i915: Make intel_dp_source_supports_hbr2() take an intel_dp pointer Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 09/15] drm/i915: Move link training setup code to separate functions Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 10/15] drm/i915: Move test for max voltage on all lanes to separate function Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 11/15] drm/i915: Add function for getting the current link training voltage Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 12/15] drm/i915: Split full retries loop out of clock recovery code Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 13/15] drm/i915: Make the link training test for same voltage Ander Conselvan de Oliveira
2015-10-06 10:41   ` [PATCH v2] drm/i915: Make the link training test for same voltage smaller Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 14/15] drm/i915: Move the voltage changed check into intel_get_adjust_train() Ander Conselvan de Oliveira
2015-10-05  7:01 ` [PATCH 15/15] drm/i915: Add missing newline to link training debug message Ander Conselvan de Oliveira

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=1444028487-6501-8-git-send-email-ander.conselvan.de.oliveira@intel.com \
    --to=ander.conselvan.de.oliveira@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.