diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index a7420c7bb9..fec870b085 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -2059,6 +2059,7 @@ static enum drm_mode_status dp_display_validate_mode( bool dsc_en; u32 num_lm = 0; int rc = 0; + u32 pclk_khz = 0; if (!dp_display || !mode || !panel || !avail_res || !avail_res->max_mixer_width) { @@ -2099,8 +2100,12 @@ static enum drm_mode_status dp_display_validate_mode( goto end; } - if (mode->clock > dp_display->max_pclk_khz) { - DP_MST_DEBUG("clk:%d, max:%d\n", mode->clock, + pclk_khz = dp_mode.timing.widebus_en ? + (dp_mode.timing.pixel_clk_khz >> 1) : + (dp_mode.timing.pixel_clk_khz); + + if (pclk_khz > dp_display->max_pclk_khz) { + DP_MST_DEBUG("clk:%d, max:%d\n", pclk_khz, dp_display->max_pclk_khz); goto end; }