[Intel-gfx] [PATCH v5 01/22] drm/i915/dg1: Initialize RAWCLK properly
Souza, Jose
jose.souza at intel.com
Tue Jul 28 16:35:21 UTC 2020
On Fri, 2020-07-24 at 14:38 -0700, Lucas De Marchi wrote:
> From: Matt Roper <
> matthew.d.roper at intel.com
> >
>
> DG1 always uses a 38.4 MHz rawclk rather than the 19.2/24 MHz
> frequencies on CNP+. Note that register bits associated with this
> frequency confusingly use 37 for the divider field rather than 38 as you
> might expect.
>
> For simplicity, let's just assume that this 38.4 MHz frequency will hold
> true for other future platforms with "fake" PCH south displays and that
> the CNP-style behavior will remain for other platforms with a real PCH.
>
> Bspec: 49950
> Bspec: 49309
Reviewed-by: José Roberto de Souza <jose.souza at intel.com>
> Cc: Aditya Swarup <
> aditya.swarup at intel.com
> >
> Cc: Clinton Taylor <
> Clinton.A.Taylor at intel.com
> >
> Cc: Lucas De Marchi <
> lucas.demarchi at intel.com
> >
> Signed-off-by: Matt Roper <
> matthew.d.roper at intel.com
> >
> Signed-off-by: Lucas De Marchi <
> lucas.demarchi at intel.com
> >
> ---
> drivers/gpu/drm/i915/display/intel_cdclk.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 9d6cacbdb691..7722831346ba 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -2680,6 +2680,18 @@ void intel_update_cdclk(struct drm_i915_private *dev_priv)
> DIV_ROUND_UP(dev_priv->cdclk.hw.cdclk, 1000));
> }
>
> +static int dg1_rawclk(struct drm_i915_private *dev_priv)
> +{
> + /*
> + * DG1 always uses a 38.4 MHz rawclk. The bspec tells us
> + * "Program Numerator=2, Denominator=4, Divider=37 decimal."
> + */
> + I915_WRITE(PCH_RAWCLK_FREQ,
> + CNP_RAWCLK_DEN(4) | CNP_RAWCLK_DIV(37) | ICP_RAWCLK_NUM(2));
> +
> + return 38400;
> +}
> +
> static int cnp_rawclk(struct drm_i915_private *dev_priv)
> {
> u32 rawclk;
> @@ -2788,7 +2800,9 @@ u32 intel_read_rawclk(struct drm_i915_private *dev_priv)
> {
> u32 freq;
>
> - if (INTEL_PCH_TYPE(dev_priv) >= PCH_CNP)
> + if (INTEL_PCH_TYPE(dev_priv) >= PCH_DG1)
> + freq = dg1_rawclk(dev_priv);
> + else if (INTEL_PCH_TYPE(dev_priv) >= PCH_CNP)
> freq = cnp_rawclk(dev_priv);
> else if (HAS_PCH_SPLIT(dev_priv))
> freq = pch_rawclk(dev_priv);
>
More information about the Intel-gfx
mailing list