summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinod Govindapillai <vinod.govindapillai@intel.com>2025-11-11 15:46:06 +0300
committerVinod Govindapillai <vinod.govindapillai@intel.com>2025-11-18 13:03:13 +0300
commitde72d9df4f453c08da3d4a15ce75fbd5f891bd2e (patch)
treedfd1a764776e6bb6c0c20be1e9d727cc92801961
parentb84befa3126634d78e31260f538453d534742908 (diff)
downloadlinux-de72d9df4f453c08da3d4a15ce75fbd5f891bd2e.tar.xz
drm/i915/fbc: Apply Wa_15018326506
Disable FBC in bmg as per the wa recommendation. v2: use the bmg platform instead of a specific stepping v3: wa to Wa Bspec: 74212 Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> Acked-by: Uma Shankar <uma.shankar@intel.com> Link: https://patch.msgid.link/20251111124606.402380-1-vinod.govindapillai@intel.com Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_wa.c2
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_wa.h1
-rw-r--r--drivers/gpu/drm/i915/display/intel_fbc.c10
3 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.c b/drivers/gpu/drm/i915/display/intel_display_wa.c
index e38e5e87877c..b2e71fa61c0a 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 @@ bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa,
return DISPLAY_VER(display) == 13;
case INTEL_DISPLAY_WA_22014263786:
return IS_DISPLAY_VERx100(display, 1100, 1400);
+ case INTEL_DISPLAY_WA_15018326506:
+ return display->platform.battlemage;
default:
drm_WARN(display->drm, 1, "Missing Wa number: %s\n", name);
break;
diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.h b/drivers/gpu/drm/i915/display/intel_display_wa.h
index 3644e8e2b724..f648b00cb97d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_wa.h
+++ b/drivers/gpu/drm/i915/display/intel_display_wa.h
@@ -26,6 +26,7 @@ enum intel_display_wa {
INTEL_DISPLAY_WA_16025573575,
INTEL_DISPLAY_WA_14011503117,
INTEL_DISPLAY_WA_22014263786,
+ INTEL_DISPLAY_WA_15018326506,
};
bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, const char *name);
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 437d2fda20a7..205c7266af43 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -1521,6 +1521,16 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
return 0;
}
+ /*
+ * Wa_15018326506:
+ * Fixes: Underrun during media decode
+ * Workaround: Do not enable FBC
+ */
+ if (intel_display_wa(display, 15018326506)) {
+ plane_state->no_fbc_reason = "Wa_15018326506";
+ return 0;
+ }
+
/* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */
if (intel_display_vtd_active(display) &&
(display->platform.skylake || display->platform.broxton)) {