diff mbox series

[1/2] drm/i915/hotplug: Reduce SHPD_FLITER_CNT for Display12

Message ID 20240917052307.760662-2-suraj.kandpal@intel.com (mailing list archive)
State New, archived
Headers show
Series Reduce SHPD_FILTER_CNT value | expand

Commit Message

Kandpal, Suraj Sept. 17, 2024, 5:23 a.m. UTC
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@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hotplug_irq.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Matt Roper Sept. 20, 2024, 9:26 p.m. UTC | #1
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@intel.com>
> ---
>  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
>
Kandpal, Suraj Sept. 23, 2024, 2:34 a.m. UTC | #2
> -----Original Message-----
> From: Roper, Matthew D <matthew.d.roper@intel.com>
> Sent: Saturday, September 21, 2024 2:56 AM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>
> Cc: intel-gfx@lists.freedesktop.org; Shankar, Uma <uma.shankar@intel.com>
> Subject: Re: [PATCH 1/2] drm/i915/hotplug: Reduce SHPD_FLITER_CNT for
> Display12
> 
> 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@intel.com>
> > ---
> >  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.


So we wont be implementing this wa and ill remove the reference of the wa from
Commit and comments and only keep the dp spec reason for implementing this change

Regards,
Suraj Kandpal

> 
> 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
diff mbox series

Patch

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
+	 * 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);