[Intel-gfx] [PATCH 12/21] drm/i915: Make 308 and 671 MHz cdclks more accurate on SKL

Imre Deak imre.deak at intel.com
Thu May 19 16:03:59 UTC 2016


On pe, 2016-05-13 at 23:41 +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> The SKL 308.57 MHz cdclk is probably 8640/28 = ~308.571 Mhz.
> Similartly the 617.14 MHz cdclk is probably 8640/14 = ~617.143 MHz.
> Let's use the slightly more accurate numbers. Potentially we might
> change to computing all of these based on dividers, but let's
> stick to the current theme for now..
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Imre Deak <imre.deak at intel.com>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index e908f360da74..c0dbff37e2c3 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5284,13 +5284,13 @@ static void intel_update_max_cdclk(struct
> drm_device *dev)
>  		 * if the preferred vco is 8100 instead.
>  		 */
>  		if (limit == SKL_DFSM_CDCLK_LIMIT_675)
> -			max_cdclk = 617140;
> +			max_cdclk = 617143;
>  		else if (limit == SKL_DFSM_CDCLK_LIMIT_540)
>  			max_cdclk = 540000;
>  		else if (limit == SKL_DFSM_CDCLK_LIMIT_450)
>  			max_cdclk = 432000;
>  		else
> -			max_cdclk = 308570;
> +			max_cdclk = 308571;
>  
>  		dev_priv->max_cdclk_freq = skl_calc_cdclk(max_cdclk,
> vco);
>  	} else if (IS_BROXTON(dev)) {
> @@ -5518,13 +5518,13 @@ static int skl_calc_cdclk(int max_pixclk, int
> vco)
>  {
>  	if (vco == 8640) {
>  		if (max_pixclk > 540000)
> -			return 617140;
> +			return 617143;
>  		else if (max_pixclk > 432000)
>  			return 540000;
> -		else if (max_pixclk > 308570)
> +		else if (max_pixclk > 308571)
>  			return 432000;
>  		else
> -			return 308570;
> +			return 308571;
>  	} else {
>  		/* VCO 8100 */
>  		if (max_pixclk > 540000)
> @@ -5696,13 +5696,13 @@ static void skl_set_cdclk(struct
> drm_i915_private *dev_priv, int cdclk, int vco)
>  		freq_select = CDCLK_FREQ_540;
>  		pcu_ack = 2;
>  		break;
> -	case 308570:
> +	case 308571:
>  	case 337500:
>  	default:
>  		freq_select = CDCLK_FREQ_337_308;
>  		pcu_ack = 0;
>  		break;
> -	case 617140:
> +	case 617143:
>  	case 675000:
>  		freq_select = CDCLK_FREQ_675_617;
>  		pcu_ack = 3;
> @@ -6656,11 +6656,11 @@ static int
> skylake_get_display_clock_speed(struct drm_device *dev)
>  		case CDCLK_FREQ_450_432:
>  			return 432000;
>  		case CDCLK_FREQ_337_308:
> -			return 308570;
> +			return 308571;
>  		case CDCLK_FREQ_540:
>  			return 540000;
>  		case CDCLK_FREQ_675_617:
> -			return 617140;
> +			return 617143;
>  		default:
>  			MISSING_CASE(cdctl & CDCLK_FREQ_SEL_MASK);
>  		}


More information about the Intel-gfx mailing list