On Tue, Nov 14, 2017 at 11:47:58AM -0800, Rodrigo Vivi wrote:
> I confess I never fully understood that previous calculation,
> so maybe this is cannot be called a "fix". But let's follow
> the math that is written on Spec so we have get more confident
> this is what hardware expect.
> 
> Cc: Mika Kahola <mika.kah...@intel.com>
> Cc: Manasi Navare <manasi.d.nav...@intel.com>
> Cc: James Ausmus <james.aus...@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.v...@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dpll_mgr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dpll_mgr.c 
> b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> index bd608f7f2399..ee690d2f6e54 100644
> --- a/drivers/gpu/drm/i915/intel_dpll_mgr.c
> +++ b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> @@ -2190,8 +2190,8 @@ static void cnl_wrpll_params_populate(struct 
> skl_wrpll_params *params,
>       params->qdiv_mode = (qdiv == 1) ? 0 : 1;
>  
>       params->dco_integer = div_u64(dco_freq, ref_freq);
> -     params->dco_fraction = div_u64((div_u64((uint64_t)dco_freq<<15, 
> (uint64_t)ref_freq) -
> -                                     ((uint64_t)params->dco_integer<<15)) * 
> 0x8000, 0x8000);
> +     params->dco_fraction = (DIV_ROUND_UP_ULL(dco_freq, ref_freq) -
> +                             params->dco_integer) * (1 << 15);

Is dco_freq in khz here? Or hz?

If khz, the following should work... I think:

unsigned int dco = div_u64((u64)dco_freq << 15, ref_freq * 1000);
dco_int = dco >> 15;
dco_frac = dco & 0x7fff;

>  }
>  
>  static bool
> -- 
> 2.13.6
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to