[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