disp: msm: sde: fix dsc initial line caluclation
Current DSC intial line calculation is giving extra line on top of recommended value from systems since number of active soft slices considered is wrong. Fix the number or usage of active soft slices in an encoder to align dsc initial line with recommended setting. Change-Id: I321260e22b7824b8c481a55b54831ce9535661cc Signed-off-by: Prabhanjan Kandula <pkandula@codeaurora.org>
This commit is contained in:
@@ -129,7 +129,6 @@ static void sde_hw_dsc_config(struct sde_hw_dsc *hw_dsc,
|
||||
struct sde_hw_blk_reg_map *dsc_c;
|
||||
u32 idx;
|
||||
u32 data = 0;
|
||||
u32 slice_count_per_enc;
|
||||
u32 bpp;
|
||||
|
||||
if (!hw_dsc || !dsc)
|
||||
@@ -139,7 +138,6 @@ static void sde_hw_dsc_config(struct sde_hw_dsc *hw_dsc,
|
||||
return;
|
||||
|
||||
dsc_c = &hw_dsc->hw;
|
||||
slice_count_per_enc = dsc->config.slice_count;
|
||||
|
||||
if (mode & DSC_MODE_SPLIT_PANEL)
|
||||
data |= BIT(0);
|
||||
@@ -147,19 +145,14 @@ static void sde_hw_dsc_config(struct sde_hw_dsc *hw_dsc,
|
||||
if (mode & DSC_MODE_MULTIPLEX)
|
||||
data |= BIT(1);
|
||||
|
||||
if (dsc->dsc_4hsmerge_en)
|
||||
slice_count_per_enc = dsc->config.slice_count >> 2;
|
||||
else if ((mode & DSC_MODE_MULTIPLEX) || (dsc->half_panel_pu))
|
||||
slice_count_per_enc = dsc->config.slice_count >> 1;
|
||||
|
||||
data |= (slice_count_per_enc & 0x3) << 7;
|
||||
data |= (dsc->num_active_ss_per_enc & 0x3) << 7;
|
||||
SDE_REG_WRITE(dsc_c, DSC_CMN_MAIN_CNF, data);
|
||||
|
||||
data = (dsc->initial_lines & 0xff);
|
||||
data |= ((mode & DSC_MODE_VIDEO) ? 1 : 0) << 9;
|
||||
if (ich_reset_override)
|
||||
data |= 0xC00; // set bit 10 and 11
|
||||
data |= (_dsc_calc_ob_max_addr(hw_dsc, slice_count_per_enc) << 18);
|
||||
data |= (_dsc_calc_ob_max_addr(hw_dsc, dsc->num_active_ss_per_enc) << 18);
|
||||
|
||||
SDE_REG_WRITE(dsc_c, ENC_DF_CTRL + idx, data);
|
||||
|
||||
|
مرجع در شماره جدید
Block a user