Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/disp/dpu: add merge3d support for sc7280

On SC7280 targets, display modes with a width greater than the
max_mixer_width (2400) are rejected during mode validation when
merge3d is disabled. This limitation exists because, without a
3D merge block, two layer mixers cannot be combined(non-DSC interface),
preventing large layers from being split across mixers. As a result,
higher resolution modes cannot be supported.

Enable merge3d support on SC7280 to allow combining streams from
two layer mixers into a single non-DSC interface. This capability
removes the width restriction and enables buffer sizes beyond the
2400-pixel limit.

Fixes: 591e34a091d1 ("drm/msm/disp/dpu1: add support for display for SC7280 target")
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/696713/
Link: https://lore.kernel.org/r/20260101-4k-v2-1-712ae3c1f816@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

authored by

Mahadevan P and committed by
Dmitry Baryshkov
2892de3f f5aa414e

+12 -2
+12 -2
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h
··· 13 13 .has_dim_layer = true, 14 14 .has_idle_pc = true, 15 15 .max_linewidth = 2400, 16 + .has_3d_merge = true, 16 17 .pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE, 17 18 }; 18 19 ··· 135 134 .name = "pingpong_2", .id = PINGPONG_2, 136 135 .base = 0x6b000, .len = 0, 137 136 .sblk = &sc7280_pp_sblk, 138 - .merge_3d = 0, 137 + .merge_3d = MERGE_3D_1, 139 138 .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), 140 139 }, { 141 140 .name = "pingpong_3", .id = PINGPONG_3, 142 141 .base = 0x6c000, .len = 0, 143 142 .sblk = &sc7280_pp_sblk, 144 - .merge_3d = 0, 143 + .merge_3d = MERGE_3D_1, 145 144 .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), 145 + }, 146 + }; 147 + 148 + static const struct dpu_merge_3d_cfg sc7280_merge_3d[] = { 149 + { 150 + .name = "merge_3d_1", .id = MERGE_3D_1, 151 + .base = 0x4f000, .len = 0x8, 146 152 }, 147 153 }; 148 154 ··· 255 247 .mixer = sc7280_lm, 256 248 .pingpong_count = ARRAY_SIZE(sc7280_pp), 257 249 .pingpong = sc7280_pp, 250 + .merge_3d_count = ARRAY_SIZE(sc7280_merge_3d), 251 + .merge_3d = sc7280_merge_3d, 258 252 .dsc_count = ARRAY_SIZE(sc7280_dsc), 259 253 .dsc = sc7280_dsc, 260 254 .wb_count = ARRAY_SIZE(sc7280_wb),