}
 }
 
+static bool icl_need_wm1_wa(struct drm_i915_private *i915,
+                           enum plane_id plane_id)
+{
+       /*
+        * Wa_1408961008:icl, ehl
+        * Wa_14012656716:tgl, adl
+        * Underruns with WM1+ disabled
+        */
+       return DISPLAY_VER(i915) == 11 ||
+              (IS_DISPLAY_VER(i915, 12, 13) && plane_id == PLANE_CURSOR);
+}
+
 static int
 skl_allocate_plane_ddb(struct intel_atomic_state *state,
                       struct intel_crtc *crtc)
                        skl_check_nv12_wm_level(&wm->wm[level], &wm->uv_wm[level],
                                                total[plane_id], uv_total[plane_id]);
 
-                       /*
-                        * Wa_1408961008:icl, ehl
-                        * Underruns with WM1+ disabled
-                        */
-                       if (DISPLAY_VER(dev_priv) == 11 &&
+                       if (icl_need_wm1_wa(dev_priv, plane_id) &&
                            level == 1 && wm->wm[0].enable) {
                                wm->wm[level].blocks = wm->wm[0].blocks;
                                wm->wm[level].lines = wm->wm[0].lines;