]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/fbc: update the impacted platforms in wa_22014263786
authorVinod Govindapillai <vinod.govindapillai@intel.com>
Tue, 7 Oct 2025 21:43:17 +0000 (00:43 +0300)
committerVinod Govindapillai <vinod.govindapillai@intel.com>
Wed, 15 Oct 2025 13:05:39 +0000 (16:05 +0300)
wa_22014263786 is not applicable to the BMG and hence exclude it
from the wa.

v2: Limit this wa to display verion 11 to 14, drop DG2 from the
    exclusion list, use intel_display_wa (Lucas)

v3: simplify the wa handling loop (Jani)
    Description of wa moved to place where wa is applied (Ville)

v4: drop the platforms line from wa comments (Lucas)

Bspec: 74212, 66624
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20251007214317.875781-1-vinod.govindapillai@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 31cd2c9cd488293bbda5770ba188ab215eb6e94f..c528aaa679cacfcd0159e55dc56aa31175255b1e 100644 (file)
@@ -67,6 +67,8 @@ bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa,
                return intel_display_needs_wa_16025573575(display);
        case INTEL_DISPLAY_WA_14011503117:
                return DISPLAY_VER(display) == 13;
+       case INTEL_DISPLAY_WA_22014263786:
+               return IS_DISPLAY_VERx100(display, 1100, 1400);
        default:
                drm_WARN(display->drm, 1, "Missing Wa number: %s\n", name);
                break;
index abc1df83f066f67de813ab9dd9214aadd386bc42..3644e8e2b7245a5b8b2db9de7743b3fadbdb3706 100644 (file)
@@ -25,6 +25,7 @@ enum intel_display_wa {
        INTEL_DISPLAY_WA_16023588340,
        INTEL_DISPLAY_WA_16025573575,
        INTEL_DISPLAY_WA_14011503117,
+       INTEL_DISPLAY_WA_22014263786,
 };
 
 bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, const char *name);
index 4edb4342833ea1c296c8fda73cc8695eb809f527..83903bb696ff6c190533045120dbd4d2333a5810 100644 (file)
@@ -928,9 +928,12 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc)
        if (IS_DISPLAY_VER(display, 11, 12))
                intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
                             0, DPFC_CHICKEN_COMP_DUMMY_PIXEL);
-
-       /* Wa_22014263786:icl,jsl,tgl,dg1,rkl,adls,adlp,mtl */
-       if (DISPLAY_VER(display) >= 11 && !display->platform.dg2)
+       /*
+        * Wa_22014263786
+        * Fixes: Screen flicker with FBC and Package C state enabled
+        * Workaround: Forced SLB invalidation before start of new frame.
+        */
+       if (intel_display_wa(display, 22014263786))
                intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
                             0, DPFC_CHICKEN_FORCE_SLB_INVALIDATION);