disp: msm: sde: fix cont splash pipe identification

This change fixes the continuos splash logic that identifies the
pipes staged by bootloader. The same code flow is used in trusted ui
handover as well. Existing logic was counting the pipes twice if the pipe
is staged on both the layer mixers. This change simplifies the pipes
already staged before handover by using the pipe index to convey if
it is staged or not.

Change-Id: Idb255f2077161dc3553114ac5d04e0ef743bb5ea
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
This commit is contained in:
Abhijit Kulkarni
2021-05-13 00:00:18 -07:00
والد e12be40f65
کامیت 944a0629f5
6فایلهای تغییر یافته به همراه74 افزوده شده و 113 حذف شده

مشاهده پرونده

@@ -919,7 +919,7 @@ static void sde_hw_ctl_setup_blendstage(struct sde_hw_ctl *ctx,
}
static u32 sde_hw_ctl_get_staged_sspp(struct sde_hw_ctl *ctx, enum sde_lm lm,
struct sde_sspp_index_info *info, u32 info_max_cnt)
struct sde_sspp_index_info *info)
{
int i, j;
u32 count = 0;
@@ -929,8 +929,8 @@ static u32 sde_hw_ctl_get_staged_sspp(struct sde_hw_ctl *ctx, enum sde_lm lm,
struct sde_hw_blk_reg_map *c;
const struct ctl_sspp_stage_reg_map *sspp_cfg;
if (!ctx || (lm >= LM_MAX) || !info)
return count;
if (!ctx || (lm >= LM_DCWB_DUMMY_0) || !info)
return 0;
c = &ctx->hw;
mixercfg[0] = SDE_REG_READ(c, CTL_LAYER(lm));
@@ -938,10 +938,11 @@ static u32 sde_hw_ctl_get_staged_sspp(struct sde_hw_ctl *ctx, enum sde_lm lm,
mixercfg[2] = SDE_REG_READ(c, CTL_LAYER_EXT2(lm));
mixercfg[3] = SDE_REG_READ(c, CTL_LAYER_EXT3(lm));
if (mixercfg[0] & CTL_MIXER_BORDER_OUT)
info->bordercolor = true;
for (i = SSPP_VIG0; i < SSPP_MAX; i++) {
for (j = 0; j < CTL_SSPP_MAX_RECTS; j++) {
if (count >= info_max_cnt)
goto end;
sspp_cfg = &sspp_reg_cfg_tbl[i][j];
if (!sspp_cfg->bits || sspp_cfg->ext >= CTL_NUM_EXT)
@@ -953,14 +954,15 @@ static u32 sde_hw_ctl_get_staged_sspp(struct sde_hw_ctl *ctx, enum sde_lm lm,
staged = mixercfg[1] & sspp_cfg->sec_bit_mask;
if (staged) {
info[count].sspp = i;
info[count].is_virtual = j;
if (j)
set_bit(i, info->virt_pipes);
else
set_bit(i, info->pipes);
count++;
}
}
}
end:
return count;
}