* plane so let's not advertize modes that are
         * too big for that.
         */
-       if (DISPLAY_VER(dev_priv) >= 11) {
+       if (DISPLAY_VER(dev_priv) >= 30) {
+               plane_width_max = 6144 * num_joined_pipes;
+               plane_height_max = 4800;
+       } else if (DISPLAY_VER(dev_priv) >= 11) {
                plane_width_max = 5120 * num_joined_pipes;
                plane_height_max = 4320;
        } else {
 
        }
 }
 
+static int xe3_plane_max_width(const struct drm_framebuffer *fb,
+                              int color_plane,
+                              unsigned int rotation)
+{
+       if (intel_format_info_is_yuv_semiplanar(fb->format, fb->modifier))
+               return 4096;
+       else
+               return 6144;
+}
+
 static int icl_hdr_plane_max_width(const struct drm_framebuffer *fb,
                                   int color_plane,
                                   unsigned int rotation)
 
        intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane);
 
-       if (DISPLAY_VER(dev_priv) >= 11) {
+       if (DISPLAY_VER(dev_priv) >= 30) {
+               plane->max_width = xe3_plane_max_width;
+               plane->max_height = icl_plane_max_height;
+               plane->min_cdclk = icl_plane_min_cdclk;
+       } else if (DISPLAY_VER(dev_priv) >= 11) {
                plane->min_width = icl_plane_min_width;
                if (icl_is_hdr_plane(dev_priv, plane_id))
                        plane->max_width = icl_hdr_plane_max_width;