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 <[email protected]>
> ---
>  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

Reply via email to