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_wa.c.

Signed-off-by: Luca Coelho <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display_wa.c | 4 ++++
 drivers/gpu/drm/i915/display/intel_display_wa.h | 2 ++
 drivers/gpu/drm/i915/display/intel_fbc.c        | 4 ++--
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.c 
b/drivers/gpu/drm/i915/display/intel_display_wa.c
index 798e77200751..1459e5df1dd3 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 2e5ce21e0455..87fe404962ce 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 9f39b6990bbd..a9e1dc7caa64 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -184,7 +184,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, 16011863758))
                stride += 64;
 
        /*
@@ -950,7 +950,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, 1409120013))
                intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
                             0, DPFC_CHICKEN_COMP_DUMMY_PIXEL);
        /*
-- 
2.51.0

Reply via email to