On Tue, Sep 17, 2024 at 10:53:06AM +0530, Suraj Kandpal wrote: > Reduce SHPD_CNT to 250us for Display12 to implement WA 14013120569 > in a alternative way. Its not what the Wa asks to do but has the same > effect which would be detecting shpd when it is less than 250us and > this would be okay as it lines up with DP1.4a(Table3-4) spec. > > Signed-off-by: Suraj Kandpal <suraj.kandpal@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_hotplug_irq.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > index 2c4e946d5575..05a9e82cac75 100644 > --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > @@ -849,7 +849,12 @@ static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv) > enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->display.hotplug.pch_hpd); > hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->display.hotplug.pch_hpd); > > - if (INTEL_PCH_TYPE(dev_priv) <= PCH_TGP) > + /* > + * As an alternative to WA_14013120569 we reduce the value to 250us to be able to If I remember correctly, when the SHPD_FILTER_CNT programming was first added in commit 4948738e296c ("drm/i915/hotplug: Reduce SHPD_FILTER to 250us") the justification was that we thought it could serve as a cleaner alternative to the steps recommended by Wa_14013120569. However when it was later discussed with the hardware teams in July 2023, they said that this was _not_ a valid replacement for Wa_14013120569; the steps given on the workaround are necessary due to the specific nature of the clock signals on some of these platforms. However changing the SHPD_FILTER_CNT value to 250us is good/desirable for different reasons (to align with the DP source requirements in the DP spec). So as far as the workaround is concerned, I think we need to either: - Go back and actually implement the workaround using the original steps the hardware team settled on. - Decide that we just won't implement the workaround because the recommended implementation is too ugly and Linux use cases aren't suffering any adverse effects by not implementing it. Either way, I think we should avoid mentioning that workaround in the comments here (and in the commit message) because it turns out that this is not actually a valid alternative. The justification given for switching to use a 250us on platforms with a TGL PCH should be focused specifically on alignment with the DP spec to avoid any confusion. Matt > + * detect SHPD when an external display is connected. This is also expected of > + * us as stated in DP1.4a Table 3-4. > + */ > + if (INTEL_PCH_TYPE(dev_priv) < PCH_TGP) > intel_uncore_write(&dev_priv->uncore, SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ); > else > intel_uncore_write(&dev_priv->uncore, SHPD_FILTER_CNT, SHPD_FILTER_CNT_250); > -- > 2.43.2 > -- Matt Roper Graphics Software Engineer Linux GPU Platform Enablement Intel Corporation