]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/display: convert W/As in intel_fbc.c to new framework
authorLuca Coelho <luciano.coelho@intel.com>
Thu, 5 Mar 2026 09:59:13 +0000 (11:59 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Mon, 9 Mar 2026 10:32:47 +0000 (12:32 +0200)
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 <jani.nikula@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Link: https://patch.msgid.link/20260305100100.332956-11-luciano.coelho@intel.com
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/gpu/drm/i915/display/intel_display_wa.c
drivers/gpu/drm/i915/display/intel_display_wa.h
drivers/gpu/drm/i915/display/intel_fbc.c

index be37a23edce43bec95092391b303252fa2c91a8b..0f449ea8e1bb78106086c3dd910be4a40c44aa4c 100644 (file)
@@ -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:
index dc1a187fd0a15a747e2c3d3a971f39e0ec5b768f..373cbbb93873d2391b13cebf9119fca6eb3a4129 100644 (file)
@@ -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,
index 5d0d7c1027f5603377ffc9fc28137a10e395e5ea..ea0ce00c84743cc5f85f7a6a1fb14566054187cc 100644 (file)
@@ -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);
        /*