[Intel-gfx] [PATCH] drm/i915/dp: Poll for DDI Idle status to be 0 after enabling DDI Buf

Manasi Navare manasi.d.navare at intel.com
Tue Jun 16 20:07:53 UTC 2020


On Tue, Jun 16, 2020 at 10:54:22PM +0300, Ville Syrjälä wrote:
> On Tue, Jun 16, 2020 at 10:42:44PM +0300, Ville Syrjälä wrote:
> > On Tue, Jun 16, 2020 at 12:30:56PM -0700, Manasi Navare wrote:
> > > The Bspec sequence expects us to poll for DDI Idle status
> > > to be 0 (not idle) with a timeout of 600usecs after enabling the
> > > DDI BUF CTL.
> > 
> > It only says that for newer platforms. We need to either keep
> > the fixed delay before starting to poll, or someone needs confirm 
> > how the idle bit really behaves on the older platforms.
> 
> In fact it says not to use this bit at all on BXT. So even our disable
> sequence is potentially borked on BXT. Unfortunately the spec doesn't
> say which way the bit is broken, so not clear if that's the case or
> not.
>

I double checked on Gen 9, it is > 518 usecs timeout and Gen 10+
it is 500usecs and then gen 12, it is 600 usecs timeout.

Should we add this max timeout for Gen >=10, we def need this for
platforms starting Gen 10+

Manasi
 
> > 
> > > But currently in the driver we just wait for 600usecs
> > > without polling so add that.
> > > 
> > > Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > Cc: Imre Deak <imre.deak at intel.com>
> > > Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_ddi.c | 6 +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > index ca7bb2294d2b..de7e15de0bc5 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > @@ -4023,7 +4023,11 @@ static void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp)
> > >  	intel_de_write(dev_priv, DDI_BUF_CTL(port), intel_dp->DP);
> > >  	intel_de_posting_read(dev_priv, DDI_BUF_CTL(port));
> > >  
> > > -	udelay(600);
> > > +	if (wait_for_us(!(intel_de_read(dev_priv, DDI_BUF_CTL(port)) &
> > > +			  DDI_BUF_IS_IDLE),
> > > +			600))
> > > +		drm_err(&dev_priv->drm, "DDI port:%c buffer idle\n",
> > > +			port_name(port));
> > >  }
> > >  
> > >  static void intel_ddi_set_link_train(struct intel_dp *intel_dp,
> > > -- 
> > > 2.19.1
> > 
> > -- 
> > Ville Syrjälä
> > Intel
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Ville Syrjälä
> Intel


More information about the Intel-gfx mailing list