msm_fb: display: keep borderfill pipe's iommu info

Keep borderfill pipe's iommu info during base layer pipe
swap with original base layer pipe. Otherwise, borderfill
pipe's may contain original base layer pipe's iommu info
which cause iommu page fault due to same iommu buffer is
unmapped two times.

CRs-fixed: 436711
Change-Id: Ibdb792055287283c4449db07c2de2901aa4fe9b6
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
This commit is contained in:
Kuogee Hsieh 2013-01-30 10:07:48 -08:00 committed by Iliyan Malchev
parent e561f70b6c
commit 82caf103f7

View file

@ -1713,6 +1713,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
struct mdp4_overlay_pipe *bspipe; struct mdp4_overlay_pipe *bspipe;
int ptype, pnum, pndx, mixer; int ptype, pnum, pndx, mixer;
int format, alpha_enable, alpha; int format, alpha_enable, alpha;
struct mdp4_iommu_pipe_info iom;
if (pipe->pipe_type != OVERLAY_TYPE_BF) if (pipe->pipe_type != OVERLAY_TYPE_BF)
return; return;
@ -1733,6 +1734,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
/* save original base layer */ /* save original base layer */
ctrl->baselayer[mixer] = bspipe; ctrl->baselayer[mixer] = bspipe;
iom = pipe->iommu;
pipe->alpha = 0; /* make sure bf pipe has alpha 0 */ pipe->alpha = 0; /* make sure bf pipe has alpha 0 */
ptype = pipe->pipe_type; ptype = pipe->pipe_type;
pnum = pipe->pipe_num; pnum = pipe->pipe_num;
@ -1747,6 +1749,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
pipe->src_format = format; pipe->src_format = format;
pipe->alpha_enable = alpha_enable; pipe->alpha_enable = alpha_enable;
pipe->alpha = alpha; pipe->alpha = alpha;
pipe->iommu = iom;
/* free original base layer pipe to be sued as normal pipe */ /* free original base layer pipe to be sued as normal pipe */
bspipe->pipe_used = 0; bspipe->pipe_used = 0;
@ -2200,7 +2203,9 @@ void mdp4_overlay_pipe_free(struct mdp4_overlay_pipe *pipe)
ndx = pipe->pipe_ndx; ndx = pipe->pipe_ndx;
mixer = pipe->mixer_num; mixer = pipe->mixer_num;
mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0); /* No need for borderfill pipe */
if (pipe->pipe_type != OVERLAY_TYPE_BF)
mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
iom = pipe->iommu; iom = pipe->iommu;