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, sde_crtc->name, lm->idx - LM_0,
ctl->idx - CTL_0); ctl->idx - CTL_0);
ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx, ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx,
NULL); NULL, true);
} else { } else {
ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx, 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 */ /* only enable border color on LM */
if (phys_enc->hw_ctl->ops.setup_blendstage) if (phys_enc->hw_ctl->ops.setup_blendstage)
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) { 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, 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_hw_blk_reg_map *c;
struct sde_ctl_mixer_cfg cfg = { 0 }; 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) if (stage_cfg)
_sde_hw_ctl_get_mixer_cfg(ctx, stage_cfg, stages, &cfg); _sde_hw_ctl_get_mixer_cfg(ctx, stage_cfg, stages, &cfg);
if ((!cfg.cfg && !cfg.ext && !cfg.ext2 && !cfg.ext3) || if (!disable_border &&
(stage_cfg && !stage_cfg->stage[0][0])) ((!cfg.cfg && !cfg.ext && !cfg.ext2 && !cfg.ext3) ||
(stage_cfg && !stage_cfg->stage[0][0])))
cfg.cfg |= CTL_MIXER_BORDER_OUT; cfg.cfg |= CTL_MIXER_BORDER_OUT;
SDE_REG_WRITE(c, CTL_LAYER(lm), cfg.cfg); 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 * Configure layer mixer to pipe configuration
* @ctx : ctl path ctx pointer * @ctx : ctl path ctx pointer
* @lm : layer mixer enumeration * @lm : layer mixer enumeration
* @cfg : blend stage configuration * @cfg : blend stage configuration
* @disable_border: if true disable border, else enable border out
*/ */
void (*setup_blendstage)(struct sde_hw_ctl *ctx, 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 * Get all the sspp staged on a layer mixer