Merge "disp: msm: sde: disable border color on empty blendstage"

This commit is contained in:
qctecmdr
2020-08-13 16:50:24 -07:00
committed by Gerrit - the friendly Code Review server
4 changed files with 15 additions and 10 deletions

View File

@@ -1686,10 +1686,11 @@ static void _sde_crtc_blend_setup(struct drm_crtc *crtc,
sde_crtc->name, lm->idx - LM_0,
ctl->idx - CTL_0);
ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx,
NULL);
NULL, true);
} else {
ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx,
&sde_crtc->stage_cfg[lm_layout]);
&sde_crtc->stage_cfg[lm_layout],
false);
}
}

View File

@@ -4173,7 +4173,7 @@ int sde_encoder_helper_reset_mixers(struct sde_encoder_phys *phys_enc,
/* only enable border color on LM */
if (phys_enc->hw_ctl->ops.setup_blendstage)
phys_enc->hw_ctl->ops.setup_blendstage(
phys_enc->hw_ctl, hw_lm->idx, NULL);
phys_enc->hw_ctl, hw_lm->idx, NULL, false);
}
if (!lm_valid) {

View File

@@ -946,7 +946,8 @@ static void _sde_hw_ctl_get_mixer_cfg(struct sde_hw_ctl *ctx,
}
static void sde_hw_ctl_setup_blendstage(struct sde_hw_ctl *ctx,
enum sde_lm lm, struct sde_hw_stage_cfg *stage_cfg)
enum sde_lm lm, struct sde_hw_stage_cfg *stage_cfg,
bool disable_border)
{
struct sde_hw_blk_reg_map *c;
struct sde_ctl_mixer_cfg cfg = { 0 };
@@ -964,8 +965,9 @@ static void sde_hw_ctl_setup_blendstage(struct sde_hw_ctl *ctx,
if (stage_cfg)
_sde_hw_ctl_get_mixer_cfg(ctx, stage_cfg, stages, &cfg);
if ((!cfg.cfg && !cfg.ext && !cfg.ext2 && !cfg.ext3) ||
(stage_cfg && !stage_cfg->stage[0][0]))
if (!disable_border &&
((!cfg.cfg && !cfg.ext && !cfg.ext2 && !cfg.ext3) ||
(stage_cfg && !stage_cfg->stage[0][0])))
cfg.cfg |= CTL_MIXER_BORDER_OUT;
SDE_REG_WRITE(c, CTL_LAYER(lm), cfg.cfg);

View File

@@ -423,12 +423,14 @@ struct sde_hw_ctl_ops {
/**
* Configure layer mixer to pipe configuration
* @ctx : ctl path ctx pointer
* @lm : layer mixer enumeration
* @cfg : blend stage configuration
* @ctx : ctl path ctx pointer
* @lm : layer mixer enumeration
* @cfg : blend stage configuration
* @disable_border: if true disable border, else enable border out
*/
void (*setup_blendstage)(struct sde_hw_ctl *ctx,
enum sde_lm lm, struct sde_hw_stage_cfg *cfg);
enum sde_lm lm, struct sde_hw_stage_cfg *cfg,
bool disable_border);
/**
* Get all the sspp staged on a layer mixer