* [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.