drm/i915: Update plane ratio for icl+
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 30 Mar 2021 16:24:16 +0000 (19:24 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 1 Apr 2021 14:14:29 +0000 (17:14 +0300)
According to bspec icl+ no longer need any extra cdclk guardband
for 64bpp formats. Make it so.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210330162416.18616-2-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/skl_universal_plane.c

index 5127489..098636c 100644 (file)
@@ -286,6 +286,15 @@ bool icl_is_hdr_plane(struct drm_i915_private *dev_priv, enum plane_id plane_id)
                icl_hdr_plane_mask() & BIT(plane_id);
 }
 
+static int icl_plane_min_cdclk(const struct intel_crtc_state *crtc_state,
+                              const struct intel_plane_state *plane_state)
+{
+       unsigned int pixel_rate = intel_plane_pixel_rate(crtc_state, plane_state);
+
+       /* two pixels per clock */
+       return DIV_ROUND_UP(pixel_rate, 2);
+}
+
 static void
 glk_plane_ratio(const struct intel_plane_state *plane_state,
                unsigned int *num, unsigned int *den)
@@ -1980,7 +1989,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
                plane->min_width = icl_plane_min_width;
                plane->max_width = icl_plane_max_width;
                plane->max_height = icl_plane_max_height;
-               plane->min_cdclk = glk_plane_min_cdclk;
+               plane->min_cdclk = icl_plane_min_cdclk;
        } else if (DISPLAY_VER(dev_priv) >= 10) {
                plane->max_width = glk_plane_max_width;
                plane->max_height = skl_plane_max_height;