Jiri Slaby ef7db2
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Jiri Slaby ef7db2
Date: Thu, 29 Dec 2022 21:18:30 +0200
Jiri Slaby ef7db2
Subject: [PATCH] drm/msm/dpu: set pdpu->is_rt_pipe early in
Jiri Slaby ef7db2
 dpu_plane_sspp_atomic_update()
Jiri Slaby ef7db2
References: bsc#1012628
Jiri Slaby ef7db2
Patch-mainline: 6.2.3
Jiri Slaby ef7db2
Git-commit: 1d233b1cb149ec78c20fac58331b27bb460f9558
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[ Upstream commit 1d233b1cb149ec78c20fac58331b27bb460f9558 ]
Jiri Slaby ef7db2
Jiri Slaby ef7db2
The function dpu_plane_sspp_atomic_update() updates pdpu->is_rt_pipe
Jiri Slaby ef7db2
flag, but after the commit 854f6f1c653b ("drm/msm/dpu: update the qos
Jiri Slaby ef7db2
remap only if the client type changes") it sets the flag late, after all
Jiri Slaby ef7db2
the qos functions have updated QoS programming. Move the flag update
Jiri Slaby ef7db2
back to the place where it happened before the mentioned commit to let
Jiri Slaby ef7db2
the pipe be programmed according to its current RT/non-RT state.
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Fixes: 854f6f1c653b ("drm/msm/dpu: update the qos remap only if the client type changes")
Jiri Slaby ef7db2
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Jiri Slaby ef7db2
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Jiri Slaby ef7db2
Patchwork: https://patchwork.freedesktop.org/patch/516239/
Jiri Slaby ef7db2
Link: https://lore.kernel.org/r/20221229191856.3508092-2-dmitry.baryshkov@linaro.org
Jiri Slaby ef7db2
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Jiri Slaby ef7db2
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby ef7db2
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby ef7db2
---
Jiri Slaby ef7db2
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 15 ++++++---------
Jiri Slaby ef7db2
 1 file changed, 6 insertions(+), 9 deletions(-)
Jiri Slaby ef7db2
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
Jiri Slaby ef7db2
index 86719020..bfd5be89 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
Jiri Slaby ef7db2
@@ -1126,7 +1126,7 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
Jiri Slaby ef7db2
 	struct dpu_plane_state *pstate = to_dpu_plane_state(state);
Jiri Slaby ef7db2
 	struct drm_crtc *crtc = state->crtc;
Jiri Slaby ef7db2
 	struct drm_framebuffer *fb = state->fb;
Jiri Slaby ef7db2
-	bool is_rt_pipe, update_qos_remap;
Jiri Slaby ef7db2
+	bool is_rt_pipe;
Jiri Slaby ef7db2
 	const struct dpu_format *fmt =
Jiri Slaby ef7db2
 		to_dpu_format(msm_framebuffer_format(fb));
Jiri Slaby ef7db2
 	struct dpu_hw_pipe_cfg pipe_cfg;
Jiri Slaby ef7db2
@@ -1138,6 +1138,9 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
Jiri Slaby ef7db2
 	pstate->pending = true;
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 	is_rt_pipe = (dpu_crtc_get_client_type(crtc) != NRT_CLIENT);
Jiri Slaby ef7db2
+	pstate->needs_qos_remap |= (is_rt_pipe != pdpu->is_rt_pipe);
Jiri Slaby ef7db2
+	pdpu->is_rt_pipe = is_rt_pipe;
Jiri Slaby ef7db2
+
Jiri Slaby ef7db2
 	_dpu_plane_set_qos_ctrl(plane, false, DPU_PLANE_QOS_PANIC_CTRL);
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 	DPU_DEBUG_PLANE(pdpu, "FB[%u] " DRM_RECT_FP_FMT "->crtc%u " DRM_RECT_FMT
Jiri Slaby ef7db2
@@ -1219,14 +1222,8 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
Jiri Slaby ef7db2
 		_dpu_plane_set_ot_limit(plane, crtc, &pipe_cfg);
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-	update_qos_remap = (is_rt_pipe != pdpu->is_rt_pipe) ||
Jiri Slaby ef7db2
-			pstate->needs_qos_remap;
Jiri Slaby ef7db2
-
Jiri Slaby ef7db2
-	if (update_qos_remap) {
Jiri Slaby ef7db2
-		if (is_rt_pipe != pdpu->is_rt_pipe)
Jiri Slaby ef7db2
-			pdpu->is_rt_pipe = is_rt_pipe;
Jiri Slaby ef7db2
-		else if (pstate->needs_qos_remap)
Jiri Slaby ef7db2
-			pstate->needs_qos_remap = false;
Jiri Slaby ef7db2
+	if (pstate->needs_qos_remap) {
Jiri Slaby ef7db2
+		pstate->needs_qos_remap = false;
Jiri Slaby ef7db2
 		_dpu_plane_set_qos_remap(plane);
Jiri Slaby ef7db2
 	}
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-- 
Jiri Slaby ef7db2
2.35.3
Jiri Slaby ef7db2