Re: [PATCH] drm/i915: Fall back to zero vswing/preemph if the sink doesn't like the last good values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx wrote:
> > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> > 
> > 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@xxxxxxxxx>
> > Cc: Sivakumar Thulasimani <sivakumar.thulasimani@xxxxxxxxx>
> > Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx>
> > Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> > ---
> >  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@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux