Ver código fonte

disp: msm: sde: fix plane detach from ctl path

During display disable, ensure source pipes are detached
from control path in the disable commit itself. Otherwise,
if other display acquire these pipes immediately it can hang
as these pipes are still staged on current display ctl path.

Change-Id: Idc376051908676c74bc26394372a92316a674e3b
Signed-off-by: Prabhanjan Kandula <[email protected]>
Prabhanjan Kandula 1 ano atrás
pai
commit
3817317773
1 arquivos alterados com 3 adições e 2 exclusões
  1. 3 2
      msm/sde/sde_hw_ctl.c

+ 3 - 2
msm/sde/sde_hw_ctl.c

@@ -994,11 +994,13 @@ static void sde_hw_ctl_clear_all_blendstages(struct sde_hw_ctl *ctx)
 		return;
 
 	c = &ctx->hw;
+	SDE_REG_WRITE(c, CTL_FETCH_PIPE_ACTIVE, 0);
+
 	for (i = 0; i < ctx->mixer_count; i++) {
 		int mixer_id = ctx->mixer_hw_caps[i].id;
 
 		if (mixer_id >= LM_DCWB_DUMMY_0)
-			return;
+			break;
 
 		SDE_REG_WRITE(c, CTL_LAYER(mixer_id), 0);
 		SDE_REG_WRITE(c, CTL_LAYER_EXT(mixer_id), 0);
@@ -1006,7 +1008,6 @@ static void sde_hw_ctl_clear_all_blendstages(struct sde_hw_ctl *ctx)
 		SDE_REG_WRITE(c, CTL_LAYER_EXT3(mixer_id), 0);
 		SDE_REG_WRITE(c, CTL_LAYER_EXT4(mixer_id), 0);
 	}
-	SDE_REG_WRITE(c, CTL_FETCH_PIPE_ACTIVE, 0);
 }
 
 static void _sde_hw_ctl_get_mixer_cfg(struct sde_hw_ctl *ctx,