[Intel-gfx] [PATCH 1/6] drm/i915/skl: Retrieve the Rpe value from Pcode

Rodrigo Vivi rodrigo.vivi at gmail.com
Thu Jul 9 14:58:54 PDT 2015


I don't have the spec so I can just assume it was like previous platforms.

For me this 50MHz x 16.6MHz is still confusing (like clamp in 50 than
convert to 16.6)... but nevermind...  apparently we are not mixing stuff in
the sense we compare values in different scales...

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>



On Mon, Jun 29, 2015 at 2:11 AM <akash.goel at intel.com> wrote:

> From: Akash Goel <akash.goel at intel.com>
>
> Read the efficient frequency (aka RPe) value through the the mailbox
> command (0x1A) from the pcode, as done on Haswell and Broadwell.
> The turbo minimum frequency softlimit is not revised as per the
> efficient frequency value.
>
> v2: Replaced the conditional expression operator with 'if' statement (Tom)
> v3: Corrected the derivation of efficient frequency & shifted the
>     GEN9_FREQ_SCALER multiplications downwards (Ville)
>
> Issue: VIZ-5143
> Signed-off-by: Akash Goel <akash.goel at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c
> b/drivers/gpu/drm/i915/intel_pm.c
> index 32ff034..8185a23 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4295,18 +4295,11 @@ static void gen6_init_rps_frequencies(struct
> drm_device *dev)
>         dev_priv->rps.rp0_freq          = (rp_state_cap >>  0) & 0xff;
>         dev_priv->rps.rp1_freq          = (rp_state_cap >>  8) & 0xff;
>         dev_priv->rps.min_freq          = (rp_state_cap >> 16) & 0xff;
> -       if (IS_SKYLAKE(dev)) {
> -               /* Store the frequency values in 16.66 MHZ units, which is
> -                  the natural hardware unit for SKL */
> -               dev_priv->rps.rp0_freq *= GEN9_FREQ_SCALER;
> -               dev_priv->rps.rp1_freq *= GEN9_FREQ_SCALER;
> -               dev_priv->rps.min_freq *= GEN9_FREQ_SCALER;
> -       }
>         /* hw_max = RP0 until we check for overclocking */
>         dev_priv->rps.max_freq          = dev_priv->rps.rp0_freq;
>
>         dev_priv->rps.efficient_freq = dev_priv->rps.rp1_freq;
> -       if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
> +       if (IS_HASWELL(dev) || IS_BROADWELL(dev) || IS_SKYLAKE(dev)) {
>                 ret = sandybridge_pcode_read(dev_priv,
>
> HSW_PCODE_DYNAMIC_DUTY_CYCLE_CONTROL,
>                                         &ddcc_status);
> @@ -4318,6 +4311,16 @@ static void gen6_init_rps_frequencies(struct
> drm_device *dev)
>                                         dev_priv->rps.max_freq);
>         }
>
> +       if (IS_SKYLAKE(dev)) {
> +               /* Store the frequency values in 16.66 MHZ units, which is
> +                  the natural hardware unit for SKL */
> +               dev_priv->rps.rp0_freq *= GEN9_FREQ_SCALER;
> +               dev_priv->rps.rp1_freq *= GEN9_FREQ_SCALER;
> +               dev_priv->rps.min_freq *= GEN9_FREQ_SCALER;
> +               dev_priv->rps.max_freq *= GEN9_FREQ_SCALER;
> +               dev_priv->rps.efficient_freq *= GEN9_FREQ_SCALER;
> +       }
> +
>         dev_priv->rps.idle_freq = dev_priv->rps.min_freq;
>
>         /* Preserve min/max settings in case of re-init */
> --
> 1.9.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20150709/8df5aef4/attachment.html>


More information about the Intel-gfx mailing list