]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/msm/dpu: Always flush the slave INTF on the CTL
authorMarijn Suijten <marijn.suijten@somainline.org>
Tue, 16 Apr 2024 23:57:43 +0000 (01:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 16 Jun 2024 11:32:23 +0000 (13:32 +0200)
[ Upstream commit 2b938c3ab0a69ec6ea587bbf6fc2aec3db4a8736 ]

As we can clearly see in a downstream kernel [1], flushing the slave INTF
is skipped /only if/ the PPSPLIT topology is active.

However, when DPU was originally submitted to mainline PPSPLIT was no
longer part of it (seems to have been ripped out before submission), but
this clause was incorrectly ported from the original SDE driver.  Given
that there is no support for PPSPLIT (currently), flushing the slave
INTF should /never/ be skipped (as the `if (ppsplit && !master) goto
skip;` clause downstream never becomes true).

[1]: https://git.codelinaro.org/clo/la/platform/vendor/opensource/display-drivers/-/blob/display-kernel.lnx.5.4.r1-rel/msm/sde/sde_encoder_phys_cmd.c?ref_type=heads#L1131-1139

Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support")
Signed-off-by: Marijn Suijten <marijn.suijten@somainline.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/589901/
Link: https://lore.kernel.org/r/20240417-drm-msm-initial-dualpipe-dsc-fixes-v1-3-78ae3ee9a697@somainline.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c

index 8493d68ad8417e2c30fa2a79af2c7c42d8863f9e..e1a97c10c0e4152905c94e67e5c1b8d8d8493f76 100644 (file)
@@ -448,9 +448,6 @@ static void dpu_encoder_phys_cmd_enable_helper(
 
        _dpu_encoder_phys_cmd_pingpong_config(phys_enc);
 
-       if (!dpu_encoder_phys_cmd_is_master(phys_enc))
-               return;
-
        ctl = phys_enc->hw_ctl;
        ctl->ops.get_bitmask_intf(ctl, &flush_mask, phys_enc->intf_idx);
        ctl->ops.update_pending_flush(ctl, flush_mask);