All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values
@ 2015-10-30 16:47 ville.syrjala
  2015-11-02  8:15 ` Jani Nikula
  2015-11-02 13:21 ` Conselvan De Oliveira, Ander
  0 siblings, 2 replies; 4+ messages in thread
From: ville.syrjala @ 2015-10-30 16:47 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ander Conselvan de Oliveira

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

My Lenovo STM STDP3100 miniDP->VGA dongle doesn't seem to like it when
we try to start link training with non-zero vswing/preemphasis. So when
the initial link training DPCD write fails, retry it with zero values.

Fixes a bunch of errors like so:
[drm:intel_dp_start_link_train [i915]] *ERROR* failed to enable link training

Cc: Mika Kahola <mika.kahola@intel.com>
Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index ba4cbf5..9529a6e 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3750,10 +3750,17 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp)
 
 	DP |= DP_PORT_EN;
 
+again:
 	/* clock recovery */
 	if (!intel_dp_reset_link_train(intel_dp, &DP,
 				       DP_TRAINING_PATTERN_1 |
 				       DP_LINK_SCRAMBLING_DISABLE)) {
+		if (intel_dp->train_set_valid) {
+			DRM_DEBUG_KMS("Sink rejected link training request, trying again with zero values\n");
+			intel_dp->train_set_valid = false;
+			goto again;
+		}
+
 		DRM_ERROR("failed to enable link training\n");
 		return;
 	}
-- 
2.4.10

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

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

* Re: [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values
  2015-10-30 16:47 [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values ville.syrjala
@ 2015-11-02  8:15 ` Jani Nikula
  2015-11-02 13:21 ` Conselvan De Oliveira, Ander
  1 sibling, 0 replies; 4+ messages in thread
From: Jani Nikula @ 2015-11-02  8:15 UTC (permalink / raw)
  To: ville.syrjala, intel-gfx; +Cc: Ander Conselvan de Oliveira

On Fri, 30 Oct 2015, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> My Lenovo STM STDP3100 miniDP->VGA dongle doesn't seem to like it when
> we try to start link training with non-zero vswing/preemphasis. So when
> the initial link training DPCD write fails, retry it with zero values.
>
> Fixes a bunch of errors like so:
> [drm:intel_dp_start_link_train [i915]] *ERROR* failed to enable link training
>
> Cc: Mika Kahola <mika.kahola@intel.com>
> Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
> Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Possibly

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


> ---
>  drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index ba4cbf5..9529a6e 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3750,10 +3750,17 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp)
>  
>  	DP |= DP_PORT_EN;
>  
> +again:
>  	/* clock recovery */
>  	if (!intel_dp_reset_link_train(intel_dp, &DP,
>  				       DP_TRAINING_PATTERN_1 |
>  				       DP_LINK_SCRAMBLING_DISABLE)) {
> +		if (intel_dp->train_set_valid) {
> +			DRM_DEBUG_KMS("Sink rejected link training request, trying again with zero values\n");
> +			intel_dp->train_set_valid = false;
> +			goto again;
> +		}
> +
>  		DRM_ERROR("failed to enable link training\n");
>  		return;
>  	}

-- 
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] 4+ messages in thread

* Re: [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values
  2015-10-30 16:47 [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values ville.syrjala
  2015-11-02  8:15 ` Jani Nikula
@ 2015-11-02 13:21 ` Conselvan De Oliveira, Ander
  2015-11-02 14:55   ` Ville Syrjälä
  1 sibling, 1 reply; 4+ messages in thread
From: Conselvan De Oliveira, Ander @ 2015-11-02 13:21 UTC (permalink / raw)
  To: ville.syrjala, intel-gfx

On Fri, 2015-10-30 at 18:47 +0200, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> My Lenovo STM STDP3100 miniDP->VGA dongle doesn't seem to like it when
> we try to start link training with non-zero vswing/preemphasis. So when
> the initial link training DPCD write fails, retry it with zero values.

Does the device NACKs the request?

Ander

> 
> Fixes a bunch of errors like so:
> [drm:intel_dp_start_link_train [i915]] *ERROR* failed to enable link training
> 
> Cc: Mika Kahola <mika.kahola@intel.com>
> Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
> Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index ba4cbf5..9529a6e 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3750,10 +3750,17 @@ intel_dp_link_training_clock_recovery(struct intel_dp
> *intel_dp)
>  
>  	DP |= DP_PORT_EN;
>  
> +again:
>  	/* clock recovery */
>  	if (!intel_dp_reset_link_train(intel_dp, &DP,
>  				       DP_TRAINING_PATTERN_1 |
>  				       DP_LINK_SCRAMBLING_DISABLE)) {
> +		if (intel_dp->train_set_valid) {
> +			DRM_DEBUG_KMS("Sink rejected link training request,
> trying again with zero values\n");
> +			intel_dp->train_set_valid = false;
> +			goto again;
> +		}
> +
>  		DRM_ERROR("failed to enable link training\n");
>  		return;
>  	}
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values
  2015-11-02 13:21 ` Conselvan De Oliveira, Ander
@ 2015-11-02 14:55   ` Ville Syrjälä
  0 siblings, 0 replies; 4+ messages in thread
From: Ville Syrjälä @ 2015-11-02 14:55 UTC (permalink / raw)
  To: Conselvan De Oliveira, Ander; +Cc: intel-gfx

On Mon, Nov 02, 2015 at 01:21:23PM +0000, Conselvan De Oliveira, Ander wrote:
> On Fri, 2015-10-30 at 18:47 +0200, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > My Lenovo STM STDP3100 miniDP->VGA dongle doesn't seem to like it when
> > we try to start link training with non-zero vswing/preemphasis. So when
> > the initial link training DPCD write fails, retry it with zero values.
> 
> Does the device NACKs the request?

That was my assumption, but actually it just defers it to death. I had to
bump the retry count to ~48 to make it work without this patch. That was
with drm.debug=0, with drm.debug=0xe it seems to work even with the
current retry count of 32. Which also makes me think we should run the
bat stuff both with debugs on and off to catch more problems.

> 
> Ander
> 
> > 
> > Fixes a bunch of errors like so:
> > [drm:intel_dp_start_link_train [i915]] *ERROR* failed to enable link training
> > 
> > Cc: Mika Kahola <mika.kahola@intel.com>
> > Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> > Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
> > Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > index ba4cbf5..9529a6e 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -3750,10 +3750,17 @@ intel_dp_link_training_clock_recovery(struct intel_dp
> > *intel_dp)
> >  
> >  	DP |= DP_PORT_EN;
> >  
> > +again:
> >  	/* clock recovery */
> >  	if (!intel_dp_reset_link_train(intel_dp, &DP,
> >  				       DP_TRAINING_PATTERN_1 |
> >  				       DP_LINK_SCRAMBLING_DISABLE)) {
> > +		if (intel_dp->train_set_valid) {
> > +			DRM_DEBUG_KMS("Sink rejected link training request,
> > trying again with zero values\n");
> > +			intel_dp->train_set_valid = false;
> > +			goto again;
> > +		}
> > +
> >  		DRM_ERROR("failed to enable link training\n");
> >  		return;
> >  	}

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2015-11-02 14:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-30 16:47 [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values ville.syrjala
2015-11-02  8:15 ` Jani Nikula
2015-11-02 13:21 ` Conselvan De Oliveira, Ander
2015-11-02 14:55   ` Ville Syrjälä

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.