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@xxxxxxxxxxxxxxx> > > > Cc: Imre Deak <imre.deak@xxxxxxxxx> > > > Signed-off-by: Manasi Navare <manasi.d.navare@xxxxxxxxx> > > > --- > > > 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@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx