Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 595c7f4a authored by Abhinav Kumar's avatar Abhinav Kumar Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm/sde: clear blend stages of all mixers



Currently the blending stages of all the mixers is not
cleared when switching mixer configurations or configuring
solid fill mode.

As a result stale pipes remain connected when switching
mixer configurations causing smmu faults.

Fix the logic to clear the blend stages of all the mixers.

Change-Id: I1a3c5a020d6bc04657cb5357a2cd60c1a53ce4c7
Signed-off-by: default avatarAbhinav Kumar <abhinavk@codeaurora.org>
parent 0afc3da5
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -20,6 +20,9 @@
	(0x40 + (((lm) - LM_0) * 0x004))
#define   CTL_LAYER_EXT2(lm)             \
	(0x70 + (((lm) - LM_0) * 0x004))
#define   CTL_LAYER_EXT3(lm)             \
	(0xA0 + (((lm) - LM_0) * 0x004))

#define   CTL_TOP                       0x014
#define   CTL_FLUSH                     0x018
#define   CTL_START                     0x01C
@@ -308,8 +311,12 @@ static void sde_hw_ctl_clear_all_blendstages(struct sde_hw_ctl *ctx)
	int i;

	for (i = 0; i < ctx->mixer_count; i++) {
		SDE_REG_WRITE(c, CTL_LAYER(LM_0 + i), 0);
		SDE_REG_WRITE(c, CTL_LAYER_EXT(LM_0 + i), 0);
		int mixer_id = ctx->mixer_hw_caps[i].id;

		SDE_REG_WRITE(c, CTL_LAYER(mixer_id), 0);
		SDE_REG_WRITE(c, CTL_LAYER_EXT(mixer_id), 0);
		SDE_REG_WRITE(c, CTL_LAYER_EXT2(mixer_id), 0);
		SDE_REG_WRITE(c, CTL_LAYER_EXT3(mixer_id), 0);
	}
}