mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
drm/msm/dpu: set pdpu->is_rt_pipe early in dpu_plane_sspp_atomic_update()
The function dpu_plane_sspp_atomic_update() updates pdpu->is_rt_pipe flag, but after the commit854f6f1c65("drm/msm/dpu: update the qos remap only if the client type changes") it sets the flag late, after all the qos functions have updated QoS programming. Move the flag update back to the place where it happened before the mentioned commit to let the pipe be programmed according to its current RT/non-RT state. Fixes:854f6f1c65("drm/msm/dpu: update the qos remap only if the client type changes") Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/516239/ Link: https://lore.kernel.org/r/20221229191856.3508092-2-dmitry.baryshkov@linaro.org Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
@@ -1126,7 +1126,7 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
|
||||
struct dpu_plane_state *pstate = to_dpu_plane_state(state);
|
||||
struct drm_crtc *crtc = state->crtc;
|
||||
struct drm_framebuffer *fb = state->fb;
|
||||
bool is_rt_pipe, update_qos_remap;
|
||||
bool is_rt_pipe;
|
||||
const struct dpu_format *fmt =
|
||||
to_dpu_format(msm_framebuffer_format(fb));
|
||||
struct dpu_hw_pipe_cfg pipe_cfg;
|
||||
@@ -1138,6 +1138,9 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
|
||||
pstate->pending = true;
|
||||
|
||||
is_rt_pipe = (dpu_crtc_get_client_type(crtc) != NRT_CLIENT);
|
||||
pstate->needs_qos_remap |= (is_rt_pipe != pdpu->is_rt_pipe);
|
||||
pdpu->is_rt_pipe = is_rt_pipe;
|
||||
|
||||
_dpu_plane_set_qos_ctrl(plane, false, DPU_PLANE_QOS_PANIC_CTRL);
|
||||
|
||||
DPU_DEBUG_PLANE(pdpu, "FB[%u] " DRM_RECT_FP_FMT "->crtc%u " DRM_RECT_FMT
|
||||
@@ -1219,14 +1222,8 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
|
||||
_dpu_plane_set_ot_limit(plane, crtc, &pipe_cfg);
|
||||
}
|
||||
|
||||
update_qos_remap = (is_rt_pipe != pdpu->is_rt_pipe) ||
|
||||
pstate->needs_qos_remap;
|
||||
|
||||
if (update_qos_remap) {
|
||||
if (is_rt_pipe != pdpu->is_rt_pipe)
|
||||
pdpu->is_rt_pipe = is_rt_pipe;
|
||||
else if (pstate->needs_qos_remap)
|
||||
pstate->needs_qos_remap = false;
|
||||
if (pstate->needs_qos_remap) {
|
||||
pstate->needs_qos_remap = false;
|
||||
_dpu_plane_set_qos_remap(plane);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user