All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed
@ 2015-12-21 11:39 Mika Kahola
  2015-12-21 11:39 ` [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes Mika Kahola
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Mika Kahola @ 2015-12-21 11:39 UTC (permalink / raw)
  To: intel-gfx

These two patches are fixes for DP link trainging failures and flickering issues
reported by 

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

Mika Kahola (2):
  drm/i915: Disable fast link training if DP config changes
  drm/i915: Check DP no aux transaction bit on link training

 drivers/gpu/drm/i915/intel_dp.c               |  7 ++++++-
 drivers/gpu/drm/i915/intel_dp_link_training.c | 22 ++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_drv.h              |  1 +
 3 files changed, 29 insertions(+), 1 deletion(-)

-- 
1.9.1

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

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

* [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes
  2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
@ 2015-12-21 11:39 ` Mika Kahola
  2015-12-21 11:39 ` [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training Mika Kahola
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Mika Kahola @ 2015-12-21 11:39 UTC (permalink / raw)
  To: intel-gfx

Disable DP link training optimization if DP link configuration
changes. If one of the DP link parameters i.e. link rate or
lane count changes the link training does no longer apply the
previously computed drive current and pre-emphasis level.
Instead, the link training is started with zero values.

v5: Commit message update. Split the original patch in two.
    This part considers only changes on link configuration.
    Removed unnecessary debug messages. (Ville)

v4: Parameter and debug message naming improvements.
    Fix for link parameter check (Ville)

v3: Remove cached old link parameters. Instead, disable
    fast link training feature when link parameters are
    set (Ville)

v2: Readout DPCD register to check if no aux handshaking is
    required in link training (Ander)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c               | 5 +++++
 drivers/gpu/drm/i915/intel_dp_link_training.c | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 796e3d3..6b36d82 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1676,6 +1676,11 @@ found:
 void intel_dp_set_link_params(struct intel_dp *intel_dp,
 			      const struct intel_crtc_state *pipe_config)
 {
+	if (intel_dp->link_rate != pipe_config->port_clock ||
+	    intel_dp->lane_count != pipe_config->lane_count) {
+		intel_dp->train_set_valid = false;
+	}
+
 	intel_dp->link_rate = pipe_config->port_clock;
 	intel_dp->lane_count = pipe_config->lane_count;
 }
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
index 8888793..59d59be 100644
--- a/drivers/gpu/drm/i915/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
@@ -85,6 +85,9 @@ static bool
 intel_dp_reset_link_train(struct intel_dp *intel_dp,
 			uint8_t dp_train_pat)
 {
+	DRM_DEBUG_KMS("link training optimization: %s\n",
+		      intel_dp->train_set_valid ? "true" : "false");
+
 	if (!intel_dp->train_set_valid)
 		memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set));
 	intel_dp_set_signal_levels(intel_dp);
-- 
1.9.1

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

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

* [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
  2015-12-21 11:39 ` [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes Mika Kahola
@ 2015-12-21 11:39 ` Mika Kahola
  2015-12-22 15:53   ` Lukas Wunner
  2015-12-21 12:14 ` ✗ warning: Fi.CI.BAT Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Mika Kahola @ 2015-12-21 11:39 UTC (permalink / raw)
  To: intel-gfx

Check if no AUX transactions are required on DP link training.
If this bit is set, we can reuse the known good drive current
and pre-emphasis level from the last "full" link training.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c               |  2 +-
 drivers/gpu/drm/i915/intel_dp_link_training.c | 19 +++++++++++++++++++
 drivers/gpu/drm/i915/intel_drv.h              |  1 +
 3 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 6b36d82..3137187 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3852,7 +3852,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
 	intel_dp->DP = DP;
 }
 
-static bool
+bool
 intel_dp_get_dpcd(struct intel_dp *intel_dp)
 {
 	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
index 59d59be..5fb3f97 100644
--- a/drivers/gpu/drm/i915/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
@@ -85,6 +85,25 @@ static bool
 intel_dp_reset_link_train(struct intel_dp *intel_dp,
 			uint8_t dp_train_pat)
 {
+	bool has_dpcd;
+	bool no_aux_handshake = false;
+
+	has_dpcd = intel_dp_get_dpcd(intel_dp);
+
+	/*
+	 * Source device can try to use drive current and pre-emphasis
+	 * parameters computed by the last "full" link training if the
+	 * DP_NO_AUX_HANDSHAKE_LINK_TRAINING bit is set to 1.
+	 */
+	if (has_dpcd) {
+		if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) {
+			no_aux_handshake = (intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
+					    DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
+		}
+	}
+
+	intel_dp->train_set_valid &= no_aux_handshake;
+
 	DRM_DEBUG_KMS("link training optimization: %s\n",
 		      intel_dp->train_set_valid ? "true" : "false");
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index d523ebb..c36a70c 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1239,6 +1239,7 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
 bool intel_dp_compute_config(struct intel_encoder *encoder,
 			     struct intel_crtc_state *pipe_config);
 bool intel_dp_is_edp(struct drm_device *dev, enum port port);
+bool intel_dp_get_dpcd(struct intel_dp *intel_dp);
 enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
 				  bool long_hpd);
 void intel_edp_backlight_on(struct intel_dp *intel_dp);
-- 
1.9.1

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

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

* ✗ warning: Fi.CI.BAT
  2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
  2015-12-21 11:39 ` [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes Mika Kahola
  2015-12-21 11:39 ` [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training Mika Kahola
@ 2015-12-21 12:14 ` Patchwork
  2015-12-21 12:14 ` Patchwork
  2015-12-21 12:20 ` Patchwork
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2015-12-21 12:14 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

== Summary ==

Built on c7ae36da9cc3dd7480cec86a8b19fc76d075927d drm-intel-nightly: 2015y-12m-21d-10h-37m-34s UTC integration manifest

Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                dmesg-warn -> PASS       (bsw-nuc-2)
                pass       -> DMESG-WARN (hsw-gt2)
                dmesg-warn -> PASS       (bdw-nuci7)
                pass       -> DMESG-WARN (skl-i7k-2)
                pass       -> DMESG-WARN (byt-nuc)
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-a:
                pass       -> DMESG-WARN (snb-x220t)
        Subgroup read-crc-pipe-b-frame-sequence:
                dmesg-warn -> PASS       (byt-nuc)
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (snb-x220t)

bdw-nuci7        total:132  pass:122  dwarn:1   dfail:0   fail:0   skip:9  
bdw-ultra        total:132  pass:124  dwarn:2   dfail:0   fail:0   skip:6  
bsw-nuc-2        total:135  pass:114  dwarn:1   dfail:0   fail:0   skip:20 
byt-nuc          total:135  pass:120  dwarn:2   dfail:0   fail:0   skip:13 
hsw-brixbox      total:135  pass:126  dwarn:2   dfail:0   fail:0   skip:7  
hsw-gt2          total:135  pass:129  dwarn:2   dfail:0   fail:0   skip:4  
ilk-hp8440p      total:135  pass:100  dwarn:0   dfail:0   fail:0   skip:35 
ivb-t430s        total:135  pass:127  dwarn:2   dfail:0   fail:0   skip:6  
skl-i5k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
skl-i7k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
snb-dellxps      total:135  pass:121  dwarn:2   dfail:0   fail:0   skip:12 
snb-x220t        total:135  pass:121  dwarn:2   dfail:0   fail:1   skip:11 

Results at /archive/results/CI_IGT_test/Patchwork_774/

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

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

* ✗ warning: Fi.CI.BAT
  2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
                   ` (2 preceding siblings ...)
  2015-12-21 12:14 ` ✗ warning: Fi.CI.BAT Patchwork
@ 2015-12-21 12:14 ` Patchwork
  2015-12-21 12:20 ` Patchwork
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2015-12-21 12:14 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

== Summary ==

Built on c7ae36da9cc3dd7480cec86a8b19fc76d075927d drm-intel-nightly: 2015y-12m-21d-10h-37m-34s UTC integration manifest

Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                dmesg-warn -> PASS       (bsw-nuc-2)
                pass       -> DMESG-WARN (hsw-gt2)
                dmesg-warn -> PASS       (bdw-nuci7)
                pass       -> DMESG-WARN (skl-i7k-2)
                pass       -> DMESG-WARN (byt-nuc)
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-a:
                pass       -> DMESG-WARN (snb-x220t)
        Subgroup read-crc-pipe-b-frame-sequence:
                dmesg-warn -> PASS       (byt-nuc)
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (snb-x220t)

bdw-nuci7        total:132  pass:122  dwarn:1   dfail:0   fail:0   skip:9  
bdw-ultra        total:132  pass:124  dwarn:2   dfail:0   fail:0   skip:6  
bsw-nuc-2        total:135  pass:114  dwarn:1   dfail:0   fail:0   skip:20 
byt-nuc          total:135  pass:120  dwarn:2   dfail:0   fail:0   skip:13 
hsw-brixbox      total:135  pass:126  dwarn:2   dfail:0   fail:0   skip:7  
hsw-gt2          total:135  pass:129  dwarn:2   dfail:0   fail:0   skip:4  
ilk-hp8440p      total:135  pass:100  dwarn:0   dfail:0   fail:0   skip:35 
ivb-t430s        total:135  pass:127  dwarn:2   dfail:0   fail:0   skip:6  
skl-i5k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
skl-i7k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
snb-dellxps      total:135  pass:121  dwarn:2   dfail:0   fail:0   skip:12 
snb-x220t        total:135  pass:121  dwarn:2   dfail:0   fail:1   skip:11 

Results at /archive/results/CI_IGT_test/Patchwork_774/

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

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

* ✗ warning: Fi.CI.BAT
  2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
                   ` (3 preceding siblings ...)
  2015-12-21 12:14 ` Patchwork
@ 2015-12-21 12:20 ` Patchwork
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2015-12-21 12:20 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

== Summary ==

Built on c7ae36da9cc3dd7480cec86a8b19fc76d075927d drm-intel-nightly: 2015y-12m-21d-10h-37m-34s UTC integration manifest

Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                dmesg-warn -> PASS       (bsw-nuc-2)
                pass       -> DMESG-WARN (hsw-gt2)
                dmesg-warn -> PASS       (bdw-nuci7)
                pass       -> DMESG-WARN (skl-i7k-2)
                pass       -> DMESG-WARN (byt-nuc)
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-a:
                pass       -> DMESG-WARN (snb-x220t)
        Subgroup read-crc-pipe-b-frame-sequence:
                dmesg-warn -> PASS       (byt-nuc)
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (snb-x220t)

bdw-nuci7        total:132  pass:122  dwarn:1   dfail:0   fail:0   skip:9  
bdw-ultra        total:132  pass:124  dwarn:2   dfail:0   fail:0   skip:6  
bsw-nuc-2        total:135  pass:114  dwarn:1   dfail:0   fail:0   skip:20 
byt-nuc          total:135  pass:120  dwarn:2   dfail:0   fail:0   skip:13 
hsw-brixbox      total:135  pass:126  dwarn:2   dfail:0   fail:0   skip:7  
hsw-gt2          total:135  pass:129  dwarn:2   dfail:0   fail:0   skip:4  
ilk-hp8440p      total:135  pass:100  dwarn:0   dfail:0   fail:0   skip:35 
ivb-t430s        total:135  pass:127  dwarn:2   dfail:0   fail:0   skip:6  
skl-i5k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
skl-i7k-2        total:135  pass:121  dwarn:6   dfail:0   fail:0   skip:8  
snb-dellxps      total:135  pass:121  dwarn:2   dfail:0   fail:0   skip:12 
snb-x220t        total:135  pass:121  dwarn:2   dfail:0   fail:1   skip:11 

Results at /archive/results/CI_IGT_test/Patchwork_774/

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

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

* Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2015-12-21 11:39 ` [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training Mika Kahola
@ 2015-12-22 15:53   ` Lukas Wunner
  2015-12-23 10:07     ` Jani Nikula
                       ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Lukas Wunner @ 2015-12-22 15:53 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx, Thierry Reding

Hi Mika,

On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
> Check if no AUX transactions are required on DP link training.
> If this bit is set, we can reuse the known good drive current
> and pre-emphasis level from the last "full" link training.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c               |  2 +-
>  drivers/gpu/drm/i915/intel_dp_link_training.c | 19 +++++++++++++++++++
>  drivers/gpu/drm/i915/intel_drv.h              |  1 +
>  3 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 6b36d82..3137187 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3852,7 +3852,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
>  	intel_dp->DP = DP;
>  }
>  
> -static bool
> +bool
>  intel_dp_get_dpcd(struct intel_dp *intel_dp)
>  {
>  	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
> index 59d59be..5fb3f97 100644
> --- a/drivers/gpu/drm/i915/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
> @@ -85,6 +85,25 @@ static bool
>  intel_dp_reset_link_train(struct intel_dp *intel_dp,
>  			uint8_t dp_train_pat)
>  {
> +	bool has_dpcd;
> +	bool no_aux_handshake = false;
> +
> +	has_dpcd = intel_dp_get_dpcd(intel_dp);
> +
> +	/*
> +	 * Source device can try to use drive current and pre-emphasis
> +	 * parameters computed by the last "full" link training if the
> +	 * DP_NO_AUX_HANDSHAKE_LINK_TRAINING bit is set to 1.
> +	 */
> +	if (has_dpcd) {
> +		if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) {
> +			no_aux_handshake = (intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
> +					    DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
> +		}
> +	}
> +
> +	intel_dp->train_set_valid &= no_aux_handshake;
> +

If Thierry Reding's patches get merged (posted to dri-devel@ on Dec 14
with <1450097764-30063-1-git-send-email-thierry.reding@gmail.com>),
you could just use

	if (has_dpcd && drm_dp_fast_training_cap(intel_dp->dpcd))
		intel_dp->train_set_valid &= true;

Also, if the patches get merged, the no_aux_handshake attribute in dev_priv
can be dropped (set in intel_edp_init_connector() but never read).

Best regards,

Lukas

>  	DRM_DEBUG_KMS("link training optimization: %s\n",
>  		      intel_dp->train_set_valid ? "true" : "false");
>  
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index d523ebb..c36a70c 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1239,6 +1239,7 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
>  bool intel_dp_compute_config(struct intel_encoder *encoder,
>  			     struct intel_crtc_state *pipe_config);
>  bool intel_dp_is_edp(struct drm_device *dev, enum port port);
> +bool intel_dp_get_dpcd(struct intel_dp *intel_dp);
>  enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
>  				  bool long_hpd);
>  void intel_edp_backlight_on(struct intel_dp *intel_dp);
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2015-12-22 15:53   ` Lukas Wunner
@ 2015-12-23 10:07     ` Jani Nikula
  2015-12-23 12:30     ` Mika Kahola
  2016-01-04 17:27     ` Thierry Reding
  2 siblings, 0 replies; 11+ messages in thread
From: Jani Nikula @ 2015-12-23 10:07 UTC (permalink / raw)
  To: Lukas Wunner, Mika Kahola; +Cc: intel-gfx, Thierry Reding

On Tue, 22 Dec 2015, Lukas Wunner <lukas@wunner.de> wrote:
> Hi Mika,
>
> On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
>> Check if no AUX transactions are required on DP link training.
>> If this bit is set, we can reuse the known good drive current
>> and pre-emphasis level from the last "full" link training.
>> 
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
>> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_dp.c               |  2 +-
>>  drivers/gpu/drm/i915/intel_dp_link_training.c | 19 +++++++++++++++++++
>>  drivers/gpu/drm/i915/intel_drv.h              |  1 +
>>  3 files changed, 21 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index 6b36d82..3137187 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -3852,7 +3852,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
>>  	intel_dp->DP = DP;
>>  }
>>  
>> -static bool
>> +bool
>>  intel_dp_get_dpcd(struct intel_dp *intel_dp)
>>  {
>>  	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>> diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
>> index 59d59be..5fb3f97 100644
>> --- a/drivers/gpu/drm/i915/intel_dp_link_training.c
>> +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
>> @@ -85,6 +85,25 @@ static bool
>>  intel_dp_reset_link_train(struct intel_dp *intel_dp,
>>  			uint8_t dp_train_pat)
>>  {
>> +	bool has_dpcd;
>> +	bool no_aux_handshake = false;
>> +
>> +	has_dpcd = intel_dp_get_dpcd(intel_dp);
>> +
>> +	/*
>> +	 * Source device can try to use drive current and pre-emphasis
>> +	 * parameters computed by the last "full" link training if the
>> +	 * DP_NO_AUX_HANDSHAKE_LINK_TRAINING bit is set to 1.
>> +	 */
>> +	if (has_dpcd) {
>> +		if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) {
>> +			no_aux_handshake = (intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
>> +					    DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
>> +		}
>> +	}
>> +
>> +	intel_dp->train_set_valid &= no_aux_handshake;
>> +
>
> If Thierry Reding's patches get merged (posted to dri-devel@ on Dec 14
> with <1450097764-30063-1-git-send-email-thierry.reding@gmail.com>),
> you could just use
>
> 	if (has_dpcd && drm_dp_fast_training_cap(intel_dp->dpcd))
> 		intel_dp->train_set_valid &= true;
>
> Also, if the patches get merged, the no_aux_handshake attribute in dev_priv
> can be dropped (set in intel_edp_init_connector() but never read).

Good points, but we don't generally write code, let alone bugfixes, on
top of code that hasn't been merged.

BR,
Jani.


>
> Best regards,
>
> Lukas
>
>>  	DRM_DEBUG_KMS("link training optimization: %s\n",
>>  		      intel_dp->train_set_valid ? "true" : "false");
>>  
>> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
>> index d523ebb..c36a70c 100644
>> --- a/drivers/gpu/drm/i915/intel_drv.h
>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>> @@ -1239,6 +1239,7 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
>>  bool intel_dp_compute_config(struct intel_encoder *encoder,
>>  			     struct intel_crtc_state *pipe_config);
>>  bool intel_dp_is_edp(struct drm_device *dev, enum port port);
>> +bool intel_dp_get_dpcd(struct intel_dp *intel_dp);
>>  enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
>>  				  bool long_hpd);
>>  void intel_edp_backlight_on(struct intel_dp *intel_dp);
>> -- 
>> 1.9.1
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2015-12-22 15:53   ` Lukas Wunner
  2015-12-23 10:07     ` Jani Nikula
@ 2015-12-23 12:30     ` Mika Kahola
  2016-01-04 17:27     ` Thierry Reding
  2 siblings, 0 replies; 11+ messages in thread
From: Mika Kahola @ 2015-12-23 12:30 UTC (permalink / raw)
  To: Lukas Wunner; +Cc: intel-gfx, Thierry Reding

On Tue, 2015-12-22 at 16:53 +0100, Lukas Wunner wrote:
> Hi Mika,
> 
> On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
> > Check if no AUX transactions are required on DP link training.
> > If this bit is set, we can reuse the known good drive current
> > and pre-emphasis level from the last "full" link training.
> > 
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_dp.c               |  2 +-
> >  drivers/gpu/drm/i915/intel_dp_link_training.c | 19 +++++++++++++++++++
> >  drivers/gpu/drm/i915/intel_drv.h              |  1 +
> >  3 files changed, 21 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > index 6b36d82..3137187 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -3852,7 +3852,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
> >  	intel_dp->DP = DP;
> >  }
> >  
> > -static bool
> > +bool
> >  intel_dp_get_dpcd(struct intel_dp *intel_dp)
> >  {
> >  	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> > diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
> > index 59d59be..5fb3f97 100644
> > --- a/drivers/gpu/drm/i915/intel_dp_link_training.c
> > +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
> > @@ -85,6 +85,25 @@ static bool
> >  intel_dp_reset_link_train(struct intel_dp *intel_dp,
> >  			uint8_t dp_train_pat)
> >  {
> > +	bool has_dpcd;
> > +	bool no_aux_handshake = false;
> > +
> > +	has_dpcd = intel_dp_get_dpcd(intel_dp);
> > +
> > +	/*
> > +	 * Source device can try to use drive current and pre-emphasis
> > +	 * parameters computed by the last "full" link training if the
> > +	 * DP_NO_AUX_HANDSHAKE_LINK_TRAINING bit is set to 1.
> > +	 */
> > +	if (has_dpcd) {
> > +		if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) {
> > +			no_aux_handshake = (intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
> > +					    DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
> > +		}
> > +	}
> > +
> > +	intel_dp->train_set_valid &= no_aux_handshake;
> > +
> 
> If Thierry Reding's patches get merged (posted to dri-devel@ on Dec 14
> with <1450097764-30063-1-git-send-email-thierry.reding@gmail.com>),
> you could just use
> 
> 	if (has_dpcd && drm_dp_fast_training_cap(intel_dp->dpcd))
> 		intel_dp->train_set_valid &= true;
> 
> Also, if the patches get merged, the no_aux_handshake attribute in dev_priv
> can be dropped (set in intel_edp_init_connector() but never read).
> 
Thank you for the tip. I have missed this Thierry's patch.

Happy Holidays!
-Mika-

> Best regards,
> 
> Lukas
> 
> >  	DRM_DEBUG_KMS("link training optimization: %s\n",
> >  		      intel_dp->train_set_valid ? "true" : "false");
> >  
> > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> > index d523ebb..c36a70c 100644
> > --- a/drivers/gpu/drm/i915/intel_drv.h
> > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > @@ -1239,6 +1239,7 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
> >  bool intel_dp_compute_config(struct intel_encoder *encoder,
> >  			     struct intel_crtc_state *pipe_config);
> >  bool intel_dp_is_edp(struct drm_device *dev, enum port port);
> > +bool intel_dp_get_dpcd(struct intel_dp *intel_dp);
> >  enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
> >  				  bool long_hpd);
> >  void intel_edp_backlight_on(struct intel_dp *intel_dp);
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx


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

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

* Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2015-12-22 15:53   ` Lukas Wunner
  2015-12-23 10:07     ` Jani Nikula
  2015-12-23 12:30     ` Mika Kahola
@ 2016-01-04 17:27     ` Thierry Reding
  2016-01-05 11:45       ` Mika Kahola
  2 siblings, 1 reply; 11+ messages in thread
From: Thierry Reding @ 2016-01-04 17:27 UTC (permalink / raw)
  To: Lukas Wunner; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 532 bytes --]

On Tue, Dec 22, 2015 at 04:53:41PM +0100, Lukas Wunner wrote:
> Hi Mika,
> 
> On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
> > Check if no AUX transactions are required on DP link training.
> > If this bit is set, we can reuse the known good drive current
> > and pre-emphasis level from the last "full" link training.

The commit message here isn't entirely accurate. You still need AUX
transactions to configure the link according to the values obtained
from the last full training sequence.

Thierry

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

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

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

* Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
  2016-01-04 17:27     ` Thierry Reding
@ 2016-01-05 11:45       ` Mika Kahola
  0 siblings, 0 replies; 11+ messages in thread
From: Mika Kahola @ 2016-01-05 11:45 UTC (permalink / raw)
  To: Thierry Reding; +Cc: intel-gfx

On Mon, 2016-01-04 at 18:27 +0100, Thierry Reding wrote:
> On Tue, Dec 22, 2015 at 04:53:41PM +0100, Lukas Wunner wrote:
> > Hi Mika,
> > 
> > On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
> > > Check if no AUX transactions are required on DP link training.
> > > If this bit is set, we can reuse the known good drive current
> > > and pre-emphasis level from the last "full" link training.
> 
> The commit message here isn't entirely accurate. You still need AUX
> transactions to configure the link according to the values obtained
> from the last full training sequence.
> 
> Thierry

Thanks Thierry! I need to rephrase the commit message.

Cheers,
Mika

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

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

end of thread, other threads:[~2016-01-05 11:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
2015-12-21 11:39 ` [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes Mika Kahola
2015-12-21 11:39 ` [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training Mika Kahola
2015-12-22 15:53   ` Lukas Wunner
2015-12-23 10:07     ` Jani Nikula
2015-12-23 12:30     ` Mika Kahola
2016-01-04 17:27     ` Thierry Reding
2016-01-05 11:45       ` Mika Kahola
2015-12-21 12:14 ` ✗ warning: Fi.CI.BAT Patchwork
2015-12-21 12:14 ` Patchwork
2015-12-21 12:20 ` Patchwork

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.