diff options
| author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2025-09-19 22:29:56 +0300 |
|---|---|---|
| committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2025-09-23 18:11:03 +0300 |
| commit | e407ea78abdf20bb64998e178b7944dd297ffcb3 (patch) | |
| tree | 23e35bfd042a6b4fb9e5b71dc4f21676f54ab6ea | |
| parent | 84953731f9170b3b51013f1f4deb59cc916dfa7b (diff) | |
drm/i915: Extract sanitize_wm_latency()
Pull the "zero out invalid WM latencies" stuff into a helper.
Mainly to avoid mixing higher level and lower level stuff in
the same adjust_wm_latency() function.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250919193000.17665-10-ville.syrjala@linux.intel.com
| -rw-r--r-- | drivers/gpu/drm/i915/display/skl_watermark.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c index 21dd15be74f9..1acb9285bd05 100644 --- a/drivers/gpu/drm/i915/display/skl_watermark.c +++ b/drivers/gpu/drm/i915/display/skl_watermark.c @@ -3217,14 +3217,10 @@ static int wm_read_latency(struct intel_display *display) return 2; } -static void -adjust_wm_latency(struct intel_display *display) +static void sanitize_wm_latency(struct intel_display *display) { u16 *wm = display->wm.skl_latency; - int i, level, num_levels = display->wm.num_levels; - - if (display->platform.dg2) - multiply_wm_latency(display, 2); + int level, num_levels = display->wm.num_levels; /* * If a level n (n > 1) has a 0us latency, all levels m (m >= n) @@ -3233,11 +3229,24 @@ adjust_wm_latency(struct intel_display *display) */ for (level = 1; level < num_levels; level++) { if (wm[level] == 0) { + int i; + for (i = level + 1; i < num_levels; i++) wm[i] = 0; - break; + return; } } +} + +static void +adjust_wm_latency(struct intel_display *display) +{ + u16 *wm = display->wm.skl_latency; + + if (display->platform.dg2) + multiply_wm_latency(display, 2); + + sanitize_wm_latency(display); /* * WaWmMemoryReadLatency |
