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: Abhinav Kumar <abhinavk@codeaurora.org>
This commit is contained in:
Abhinav Kumar 2017-12-22 00:02:08 -08:00 committed by Gerrit - the friendly Code Review server
parent 55cc722ec6
commit 19e1a4c6c4

View file

@ -21,6 +21,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
@ -315,8 +318,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);
}
}