diff options
author | Abhijit Kulkarni <kabhijit@codeaurora.org> | 2020-10-28 19:43:58 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-11-03 21:55:26 -0800 |
commit | d9bc37f1eb9d09991ee2215f8db1e977e9a37fa1 (patch) | |
tree | 3adb00cfcabf3f0c4faf8ec9c762d7dd2d22a5b8 | |
parent | 92a9a5223ccaf64a56df9fa9e61f43f187d2ae90 (diff) | |
download | display-drivers-d9bc37f1eb9d09991ee2215f8db1e977e9a37fa1.tar.gz |
disp: msm: sde: fix ich reset override logic
This change fixes the detection logic for overriding the ich
reset in single dsc case. In the previous logic ich reset override
was not getting triggered when partial update on single dsc was
enabled. This override is required to change the
default Hw behavior of changing the ich reset position.
For single dsc case partial update case when DSC encoder
configuration changes from 2 slices to single slice
this override is required.
Change-Id: I435dc7ff10c9fb0edb8e40e6701608aa22136981
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
Signed-off-by: Jayaprakash <jmadiset@codeaurora.org>
-rw-r--r-- | msm/sde/sde_encoder.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 01caa291..32c983ba 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -1358,6 +1358,7 @@ static int _sde_encoder_dsc_n_lm_1_enc_1_intf(struct sde_encoder_virt *sde_enc) struct msm_display_dsc_info *dsc = NULL; struct sde_hw_ctl *hw_ctl; struct sde_ctl_dsc_cfg cfg; + bool half_panel_partial_update; if (hw_dsc == NULL || hw_pp == NULL || !enc_master) { SDE_ERROR_ENC(sde_enc, "invalid params for DSC\n"); @@ -1376,15 +1377,19 @@ static int _sde_encoder_dsc_n_lm_1_enc_1_intf(struct sde_encoder_virt *sde_enc) enc_ip_w = intf_ip_w; _sde_encoder_dsc_initial_line_calc(dsc, enc_ip_w); + half_panel_partial_update = (sde_enc->cur_conn_roi.w <= + sde_enc->cur_master->cached_mode.hdisplay / 2); - ich_res = _sde_encoder_dsc_ich_reset_override_needed(false, dsc); + ich_res = _sde_encoder_dsc_ich_reset_override_needed( + half_panel_partial_update, dsc); if (enc_master->intf_mode == INTF_MODE_VIDEO) dsc_common_mode = DSC_MODE_VIDEO; - SDE_DEBUG_ENC(sde_enc, "pic_w: %d pic_h: %d mode:%d\n", - roi->w, roi->h, dsc_common_mode); - SDE_EVT32(DRMID(&sde_enc->base), roi->w, roi->h, dsc_common_mode); + SDE_DEBUG_ENC(sde_enc, "pic_w: %d pic_h: %d mode:%d ich_res:%d\n", + roi->w, roi->h, dsc_common_mode, ich_res); + SDE_EVT32(DRMID(&sde_enc->base), roi->w, roi->h, + dsc_common_mode, ich_res, half_panel_partial_update); _sde_encoder_dsc_pipe_cfg(hw_dsc, hw_pp, dsc, dsc_common_mode, ich_res, true, hw_dsc_pp, false); |