drm/msm/sde: program pixel extension from scalar config from sde plane
Avoid implicit programming of pixel extension and scalar blocks
of an SSPP by programming them from sde plane.
Change-Id: Iac324e7d75f29ebf4b3d8bd2edc38b62c98d5193
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_plane.c b/drivers/gpu/drm/msm/sde/sde_plane.c
index 8ff08dc..e144a0d 100644
--- a/drivers/gpu/drm/msm/sde/sde_plane.c
+++ b/drivers/gpu/drm/msm/sde/sde_plane.c
@@ -1104,8 +1104,6 @@
psde->pipe_cfg.src_rect.w = psde->pipe_cfg.dst_rect.w;
psde->pipe_cfg.src_rect.h = psde->pipe_cfg.dst_rect.h;
- _sde_plane_setup_scaler(psde, fmt, 0);
-
if (psde->pipe_hw->ops.setup_format)
psde->pipe_hw->ops.setup_format(psde->pipe_hw,
fmt, SDE_SSPP_SOLID_FILL,
@@ -1113,9 +1111,13 @@
if (psde->pipe_hw->ops.setup_rects)
psde->pipe_hw->ops.setup_rects(psde->pipe_hw,
- &psde->pipe_cfg, &psde->pixel_ext,
- pstate->multirect_index,
- psde->scaler3_cfg);
+ &psde->pipe_cfg,
+ pstate->multirect_index);
+
+ _sde_plane_setup_scaler(psde, fmt, 0);
+ if (psde->pipe_hw->ops.setup_pe)
+ psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
+ &psde->pixel_ext);
}
return 0;
@@ -1238,14 +1240,21 @@
/* skip remaining processing on color fill */
pstate->dirty = 0x0;
} else if (psde->pipe_hw->ops.setup_rects) {
- _sde_plane_setup_scaler(psde, fmt, pstate);
-
psde->pipe_hw->ops.setup_rects(psde->pipe_hw,
- &psde->pipe_cfg, &psde->pixel_ext,
- pstate->multirect_index,
- psde->scaler3_cfg);
+ &psde->pipe_cfg,
+ pstate->multirect_index);
}
+ _sde_plane_setup_scaler(psde, fmt, pstate);
+ if (psde->pipe_hw->ops.setup_pe)
+ psde->pipe_hw->ops.setup_pe(psde->pipe_hw,
+ &psde->pixel_ext);
+
+ if (psde->pipe_hw->ops.setup_scaler)
+ psde->pipe_hw->ops.setup_scaler(psde->pipe_hw,
+ &psde->pipe_cfg, &psde->pixel_ext,
+ psde->scaler3_cfg);
+
/* update excl rect */
if (psde->pipe_hw->ops.setup_excl_rect)
psde->pipe_hw->ops.setup_excl_rect(psde->pipe_hw,