Explorar o código

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

qctecmdr %!s(int64=4) %!d(string=hai) anos
pai
achega
20ed4f0785
Modificáronse 4 ficheiros con 15 adicións e 10 borrados
  1. 3 2
      msm/sde/sde_crtc.c
  2. 1 1
      msm/sde/sde_encoder.c
  3. 5 3
      msm/sde/sde_hw_ctl.c
  4. 6 4
      msm/sde/sde_hw_ctl.h

+ 3 - 2
msm/sde/sde_crtc.c

@@ -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);
 		}
 	}
 

+ 1 - 1
msm/sde/sde_encoder.c

@@ -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) {

+ 5 - 3
msm/sde/sde_hw_ctl.c

@@ -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);

+ 6 - 4
msm/sde/sde_hw_ctl.h

@@ -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