From 5d8bfac54d612cfad917d4f3dd3ea5757f3ea6c4 Mon Sep 17 00:00:00 2001 From: Dhaval Patel Date: Wed, 10 Jun 2020 17:33:12 -0700 Subject: [PATCH] disp: msm: sde: remove pipe fetch halt check on real plane SDE driver started supporting multirect mode with rect_1 only configuration. In such case, master plane can not trigger pipe fetch halt independently. This change removes the pipe fetch halt check completely because it was only done for master plane without buffer flip usecase. AXI fetch halt provides similar functionality during idle power collapse and suspend-resume. Change-Id: I79d9d0eac2de95f1bb88561c7cc259e0cc4b2ca4 Signed-off-by: Dhaval Patel --- msm/sde/sde_hw_sspp.h | 4 --- msm/sde/sde_plane.c | 67 +------------------------------------------ 2 files changed, 1 insertion(+), 70 deletions(-) diff --git a/msm/sde/sde_hw_sspp.h b/msm/sde/sde_hw_sspp.h index b35082e22d58..8c25c0e78c2f 100644 --- a/msm/sde/sde_hw_sspp.h +++ b/msm/sde/sde_hw_sspp.h @@ -165,8 +165,6 @@ struct sde_hw_pixel_ext { * 4: Read 1 line/pixel drop 3 lines/pixels * 8: Read 1 line/pixel drop 7 lines/pixels * 16: Read 1 line/pixel drop 15 line/pixels - * @index: index of the rectangle of SSPP - * @mode: parallel or time multiplex multirect mode */ struct sde_hw_pipe_cfg { struct sde_hw_fmt_layout layout; @@ -174,8 +172,6 @@ struct sde_hw_pipe_cfg { struct sde_rect dst_rect; u8 horz_decimation; u8 vert_decimation; - enum sde_sspp_multirect_index index; - enum sde_sspp_multirect_mode mode; }; /** diff --git a/msm/sde/sde_plane.c b/msm/sde/sde_plane.c index 7f4137d635ea..cd5f3a261b68 100644 --- a/msm/sde/sde_plane.c +++ b/msm/sde/sde_plane.c @@ -1948,84 +1948,19 @@ static int sde_plane_prepare_fb(struct drm_plane *plane, return 0; } -/** - * _sde_plane_fetch_halt - halts vbif transactions for a plane - * @plane: Pointer to plane - * Returns: 0 on success - */ -static int _sde_plane_fetch_halt(struct drm_plane *plane) -{ - struct sde_plane *psde; - int xin_id; - enum sde_clk_ctrl_type clk_ctrl; - struct msm_drm_private *priv; - struct sde_kms *sde_kms; - - psde = to_sde_plane(plane); - if (!plane || !plane->dev || !psde->pipe_hw) { - SDE_ERROR("invalid arguments\n"); - return -EINVAL; - } - - priv = plane->dev->dev_private; - if (!priv || !priv->kms) { - SDE_ERROR("invalid KMS reference\n"); - return -EINVAL; - } - - sde_kms = to_sde_kms(priv->kms); - clk_ctrl = psde->pipe_hw->cap->clk_ctrl; - xin_id = psde->pipe_hw->cap->xin_id; - SDE_DEBUG_PLANE(psde, "pipe:%d xin_id:%d clk_ctrl:%d\n", - psde->pipe - SSPP_VIG0, xin_id, clk_ctrl); - SDE_EVT32_VERBOSE(psde, psde->pipe - SSPP_VIG0, xin_id, clk_ctrl); - - return sde_vbif_halt_plane_xin(sde_kms, xin_id, clk_ctrl); -} - - static void sde_plane_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state) { struct sde_plane *psde = to_sde_plane(plane); struct sde_plane_state *old_pstate; - int ret; - if (!old_state || !old_state->fb || !plane || !plane->state) + if (!old_state || !old_state->fb || !plane) return; old_pstate = to_sde_plane_state(old_state); SDE_DEBUG_PLANE(psde, "FB[%u]\n", old_state->fb->base.id); - /* - * plane->state gets populated for next frame after swap_state. If - * plane->state->crtc pointer is not populated then it is not used in - * the next frame, hence making it an unused plane. - */ - if ((plane->state->crtc == NULL) && !psde->is_virtual) { - SDE_DEBUG_PLANE(psde, "unused pipe:%u\n", - psde->pipe - SSPP_VIG0); - - /* halt this plane now */ - ret = pm_runtime_get_sync(plane->dev->dev); - if (ret < 0) { - SDE_ERROR("power resource enable failed with %d", ret); - SDE_EVT32(ret, SDE_EVTLOG_ERROR); - return; - } - - ret = _sde_plane_fetch_halt(plane); - if (ret) { - SDE_ERROR_PLANE(psde, - "unused pipe %u halt failed\n", - psde->pipe - SSPP_VIG0); - SDE_EVT32(DRMID(plane), psde->pipe - SSPP_VIG0, - ret, SDE_EVTLOG_ERROR); - } - pm_runtime_put_sync(plane->dev->dev); - } - msm_framebuffer_cleanup(old_state->fb, old_pstate->aspace); }