On Fri, 2025-09-05 at 17:58 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> I want skl_read_wm_latency() to just do what it says on
> the tin, ie. read the latency values from the pcode mailbox.
> Move the DG2 "multiply by two" trick elsewhere.
> 
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coe...@intel.com>

--
Cheers,
Luca.


>  drivers/gpu/drm/i915/display/skl_watermark.c | 29 ++++++++++++++------
>  1 file changed, 20 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c 
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 02b64e97ecfe..8a98c3e52dc5 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3174,6 +3174,15 @@ void skl_watermark_ipc_init(struct intel_display 
> *display)
>       skl_watermark_ipc_update(display);
>  }
>  
> +static void multiply_wm_latency(struct intel_display *display, int mult)
> +{
> +     u16 *wm = display->wm.skl_latency;
> +     int level, num_levels = display->wm.num_levels;
> +
> +     for (level = 0; level < num_levels; level++)
> +             wm[level] *= mult;
> +}
> +
>  static bool need_16gb_dimm_wa(struct intel_display *display)
>  {
>       const struct dram_info *dram_info = intel_dram_info(display->drm);
> @@ -3200,6 +3209,9 @@ adjust_wm_latency(struct intel_display *display)
>       int i, level, num_levels = display->wm.num_levels;
>       int read_latency = wm_read_latency(display);
>  
> +     if (display->platform.dg2)
> +             multiply_wm_latency(display, 2);
> +
>       /*
>        * If a level n (n > 1) has a 0us latency, all levels m (m >= n)
>        * need to be disabled. We make sure to sanitize the values out
> @@ -3262,7 +3274,6 @@ static void mtl_read_wm_latency(struct intel_display 
> *display)
>  static void skl_read_wm_latency(struct intel_display *display)
>  {
>       u16 *wm = display->wm.skl_latency;
> -     int mult = display->platform.dg2 ? 2 : 1;
>       u32 val;
>       int ret;
>  
> @@ -3274,10 +3285,10 @@ static void skl_read_wm_latency(struct intel_display 
> *display)
>               return;
>       }
>  
> -     wm[0] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_0_4_MASK, val) * mult;
> -     wm[1] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_1_5_MASK, val) * mult;
> -     wm[2] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_2_6_MASK, val) * mult;
> -     wm[3] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_3_7_MASK, val) * mult;
> +     wm[0] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_0_4_MASK, val);
> +     wm[1] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_1_5_MASK, val);
> +     wm[2] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_2_6_MASK, val);
> +     wm[3] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_3_7_MASK, val);
>  
>       /* read the second set of memory latencies[4:7] */
>       val = 1; /* data0 to be programmed to 1 for second set */
> @@ -3287,10 +3298,10 @@ static void skl_read_wm_latency(struct intel_display 
> *display)
>               return;
>       }
>  
> -     wm[4] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_0_4_MASK, val) * mult;
> -     wm[5] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_1_5_MASK, val) * mult;
> -     wm[6] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_2_6_MASK, val) * mult;
> -     wm[7] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_3_7_MASK, val) * mult;
> +     wm[4] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_0_4_MASK, val);
> +     wm[5] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_1_5_MASK, val);
> +     wm[6] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_2_6_MASK, val);
> +     wm[7] = REG_FIELD_GET(GEN9_MEM_LATENCY_LEVEL_3_7_MASK, val);
>  }
>  
>  static void skl_setup_wm_latency(struct intel_display *display)

Reply via email to