diff mbox series

[3/4] drm/i915: Use intel_apply_pci_quirks() to apply ILK+ wm quirks

Message ID 20190222155251.16730-3-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [1/4] drm/i915: Disable LP1+ watermarks on Lenovo Thinkpad T431s | expand

Commit Message

Ville Syrjälä Feb. 22, 2019, 3:52 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Use the newly introduced intel_apply_pci_quirks() to clean up
the way we apply the ilk+ watermark quirks.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

Comments

Jani Nikula Feb. 25, 2019, 1:14 p.m. UTC | #1
On Fri, 22 Feb 2019, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Use the newly introduced intel_apply_pci_quirks() to clean up
> the way we apply the ilk+ watermark quirks.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 75dceac19950..2a4b5014f56e 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3059,10 +3059,17 @@ static void ilk_wm_disable_lp1_quirk(struct drm_i915_private *dev_priv)
>  	ilk_wm_disable_quirk(dev_priv, 1);
>  }
>  
> +static const struct intel_pci_quirk ilk_wm_quirks[] = {

Mmmh, ilk prefix, do you propose to add separate quirk arrays for
different platforms...? *shrug*

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> +	/*
> +	 * Lenovo Thinkpad T431s (ivb)
> +	 * Massive underruns with LP1+.
> +	 */
> +	{ 0x0166, 0x17aa, 0x2208, ilk_wm_disable_lp1_quirk },
> +	{}
> +};
> +
>  static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
>  {
> -	struct pci_dev *pdev = dev_priv->drm.pdev;
> -
>  	intel_read_wm_latency(dev_priv, dev_priv->wm.pri_latency);
>  
>  	memcpy(dev_priv->wm.spr_latency, dev_priv->wm.pri_latency,
> @@ -3082,14 +3089,7 @@ static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
>  		snb_wm_lp3_irq_quirk(dev_priv);
>  	}
>  
> -	/*
> -	 * Lenovo Thinkpad T431s (ivb)
> -	 * Massive underruns.
> -	 */
> -	if (pdev->device == 0x0166 &&
> -	    pdev->subsystem_vendor == 0x17aa &&
> -	    pdev->subsystem_device == 0x2208)
> -		ilk_wm_disable_lp1_quirk(dev_priv);
> +	intel_apply_pci_quirks(dev_priv, ilk_wm_quirks);
>  }
>  
>  static void skl_setup_wm_latency(struct drm_i915_private *dev_priv)
Ville Syrjälä Feb. 25, 2019, 1:28 p.m. UTC | #2
On Mon, Feb 25, 2019 at 03:14:52PM +0200, Jani Nikula wrote:
> On Fri, 22 Feb 2019, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Use the newly introduced intel_apply_pci_quirks() to clean up
> > the way we apply the ilk+ watermark quirks.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_pm.c | 20 ++++++++++----------
> >  1 file changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 75dceac19950..2a4b5014f56e 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -3059,10 +3059,17 @@ static void ilk_wm_disable_lp1_quirk(struct drm_i915_private *dev_priv)
> >  	ilk_wm_disable_quirk(dev_priv, 1);
> >  }
> >  
> > +static const struct intel_pci_quirk ilk_wm_quirks[] = {
> 
> Mmmh, ilk prefix, do you propose to add separate quirk arrays for
> different platforms...? *shrug*

Perhaps. So far we just need this on the ilk-bdw codepaths
hence I just went with the ilk_ prefix.

> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> > +	/*
> > +	 * Lenovo Thinkpad T431s (ivb)
> > +	 * Massive underruns with LP1+.
> > +	 */
> > +	{ 0x0166, 0x17aa, 0x2208, ilk_wm_disable_lp1_quirk },
> > +	{}
> > +};
> > +
> >  static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
> >  {
> > -	struct pci_dev *pdev = dev_priv->drm.pdev;
> > -
> >  	intel_read_wm_latency(dev_priv, dev_priv->wm.pri_latency);
> >  
> >  	memcpy(dev_priv->wm.spr_latency, dev_priv->wm.pri_latency,
> > @@ -3082,14 +3089,7 @@ static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
> >  		snb_wm_lp3_irq_quirk(dev_priv);
> >  	}
> >  
> > -	/*
> > -	 * Lenovo Thinkpad T431s (ivb)
> > -	 * Massive underruns.
> > -	 */
> > -	if (pdev->device == 0x0166 &&
> > -	    pdev->subsystem_vendor == 0x17aa &&
> > -	    pdev->subsystem_device == 0x2208)
> > -		ilk_wm_disable_lp1_quirk(dev_priv);
> > +	intel_apply_pci_quirks(dev_priv, ilk_wm_quirks);
> >  }
> >  
> >  static void skl_setup_wm_latency(struct drm_i915_private *dev_priv)
> 
> -- 
> Jani Nikula, Intel Open Source Graphics Center
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 75dceac19950..2a4b5014f56e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3059,10 +3059,17 @@  static void ilk_wm_disable_lp1_quirk(struct drm_i915_private *dev_priv)
 	ilk_wm_disable_quirk(dev_priv, 1);
 }
 
+static const struct intel_pci_quirk ilk_wm_quirks[] = {
+	/*
+	 * Lenovo Thinkpad T431s (ivb)
+	 * Massive underruns with LP1+.
+	 */
+	{ 0x0166, 0x17aa, 0x2208, ilk_wm_disable_lp1_quirk },
+	{}
+};
+
 static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
 {
-	struct pci_dev *pdev = dev_priv->drm.pdev;
-
 	intel_read_wm_latency(dev_priv, dev_priv->wm.pri_latency);
 
 	memcpy(dev_priv->wm.spr_latency, dev_priv->wm.pri_latency,
@@ -3082,14 +3089,7 @@  static void ilk_setup_wm_latency(struct drm_i915_private *dev_priv)
 		snb_wm_lp3_irq_quirk(dev_priv);
 	}
 
-	/*
-	 * Lenovo Thinkpad T431s (ivb)
-	 * Massive underruns.
-	 */
-	if (pdev->device == 0x0166 &&
-	    pdev->subsystem_vendor == 0x17aa &&
-	    pdev->subsystem_device == 0x2208)
-		ilk_wm_disable_lp1_quirk(dev_priv);
+	intel_apply_pci_quirks(dev_priv, ilk_wm_quirks);
 }
 
 static void skl_setup_wm_latency(struct drm_i915_private *dev_priv)