All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] Enable upfront link training on DDI platforms
@ 2016-08-09  2:33 Manasi Navare
  2016-08-09  2:33 ` [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params() Manasi Navare
                   ` (12 more replies)
  0 siblings, 13 replies; 17+ messages in thread
From: Manasi Navare @ 2016-08-09  2:33 UTC (permalink / raw)
  To: intel-gfx

This patch series enables upfront link training on DDI platforms
(SKL/BDW/HSW/BXT). They are based on some of the pacthes submitted
earlier by Ander and Durgadoss.

The upfront link training had to be factored out of long pulse
hanlder because of deadlock issues seen on DP MST cases.
Now the upfront link training takes place in intel_dp_mode_valid()
to find the maximum lane count and link rate at which the DP link
can be successfully trained. These values are used to prune the
invalid modes before modeset. Modeset makes use the upfront lane
count and link train values.

These patches have been validated for DP SST on DDI platforms
(SKL/HSW/BDW/BXT). They have also been tested for any regressions
on non DDI platforms (CHV).

Ander Conselvan de Oliveira (3):
  drm/i915: Don't pass crtc_state to intel_dp_set_link_params()
  drm/i915: Remove ddi_pll_sel from intel_crtc_state
  drm/i915: Split intel_ddi_pre_enable() into DP and HDMI versions

Durgadoss R (2):
  drm/i915: Split bxt_ddi_pll_select()
  drm/i915/dp: Enable Upfront link training for typeC DP support on BXT

Jim Bride (2):
  drm/i915: Split skl_get_dpll()
  drm/i915/dp: Enable upfront link training on SKL

Manasi Navare (2):
  drm/i915: Split hsw_get_dpll()
  drm/i915: Enable upfront link training support for HSW/BDW

 drivers/gpu/drm/i915/intel_ddi.c              | 207 +++++++++---
 drivers/gpu/drm/i915/intel_display.c          |  43 +--
 drivers/gpu/drm/i915/intel_dp.c               | 386 ++++++++++++++++------
 drivers/gpu/drm/i915/intel_dp_link_training.c |   7 +-
 drivers/gpu/drm/i915/intel_dp_mst.c           |   9 +-
 drivers/gpu/drm/i915/intel_dpll_mgr.c         | 457 ++++++++++++++++----------
 drivers/gpu/drm/i915/intel_dpll_mgr.h         |  15 +
 drivers/gpu/drm/i915/intel_drv.h              |  29 +-
 8 files changed, 776 insertions(+), 377 deletions(-)

-- 
1.9.1

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

^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH 0/9] Enable upfront link training on DDI platforms
@ 2016-08-09 19:29 Manasi Navare
  2016-08-09 19:29 ` [PATCH v2 2/9] drm/i915: Remove ddi_pll_sel from intel_crtc_state Manasi Navare
  0 siblings, 1 reply; 17+ messages in thread
From: Manasi Navare @ 2016-08-09 19:29 UTC (permalink / raw)
  To: intel-gfx

This patch series enables upfront link training on DDI platforms
(SKL/BDW/HSW/BXT). They are based on some of the patches submitted
earlier by Ander and Durgadoss.

The upfront link training had to be factored out of long pulse
hanlder because of deadlock issues seen on DP MST cases.
Now the upfront link training takes place in intel_dp_mode_valid()
to find the maximum lane count and link rate at which the DP link
can be successfully trained. These values are used to prune the
invalid modes before modeset. Modeset makes use the upfront lane
count and link train values.

These patches have been validated for DP SST on DDI platforms
(SKL/HSW/BDW/BXT). They have also been tested for any regressions
on non DDI platforms (CHV).

Ander Conselvan de Oliveira (3):
  drm/i915: Don't pass crtc_state to intel_dp_set_link_params()
  drm/i915: Remove ddi_pll_sel from intel_crtc_state
  drm/i915: Split intel_ddi_pre_enable() into DP and HDMI versions

Durgadoss R (2):
  drm/i915: Split bxt_ddi_pll_select()
  drm/i915/dp: Enable Upfront link training for typeC DP support on BXT

Jim Bride (2):
  drm/i915: Split skl_get_dpll()
  drm/i915/dp: Enable upfront link training on SKL

Manasi Navare (2):
  drm/i915: Split hsw_get_dpll()
  drm/i915: Enable upfront link training support for HSW/BDW

 drivers/gpu/drm/i915/intel_ddi.c              | 207 +++++++++---
 drivers/gpu/drm/i915/intel_display.c          |  43 +--
 drivers/gpu/drm/i915/intel_dp.c               | 386 ++++++++++++++++------
 drivers/gpu/drm/i915/intel_dp_link_training.c |   7 +-
 drivers/gpu/drm/i915/intel_dp_mst.c           |   9 +-
 drivers/gpu/drm/i915/intel_dpll_mgr.c         | 457 ++++++++++++++++----------
 drivers/gpu/drm/i915/intel_dpll_mgr.h         |  15 +
 drivers/gpu/drm/i915/intel_drv.h              |  29 +-
 8 files changed, 776 insertions(+), 377 deletions(-)

-- 
1.9.1

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

^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params()
       [not found] ` <1470770143-5163-1-git-send-email-manasi.d.navare@intel.com>
@ 2016-08-19 23:33 Manasi Navare
       [not found] ` <1470770143-5163-1-git-send-email-manasi.d.navare@intel.com>
  1 sibling, 1 reply; 17+ messages in thread
From: Manasi Navare @ 2016-08-19 23:33 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ander Conselvan de Oliveira

From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>

Decouple intel_dp_set_link_params() from struct intel_crtc_state. This
will be useful for implementing DP upfront link training.

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

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index c2df4e4..530ee9f 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1637,7 +1637,10 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
 
 		intel_prepare_dp_ddi_buffers(intel_encoder);
 
-		intel_dp_set_link_params(intel_dp, crtc->config);
+		intel_dp_set_link_params(intel_dp, crtc->config->port_clock,
+					 crtc->config->lane_count,
+					 intel_crtc_has_type(crtc->config,
+							     INTEL_OUTPUT_DP_MST));
 
 		intel_ddi_init_dp_buf_reg(intel_encoder);
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 364db90..2cfb2ae 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1640,11 +1640,12 @@ found:
 }
 
 void intel_dp_set_link_params(struct intel_dp *intel_dp,
-			      const struct intel_crtc_state *pipe_config)
+			      int link_rate, uint8_t lane_count,
+			      bool link_mst)
 {
-	intel_dp->link_rate = pipe_config->port_clock;
-	intel_dp->lane_count = pipe_config->lane_count;
-	intel_dp->link_mst = intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST);
+	intel_dp->link_rate = link_rate;
+	intel_dp->lane_count = lane_count;
+	intel_dp->link_mst = link_mst;
 }
 
 static void intel_dp_prepare(struct intel_encoder *encoder)
@@ -1656,7 +1657,10 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
 	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 
-	intel_dp_set_link_params(intel_dp, crtc->config);
+	intel_dp_set_link_params(intel_dp, crtc->config->port_clock,
+				 crtc->config->lane_count,
+				 intel_crtc_has_type(crtc->config,
+						     INTEL_OUTPUT_DP_MST));
 
 	/*
 	 * There are four kinds of DP registers:
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index 629337d..e654fea 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -173,8 +173,10 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
 		intel_ddi_clk_select(&intel_dig_port->base, intel_crtc->config);
 
 		intel_prepare_dp_ddi_buffers(&intel_dig_port->base);
-
-		intel_dp_set_link_params(intel_dp, intel_crtc->config);
+		intel_dp_set_link_params(intel_dp,
+					 intel_crtc->config->port_clock,
+					 intel_crtc->config->lane_count,
+					 true);
 
 		intel_ddi_init_dp_buf_reg(&intel_dig_port->base);
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 774aab3..990a9b9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1367,7 +1367,8 @@ bool intel_dp_init(struct drm_device *dev, i915_reg_t output_reg, enum port port
 bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 			     struct intel_connector *intel_connector);
 void intel_dp_set_link_params(struct intel_dp *intel_dp,
-			      const struct intel_crtc_state *pipe_config);
+			      int link_rate, uint8_t lane_count,
+			      bool link_mst);
 void intel_dp_start_link_train(struct intel_dp *intel_dp);
 void intel_dp_stop_link_train(struct intel_dp *intel_dp);
 void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
-- 
1.9.1

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

^ permalink raw reply related	[flat|nested] 17+ messages in thread
* [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params()
       [not found] ` <1470770143-5163-1-git-send-email-manasi.d.navare@intel.com>
@ 2016-08-23  1:41 Manasi Navare
  1 sibling, 0 replies; 17+ messages in thread
From: Manasi Navare @ 2016-08-23  1:41 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ander Conselvan de Oliveira

From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>

Decouple intel_dp_set_link_params() from struct intel_crtc_state. This
will be useful for implementing DP upfront link training.

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

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index c2df4e4..530ee9f 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1637,7 +1637,10 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
 
 		intel_prepare_dp_ddi_buffers(intel_encoder);
 
-		intel_dp_set_link_params(intel_dp, crtc->config);
+		intel_dp_set_link_params(intel_dp, crtc->config->port_clock,
+					 crtc->config->lane_count,
+					 intel_crtc_has_type(crtc->config,
+							     INTEL_OUTPUT_DP_MST));
 
 		intel_ddi_init_dp_buf_reg(intel_encoder);
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 364db90..2cfb2ae 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1640,11 +1640,12 @@ found:
 }
 
 void intel_dp_set_link_params(struct intel_dp *intel_dp,
-			      const struct intel_crtc_state *pipe_config)
+			      int link_rate, uint8_t lane_count,
+			      bool link_mst)
 {
-	intel_dp->link_rate = pipe_config->port_clock;
-	intel_dp->lane_count = pipe_config->lane_count;
-	intel_dp->link_mst = intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST);
+	intel_dp->link_rate = link_rate;
+	intel_dp->lane_count = lane_count;
+	intel_dp->link_mst = link_mst;
 }
 
 static void intel_dp_prepare(struct intel_encoder *encoder)
@@ -1656,7 +1657,10 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
 	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 
-	intel_dp_set_link_params(intel_dp, crtc->config);
+	intel_dp_set_link_params(intel_dp, crtc->config->port_clock,
+				 crtc->config->lane_count,
+				 intel_crtc_has_type(crtc->config,
+						     INTEL_OUTPUT_DP_MST));
 
 	/*
 	 * There are four kinds of DP registers:
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index 629337d..e654fea 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -173,8 +173,10 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
 		intel_ddi_clk_select(&intel_dig_port->base, intel_crtc->config);
 
 		intel_prepare_dp_ddi_buffers(&intel_dig_port->base);
-
-		intel_dp_set_link_params(intel_dp, intel_crtc->config);
+		intel_dp_set_link_params(intel_dp,
+					 intel_crtc->config->port_clock,
+					 intel_crtc->config->lane_count,
+					 true);
 
 		intel_ddi_init_dp_buf_reg(&intel_dig_port->base);
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 92c38d4..c79ca10 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1367,7 +1367,8 @@ bool intel_dp_init(struct drm_device *dev, i915_reg_t output_reg, enum port port
 bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 			     struct intel_connector *intel_connector);
 void intel_dp_set_link_params(struct intel_dp *intel_dp,
-			      const struct intel_crtc_state *pipe_config);
+			      int link_rate, uint8_t lane_count,
+			      bool link_mst);
 void intel_dp_start_link_train(struct intel_dp *intel_dp);
 void intel_dp_stop_link_train(struct intel_dp *intel_dp);
 void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
-- 
1.9.1

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

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-08-23  1:27 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-09  2:33 [PATCH 0/9] Enable upfront link training on DDI platforms Manasi Navare
2016-08-09  2:33 ` [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params() Manasi Navare
2016-08-09  2:33 ` [PATCH v2 2/9] drm/i915: Remove ddi_pll_sel from intel_crtc_state Manasi Navare
2016-08-09  2:33 ` [PATCH v2 3/9] drm/i915: Split intel_ddi_pre_enable() into DP and HDMI versions Manasi Navare
2016-08-09  2:33 ` [PATCH v2 4/9] " Manasi Navare
2016-08-09  2:33 ` [PATCH v8 5/9] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Manasi Navare
2016-08-09  2:33 ` [PATCH 6/9] drm/i915: Split skl_get_dpll() Manasi Navare
2016-08-09  2:33 ` [PATCH 7/9] drm/i915/dp: Enable upfront link training on SKL Manasi Navare
2016-08-09  2:33 ` [PATCH 8/9] drm/i915: Split hsw_get_dpll() Manasi Navare
2016-08-09  2:33 ` [PATCH 9/9] drm/i915: Enable upfront link training support for HSW/BDW Manasi Navare
2016-08-09  3:34 ` ✗ Fi.CI.BAT: failure for Enable upfront link training on DDI platforms Patchwork
2016-08-09  5:54 ` ✗ Ro.CI.BAT: " Patchwork
2016-08-09 16:08 ` Patchwork
2016-08-09 18:29 ` [PATCH 0/9] " Manasi Navare
2016-08-09 19:29 Manasi Navare
2016-08-09 19:29 ` [PATCH v2 2/9] drm/i915: Remove ddi_pll_sel from intel_crtc_state Manasi Navare
2016-08-19 23:33 [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params() Manasi Navare
     [not found] ` <1470770143-5163-1-git-send-email-manasi.d.navare@intel.com>
2016-08-19 23:33   ` [PATCH v2 2/9] drm/i915: Remove ddi_pll_sel from intel_crtc_state Manasi Navare
2016-08-23  1:41   ` Manasi Navare
2016-08-23  1:41 [PATCH 1/9] drm/i915: Don't pass crtc_state to intel_dp_set_link_params() Manasi Navare

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.