[Intel-gfx] [PATCH 1/8] drm/i915/dp: retry link status read 3 times on failure

Jesse Barnes jbarnes at virtuousgeek.org
Sat Jul 2 01:47:00 CEST 2011


On Fri, 01 Jul 2011 16:41:06 -0700
Keith Packard <keithp at keithp.com> wrote:

> On Fri,  1 Jul 2011 15:22:51 -0700, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> 
> > Especially after a hotplug or power status change, the sink may not
> > reply immediately to a link status query.  So retry 3 times per the spec
> > to really make sure nothing is there.
> 
> There's no 'false' return path here. I think you want:
> > 
> > ---
> >  drivers/gpu/drm/i915/intel_dp.c |   17 +++++++++++++----
> >  1 files changed, 13 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > index 391b55f..1829ecc 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -1019,13 +1019,22 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
> >  static bool
> >  intel_dp_get_link_status(struct intel_dp *intel_dp)
> >  {
> > -	int ret;
> > +	int ret, i;
> > +
> > +	/* Must try AUX reads for this at least 3 times */
> > +	for (i = 0; i < 3; i++) {
> > +		ret = intel_dp_aux_native_read(intel_dp,
> > +					       DP_LANE0_1_STATUS,
> > +					       intel_dp->link_status,
> > +					       DP_LINK_STATUS_SIZE);
> > +		if (ret == DP_LINK_STATUS_SIZE)
> > +			break;
> 
>                         return true;
> > +		msleep(1);
> > +	}
> >  
> > -	ret = intel_dp_aux_native_read(intel_dp,
> > -				       DP_LANE0_1_STATUS,
> > -				       intel_dp->link_status, DP_LINK_STATUS_SIZE);
> >  	if (ret != DP_LINK_STATUS_SIZE)
> >  		return false;

I think we'd hit the "return false" above if the loop failed.  But
simply returning true from the loop and false otherwise is clearer and
fewer lines.  Will fix.

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list