Commit f65223ba authored by Vinod Govindapillai's avatar Vinod Govindapillai
Browse files

drm/i915/fbc: update the impacted platforms in wa_22014263786



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: default avatarVinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20251007214317.875781-1-vinod.govindapillai@intel.com
parent 56d9d034
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);
+6 −3
Original line number Diff line number Diff line
@@ -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);