diff mbox series

drm/i915/glk: Remove 99% limitation.

Message ID 20181026005636.22274-1-rodrigo.vivi@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/glk: Remove 99% limitation. | expand

Commit Message

Rodrigo Vivi Oct. 26, 2018, 12:56 a.m. UTC
While checking the opportunity to add a display_gen
check to allow glk and cnl to be on same bucket I noticed
these FIXME cases here.

So I got the confirmation from HW architect that we actually
never needed this workaround.

"GLK supports 2 pixel per clock, so pixel clock can be up to 2 * cdclk."

So, this reverts commit 97f55ca5b662 ("drm/i915/glk: limit pixel
 clock to 99% of cdclk workaround")

Fixes: 97f55ca5b662 ("drm/i915/glk: limit pixel clock to 99% of cdclk workaround")

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Madhav Chauhan <madhav.chauhan@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Clinton Taylor <clinton.a.taylor@intel.com>
Cc: Arthur J Runyan <arthur.j.runyan@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/intel_cdclk.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

Comments

Ville Syrjala Oct. 26, 2018, 4:53 p.m. UTC | #1
On Thu, Oct 25, 2018 at 05:56:36PM -0700, Rodrigo Vivi wrote:
> While checking the opportunity to add a display_gen
> check to allow glk and cnl to be on same bucket I noticed
> these FIXME cases here.
> 
> So I got the confirmation from HW architect that we actually
> never needed this workaround.
> 
> "GLK supports 2 pixel per clock, so pixel clock can be up to 2 * cdclk."

Cool.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 
> So, this reverts commit 97f55ca5b662 ("drm/i915/glk: limit pixel
>  clock to 99% of cdclk workaround")
> 
> Fixes: 97f55ca5b662 ("drm/i915/glk: limit pixel clock to 99% of cdclk workaround")
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Madhav Chauhan <madhav.chauhan@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Clinton Taylor <clinton.a.taylor@intel.com>
> Cc: Arthur J Runyan <arthur.j.runyan@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_cdclk.c | 18 ++----------------
>  1 file changed, 2 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_cdclk.c b/drivers/gpu/drm/i915/intel_cdclk.c
> index 29075c763428..8d74276029e6 100644
> --- a/drivers/gpu/drm/i915/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/intel_cdclk.c
> @@ -2138,16 +2138,8 @@ void intel_set_cdclk(struct drm_i915_private *dev_priv,
>  static int intel_pixel_rate_to_cdclk(struct drm_i915_private *dev_priv,
>  				     int pixel_rate)
>  {
> -	if (INTEL_GEN(dev_priv) >= 10)
> +	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
>  		return DIV_ROUND_UP(pixel_rate, 2);
> -	else if (IS_GEMINILAKE(dev_priv))
> -		/*
> -		 * FIXME: Avoid using a pixel clock that is more than 99% of the cdclk
> -		 * as a temporary workaround. Use a higher cdclk instead. (Note that
> -		 * intel_compute_max_dotclk() limits the max pixel clock to 99% of max
> -		 * cdclk.)
> -		 */
> -		return DIV_ROUND_UP(pixel_rate * 100, 2 * 99);
>  	else if (IS_GEN9(dev_priv) ||
>  		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
>  		return pixel_rate;
> @@ -2543,14 +2535,8 @@ static int intel_compute_max_dotclk(struct drm_i915_private *dev_priv)
>  {
>  	int max_cdclk_freq = dev_priv->max_cdclk_freq;
>  
> -	if (INTEL_GEN(dev_priv) >= 10)
> +	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
>  		return 2 * max_cdclk_freq;
> -	else if (IS_GEMINILAKE(dev_priv))
> -		/*
> -		 * FIXME: Limiting to 99% as a temporary workaround. See
> -		 * intel_min_cdclk() for details.
> -		 */
> -		return 2 * max_cdclk_freq * 99 / 100;
>  	else if (IS_GEN9(dev_priv) ||
>  		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
>  		return max_cdclk_freq;
> -- 
> 2.19.1
Rodrigo Vivi Oct. 29, 2018, 5:47 p.m. UTC | #2
On Fri, Oct 26, 2018 at 07:53:34PM +0300, Ville Syrjälä wrote:
> On Thu, Oct 25, 2018 at 05:56:36PM -0700, Rodrigo Vivi wrote:
> > While checking the opportunity to add a display_gen
> > check to allow glk and cnl to be on same bucket I noticed
> > these FIXME cases here.
> > 
> > So I got the confirmation from HW architect that we actually
> > never needed this workaround.
> > 
> > "GLK supports 2 pixel per clock, so pixel clock can be up to 2 * cdclk."
> 
> Cool.
> 
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks, patch pushed to dinq.

> 
> > 
> > So, this reverts commit 97f55ca5b662 ("drm/i915/glk: limit pixel
> >  clock to 99% of cdclk workaround")
> > 
> > Fixes: 97f55ca5b662 ("drm/i915/glk: limit pixel clock to 99% of cdclk workaround")
> > 
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Madhav Chauhan <madhav.chauhan@intel.com>
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Clinton Taylor <clinton.a.taylor@intel.com>
> > Cc: Arthur J Runyan <arthur.j.runyan@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_cdclk.c | 18 ++----------------
> >  1 file changed, 2 insertions(+), 16 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_cdclk.c b/drivers/gpu/drm/i915/intel_cdclk.c
> > index 29075c763428..8d74276029e6 100644
> > --- a/drivers/gpu/drm/i915/intel_cdclk.c
> > +++ b/drivers/gpu/drm/i915/intel_cdclk.c
> > @@ -2138,16 +2138,8 @@ void intel_set_cdclk(struct drm_i915_private *dev_priv,
> >  static int intel_pixel_rate_to_cdclk(struct drm_i915_private *dev_priv,
> >  				     int pixel_rate)
> >  {
> > -	if (INTEL_GEN(dev_priv) >= 10)
> > +	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
> >  		return DIV_ROUND_UP(pixel_rate, 2);
> > -	else if (IS_GEMINILAKE(dev_priv))
> > -		/*
> > -		 * FIXME: Avoid using a pixel clock that is more than 99% of the cdclk
> > -		 * as a temporary workaround. Use a higher cdclk instead. (Note that
> > -		 * intel_compute_max_dotclk() limits the max pixel clock to 99% of max
> > -		 * cdclk.)
> > -		 */
> > -		return DIV_ROUND_UP(pixel_rate * 100, 2 * 99);
> >  	else if (IS_GEN9(dev_priv) ||
> >  		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
> >  		return pixel_rate;
> > @@ -2543,14 +2535,8 @@ static int intel_compute_max_dotclk(struct drm_i915_private *dev_priv)
> >  {
> >  	int max_cdclk_freq = dev_priv->max_cdclk_freq;
> >  
> > -	if (INTEL_GEN(dev_priv) >= 10)
> > +	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
> >  		return 2 * max_cdclk_freq;
> > -	else if (IS_GEMINILAKE(dev_priv))
> > -		/*
> > -		 * FIXME: Limiting to 99% as a temporary workaround. See
> > -		 * intel_min_cdclk() for details.
> > -		 */
> > -		return 2 * max_cdclk_freq * 99 / 100;
> >  	else if (IS_GEN9(dev_priv) ||
> >  		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
> >  		return max_cdclk_freq;
> > -- 
> > 2.19.1
> 
> -- 
> Ville Syrjälä
> Intel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_cdclk.c b/drivers/gpu/drm/i915/intel_cdclk.c
index 29075c763428..8d74276029e6 100644
--- a/drivers/gpu/drm/i915/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/intel_cdclk.c
@@ -2138,16 +2138,8 @@  void intel_set_cdclk(struct drm_i915_private *dev_priv,
 static int intel_pixel_rate_to_cdclk(struct drm_i915_private *dev_priv,
 				     int pixel_rate)
 {
-	if (INTEL_GEN(dev_priv) >= 10)
+	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
 		return DIV_ROUND_UP(pixel_rate, 2);
-	else if (IS_GEMINILAKE(dev_priv))
-		/*
-		 * FIXME: Avoid using a pixel clock that is more than 99% of the cdclk
-		 * as a temporary workaround. Use a higher cdclk instead. (Note that
-		 * intel_compute_max_dotclk() limits the max pixel clock to 99% of max
-		 * cdclk.)
-		 */
-		return DIV_ROUND_UP(pixel_rate * 100, 2 * 99);
 	else if (IS_GEN9(dev_priv) ||
 		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
 		return pixel_rate;
@@ -2543,14 +2535,8 @@  static int intel_compute_max_dotclk(struct drm_i915_private *dev_priv)
 {
 	int max_cdclk_freq = dev_priv->max_cdclk_freq;
 
-	if (INTEL_GEN(dev_priv) >= 10)
+	if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
 		return 2 * max_cdclk_freq;
-	else if (IS_GEMINILAKE(dev_priv))
-		/*
-		 * FIXME: Limiting to 99% as a temporary workaround. See
-		 * intel_min_cdclk() for details.
-		 */
-		return 2 * max_cdclk_freq * 99 / 100;
 	else if (IS_GEN9(dev_priv) ||
 		 IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
 		return max_cdclk_freq;