From: Ville Syrjälä Date: Thu, 6 Feb 2020 20:12:03 +0000 (+0200) Subject: drm/i915: Fix g4x+ sprite dotclock limit for upscaling X-Git-Tag: v5.10-rc1~123^2~12^2~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=23d3e3799fb031f5eff5855c3df8e58e3a40001b;p=thirdparty%2Fkernel%2Flinux.git drm/i915: Fix g4x+ sprite dotclock limit for upscaling Even if we're not doing downscaling we should account for some of the extra dotclock limitations for g4x+ sprites. In particular we must never exceed the 90% rule, and with RGB that limits actually drops to 80%. So instead of bailing out when upscaling let's clamp the scaling factor appropriately and go through the rest of calculation normally. By luck we already did the full calculations for the 1:1 case. Signed-off-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20200206201204.31704-1-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula --- diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c index 5ac0dbf0e03d7..dcc26fdce5d1c 100644 --- a/drivers/gpu/drm/i915/display/intel_sprite.c +++ b/drivers/gpu/drm/i915/display/intel_sprite.c @@ -1626,8 +1626,7 @@ static int g4x_sprite_min_cdclk(const struct intel_crtc_state *crtc_state, hscale = drm_rect_calc_hscale(&plane_state->uapi.src, &plane_state->uapi.dst, 0, INT_MAX); - if (hscale < 0x10000) - return pixel_rate; + hscale = max(hscale, 0x10000u); /* Decimation steps at 2x,4x,8x,16x */ decimate = ilog2(hscale >> 16);