]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/msm/dpu: fix mixer number counter on allocation
authorJun Nie <jun.nie@linaro.org>
Thu, 18 Sep 2025 13:28:53 +0000 (21:28 +0800)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Fri, 14 Nov 2025 03:56:59 +0000 (05:56 +0200)
Current code only supports usage cases with one pair of mixers at
most. To support quad-pipe usage case, two pairs of mixers need to
be reserved. The lm_count for all pairs is cleared if a peer
allocation fails in current implementation. Reset the current lm_count
to an even number instead of completely clearing it. This prevents all
pairs from being cleared in cases where multiple LM pairs are needed.

Signed-off-by: Jun Nie <jun.nie@linaro.org>
Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/675400/
Link: https://lore.kernel.org/r/20250918-v6-16-rc2-quad-pipe-upstream-4-v16-1-ff6232e3472f@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c

index d9c3b0a1d0914a47f86ac9a854fbcede021e73cb..f6568ed8375f1c1ab8e2f288b9745e7e2cc46eae 100644 (file)
@@ -374,7 +374,11 @@ static int _dpu_rm_reserve_lms(struct dpu_rm *rm,
                if (!rm->mixer_blks[i])
                        continue;
 
-               lm_count = 0;
+               /*
+                * Reset lm_count to an even index. This will drop the previous
+                * primary mixer if failed to find its peer.
+                */
+               lm_count &= ~1;
                lm_idx[lm_count] = i;
 
                if (!_dpu_rm_check_lm_and_get_connected_blks(rm, global_state,