diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index 7559aba204..f6a591f990 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -3052,37 +3052,38 @@ static void dp_display_convert_to_dp_mode(struct dp_display *dp_display, memset(dp_mode, 0, sizeof(*dp_mode)); - free_dsc_blks = dp_display->max_dsc_count - + if (dp_panel->dsc_en) { + free_dsc_blks = dp_display->max_dsc_count - dp->tot_dsc_blks_in_use + dp_panel->dsc_blks_in_use; - DP_DEBUG_V("Before: in_use:%d, max:%d, free:%d\n", + DP_DEBUG_V("Before: in_use:%d, max:%d, free:%d\n", dp->tot_dsc_blks_in_use, dp_display->max_dsc_count, free_dsc_blks); - rc = msm_get_dsc_count(dp->priv, drm_mode->hdisplay, - &required_dsc_blks); - if (rc) { - DP_ERR("error getting dsc count. rc:%d\n", rc); - return; - } + rc = msm_get_dsc_count(dp->priv, drm_mode->hdisplay, + &required_dsc_blks); + if (rc) { + DP_ERR("error getting dsc count. rc:%d\n", rc); + return; + } - curr_dsc = dp_panel->dsc_blks_in_use; - dp->tot_dsc_blks_in_use -= dp_panel->dsc_blks_in_use; - dp_panel->dsc_blks_in_use = 0; + curr_dsc = dp_panel->dsc_blks_in_use; + dp->tot_dsc_blks_in_use -= dp_panel->dsc_blks_in_use; + dp_panel->dsc_blks_in_use = 0; - if (free_dsc_blks >= required_dsc_blks) { - dp_mode->capabilities |= DP_PANEL_CAPS_DSC; - new_dsc = max(curr_dsc, required_dsc_blks); - dp_panel->dsc_blks_in_use = new_dsc; - dp->tot_dsc_blks_in_use += new_dsc; - } + if (free_dsc_blks >= required_dsc_blks) { + dp_mode->capabilities |= DP_PANEL_CAPS_DSC; + new_dsc = max(curr_dsc, required_dsc_blks); + dp_panel->dsc_blks_in_use = new_dsc; + dp->tot_dsc_blks_in_use += new_dsc; + } - if (dp_mode->capabilities & DP_PANEL_CAPS_DSC) DP_DEBUG_V("After: in_use:%d, max:%d, free:%d, req:%d, caps:0x%x\n", dp->tot_dsc_blks_in_use, dp_display->max_dsc_count, free_dsc_blks, required_dsc_blks, dp_mode->capabilities); + } dp_panel->convert_to_dp_mode(dp_panel, drm_mode, dp_mode); } diff --git a/msm/dp/dp_panel.c b/msm/dp/dp_panel.c index 9b0c4677f2..ace9b8ab4d 100644 --- a/msm/dp/dp_panel.c +++ b/msm/dp/dp_panel.c @@ -1952,7 +1952,7 @@ static u32 dp_panel_get_supported_bpp(struct dp_panel *dp_panel, if (bpp < min_supported_bpp) DP_ERR("bpp %d is below minimum supported bpp %d\n", bpp, min_supported_bpp); - if (dp_panel->dsc_en && bpp != 24 && bpp != 30 && bpp != 36) + if (dsc_en && bpp != 24 && bpp != 30 && bpp != 36) DP_ERR("bpp %d is not supported when dsc is enabled\n", bpp); return bpp; @@ -3013,7 +3013,7 @@ static void dp_panel_convert_to_dp_mode(struct dp_panel *dp_panel, dp_mode->timing.bpp = dp_panel_get_mode_bpp(dp_panel, dp_mode->timing.bpp, dp_mode->timing.pixel_clk_khz, dsc_en); - if (dp_panel->dsc_en && dsc_en) { + if (dsc_en) { if (dp_panel_dsc_prepare_basic_params(comp_info, dp_mode, dp_panel)) { DP_DEBUG("prepare DSC basic params failed\n");