From: Luca Coelho Date: Thu, 5 Mar 2026 09:59:13 +0000 (+0200) Subject: drm/i915/display: convert W/As in intel_fbc.c to new framework X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=305a60de9b16f310e8e50d1405108609f6e6ec2b;p=thirdparty%2Flinux.git drm/i915/display: convert W/As in intel_fbc.c to new framework Convert the low-hanging fruits of workaround checks to the workaround framework. Instead of having display structure checks for the workarounds all over, concentrate the checks in intel_display_wa.c. Acked-by: Jani Nikula Reviewed-by: Suraj Kandpal Link: https://patch.msgid.link/20260305100100.332956-11-luciano.coelho@intel.com Signed-off-by: Luca Coelho --- diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.c b/drivers/gpu/drm/i915/display/intel_display_wa.c index be37a23edce43..0f449ea8e1bb7 100644 --- a/drivers/gpu/drm/i915/display/intel_display_wa.c +++ b/drivers/gpu/drm/i915/display/intel_display_wa.c @@ -70,6 +70,8 @@ static bool intel_display_needs_wa_16025573575(struct intel_display *display) bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, const char *name) { switch (wa) { + case INTEL_DISPLAY_WA_1409120013: + return IS_DISPLAY_VER(display, 11, 12); case INTEL_DISPLAY_WA_1409767108: return (display->platform.alderlake_s || (display->platform.rocketlake && @@ -109,6 +111,8 @@ bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, case INTEL_DISPLAY_WA_16011342517: return display->platform.alderlake_p && IS_DISPLAY_STEP(display, STEP_A0, STEP_D0); + case INTEL_DISPLAY_WA_16011863758: + return DISPLAY_VER(display) >= 11; case INTEL_DISPLAY_WA_16023588340: return intel_display_needs_wa_16023588340(display); case INTEL_DISPLAY_WA_16025573575: diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.h b/drivers/gpu/drm/i915/display/intel_display_wa.h index dc1a187fd0a15..373cbbb93873d 100644 --- a/drivers/gpu/drm/i915/display/intel_display_wa.h +++ b/drivers/gpu/drm/i915/display/intel_display_wa.h @@ -27,6 +27,7 @@ bool intel_display_needs_wa_16023588340(struct intel_display *display); * number. */ enum intel_display_wa { + INTEL_DISPLAY_WA_1409120013, INTEL_DISPLAY_WA_1409767108, INTEL_DISPLAY_WA_13012396614, INTEL_DISPLAY_WA_14010547955, @@ -42,6 +43,7 @@ enum intel_display_wa { INTEL_DISPLAY_WA_15013987218, INTEL_DISPLAY_WA_15018326506, INTEL_DISPLAY_WA_16011342517, + INTEL_DISPLAY_WA_16011863758, INTEL_DISPLAY_WA_16023588340, INTEL_DISPLAY_WA_16025573575, INTEL_DISPLAY_WA_22010178259, diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c index 5d0d7c1027f56..ea0ce00c84743 100644 --- a/drivers/gpu/drm/i915/display/intel_fbc.c +++ b/drivers/gpu/drm/i915/display/intel_fbc.c @@ -183,7 +183,7 @@ static unsigned int skl_fbc_min_cfb_stride(struct intel_display *display, * Wa_16011863758: icl+ * Avoid some hardware segment address miscalculation. */ - if (DISPLAY_VER(display) >= 11) + if (intel_display_wa(display, INTEL_DISPLAY_WA_16011863758)) stride += 64; /* @@ -949,7 +949,7 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc) } /* Wa_1409120013:icl,jsl,tgl,dg1 */ - if (IS_DISPLAY_VER(display, 11, 12)) + if (intel_display_wa(display, INTEL_DISPLAY_WA_1409120013)) intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id), 0, DPFC_CHICKEN_COMP_DUMMY_PIXEL); /*