On Fri, 2025-09-05 at 17:58 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> {mtl,skl}_read_wm_latency() are doing way too many things for
> my liking. Move the adjustment stuff out into the caller.
> This also gives us one place where we specify the 'read_latency'
> for all the platforms, instead of two places.
> 
> 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 | 23 +++++++++++++-------
>  1 file changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c 
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 9797c2131334..02b64e97ecfe 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3183,12 +3183,22 @@ static bool need_16gb_dimm_wa(struct intel_display 
> *display)
>               DISPLAY_VER(display) == 11) && dram_info->has_16gb_dimms;
>  }
>  
> +static int wm_read_latency(struct intel_display *display)
> +{
> +     if (DISPLAY_VER(display) >= 14)
> +             return 6;
> +     else if (DISPLAY_VER(display) >= 12)
> +             return 3;
> +     else
> +             return 2;
> +}
> +
>  static void
> -adjust_wm_latency(struct intel_display *display, int read_latency)
> +adjust_wm_latency(struct intel_display *display)
>  {
>       u16 *wm = display->wm.skl_latency;
> -     int num_levels = display->wm.num_levels;
> -     int i, level;
> +     int i, level, num_levels = display->wm.num_levels;
> +     int read_latency = wm_read_latency(display);
>  
>       /*
>        * If a level n (n > 1) has a 0us latency, all levels m (m >= n)
> @@ -3247,14 +3257,11 @@ static void mtl_read_wm_latency(struct intel_display 
> *display)
>       val = intel_de_read(display, MTL_LATENCY_LP4_LP5);
>       wm[4] = REG_FIELD_GET(MTL_LATENCY_LEVEL_EVEN_MASK, val);
>       wm[5] = REG_FIELD_GET(MTL_LATENCY_LEVEL_ODD_MASK, val);
> -
> -     adjust_wm_latency(display, 6);
>  }
>  
>  static void skl_read_wm_latency(struct intel_display *display)
>  {
>       u16 *wm = display->wm.skl_latency;
> -     int read_latency = DISPLAY_VER(display) >= 12 ? 3 : 2;
>       int mult = display->platform.dg2 ? 2 : 1;
>       u32 val;
>       int ret;
> @@ -3284,8 +3291,6 @@ static void skl_read_wm_latency(struct intel_display 
> *display)
>       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;
> -
> -     adjust_wm_latency(display, read_latency);
>  }
>  
>  static void skl_setup_wm_latency(struct intel_display *display)
> @@ -3300,6 +3305,8 @@ static void skl_setup_wm_latency(struct intel_display 
> *display)
>       else
>               skl_read_wm_latency(display);
>  
> +     adjust_wm_latency(display);
> +
>       intel_print_wm_latency(display, "Gen9 Plane", display->wm.skl_latency);
>  }
>  

Reply via email to