|
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 |
|