]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/display: implement wa_14022269668
authorVinod Govindapillai <vinod.govindapillai@intel.com>
Mon, 28 Apr 2025 11:55:54 +0000 (14:55 +0300)
committerVinod Govindapillai <vinod.govindapillai@intel.com>
Mon, 5 May 2025 09:26:31 +0000 (12:26 +0300)
As per the WA, fbc stride need to be programmed always for bmg.
Display driver handles the need to program the fbc stride using
the override stride. So ensure that we always get the override
stride in case of bmg

v2: re-phrase the commit message.

Bspec: 74212
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Link: https://lore.kernel.org/r/20250428115554.116780-1-vinod.govindapillai@intel.com
drivers/gpu/drm/i915/display/intel_fbc.c

index ce5b1e3f1c2002636140a85e054ece5f0bad6b3e..bed2bba20b555cf5a34315d31264c1d073f748f2 100644 (file)
@@ -252,9 +252,12 @@ static u16 intel_fbc_override_cfb_stride(const struct intel_plane_state *plane_s
         * Gen9 hw miscalculates cfb stride for linear as
         * PLANE_STRIDE*512 instead of PLANE_STRIDE*64, so
         * we always need to use the override there.
+        *
+        * wa_14022269668 For bmg, always program the FBC_STRIDE before fbc enable
         */
        if (stride != stride_aligned ||
-           (DISPLAY_VER(display) == 9 && fb->modifier == DRM_FORMAT_MOD_LINEAR))
+           (DISPLAY_VER(display) == 9 && fb->modifier == DRM_FORMAT_MOD_LINEAR) ||
+           display->platform.battlemage)
                return stride_aligned * 4 / 64;
 
        return 0;