* [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT @ 2025-05-14 23:52 Jessica Zhang 2025-05-14 23:52 ` [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct Jessica Zhang ` (4 more replies) 0 siblings, 5 replies; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Currently, the DPU driver bases LM reservation off of the maximum supported width for the layer mixer and an arbitrary MAX_HDISPLAY_SPLIT. However, these limits are not hardware limits meaning that a single LM can support higher resolutions. Switch to basing LM reservation off of PINGPONG and DSC encoder hardware limits. --- Jessica Zhang (5): drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct drm/msm/dpu: Add max pingpong and dsc width to HW catalog drm/msm/dpu: Check mode against PINGPONG or DSC max width drm/msm/dpu: Filter writeback modes using writeback maxlinewidth drm/msm/dpu: Remove max_mixer_width from catalog .../drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 12 +++++- .../drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 3 +- .../drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 2 +- .../drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 3 +- .../drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 5 ++- .../drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 5 ++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 5 ++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 3 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 5 ++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 7 +++- .../drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 7 +++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 5 ++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 4 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 3 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 7 +++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 3 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 2 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 3 +- .../drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 2 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 2 +- .../gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 8 +++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 6 ++- .../drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 8 +++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 10 ++++- .../drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 10 ++++- .../gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 10 ++++- .../drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 10 ++++- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 46 ++++++++++++++++++---- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 4 -- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 13 ++++-- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 +---- 31 files changed, 173 insertions(+), 49 deletions(-) --- base-commit: 888f15dae780db7cea6ab1a3355151e4292038bf change-id: 20250401-max-mixer-width-9c3c02c48cb7 Best regards, -- Jessica Zhang <jessica.zhang@oss.qualcomm.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang @ 2025-05-14 23:52 ` Jessica Zhang 2025-05-15 0:32 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog Jessica Zhang ` (3 subsequent siblings) 4 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Drop the unused maxwidth field from the dpu_lm_sub_blks struct Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 4 ---- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 1 - 2 files changed, 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 64265ca4656a..65f3ebd86270 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -379,7 +379,6 @@ static const struct dpu_sspp_sub_blks dpu_dma_sblk = _DMA_SBLK(); /* MSM8998 */ static const struct dpu_lm_sub_blks msm8998_lm_sblk = { - .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 7, /* excluding base layer */ .blendstage_base = { /* offsets relative to mixer base */ 0x20, 0x50, 0x80, 0xb0, 0x230, @@ -390,7 +389,6 @@ static const struct dpu_lm_sub_blks msm8998_lm_sblk = { /* SDM845 */ static const struct dpu_lm_sub_blks sdm845_lm_sblk = { - .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 11, /* excluding base layer */ .blendstage_base = { /* offsets relative to mixer base */ 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, @@ -401,7 +399,6 @@ static const struct dpu_lm_sub_blks sdm845_lm_sblk = { /* SC7180 */ static const struct dpu_lm_sub_blks sc7180_lm_sblk = { - .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 7, /* excluding base layer */ .blendstage_base = { /* offsets relative to mixer base */ 0x20, 0x38, 0x50, 0x68, 0x80, 0x98, 0xb0 @@ -411,7 +408,6 @@ static const struct dpu_lm_sub_blks sc7180_lm_sblk = { /* QCM2290 */ static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { - .maxwidth = DEFAULT_DPU_LINE_WIDTH, .maxblendstages = 4, /* excluding base layer */ .blendstage_base = { /* offsets relative to mixer base */ 0x20, 0x38, 0x50, 0x68 diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h index 4cea19e1a203..5f1f3eae0f6f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -390,7 +390,6 @@ struct dpu_sspp_sub_blks { * @blendstage_base: Blend-stage register base offset */ struct dpu_lm_sub_blks { - u32 maxwidth; u32 maxblendstages; u32 blendstage_base[MAX_BLOCKS]; }; -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct 2025-05-14 23:52 ` [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct Jessica Zhang @ 2025-05-15 0:32 ` Dmitry Baryshkov 0 siblings, 0 replies; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-15 0:32 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Wed, May 14, 2025 at 04:52:29PM -0700, Jessica Zhang wrote: > Drop the unused maxwidth field from the dpu_lm_sub_blks struct > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 4 ---- > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 1 - > 2 files changed, 5 deletions(-) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang 2025-05-14 23:52 ` [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct Jessica Zhang @ 2025-05-14 23:52 ` Jessica Zhang 2025-05-15 0:21 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width Jessica Zhang ` (2 subsequent siblings) 4 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Add max_dsc_encoder_width to dpu_caps struct and max_linewidth to dpu_pingpong_cfg for all chipsets within the HW catalog. Note: The max supported PINGPONG width was 4096 but increased to 5120 after DPU 6.x. In addition, DPU 8.x+ increases the max supported width of PINGPONG_0 specifically to 8960. Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 11 +++++++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 1 + drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 4 ++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 4 ++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 4 ++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 4 ++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 6 ++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 6 ++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 4 ++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 3 +++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 6 ++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 + drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 2 ++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 + drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 + drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 7 +++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 5 +++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 7 +++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 9 +++++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 9 +++++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 9 +++++++++ drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 9 +++++++++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 10 ++++++++++ 28 files changed, 133 insertions(+) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h index 6ac97c378056..9db31591e27e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h @@ -9,6 +9,7 @@ static const struct dpu_caps sm8650_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -214,6 +215,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -221,6 +223,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -228,6 +231,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -235,6 +239,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -242,6 +247,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -249,6 +255,7 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -256,24 +263,28 @@ static const struct dpu_pingpong_cfg sm8650_pp[] = { }, { .name = "pingpong_cwb_0", .id = PINGPONG_CWB_0, .base = 0x66000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_cwb_1", .id = PINGPONG_CWB_1, .base = 0x66400, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_cwb_2", .id = PINGPONG_CWB_2, .base = 0x7e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_4, }, { .name = "pingpong_cwb_3", .id = PINGPONG_CWB_3, .base = 0x7e400, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_4, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h index 1f32807bb5e5..4ac89cadf328 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h @@ -101,6 +101,7 @@ static const struct dpu_pingpong_cfg msm8937_pp[] = { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, .features = PINGPONG_MSM8996_MASK, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12), @@ -108,6 +109,7 @@ static const struct dpu_pingpong_cfg msm8937_pp[] = { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, .features = PINGPONG_MSM8996_MASK, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h index 42131959ff22..dbd4129439a8 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h @@ -94,6 +94,7 @@ static const struct dpu_pingpong_cfg msm8917_pp[] = { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, .features = PINGPONG_MSM8996_MASK, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h index 2b4723a5c676..a93976f6167c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h @@ -101,6 +101,7 @@ static const struct dpu_pingpong_cfg msm8953_pp[] = { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, .features = PINGPONG_MSM8996_MASK, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12), @@ -108,6 +109,7 @@ static const struct dpu_pingpong_cfg msm8953_pp[] = { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, .features = PINGPONG_MSM8996_MASK, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h index 5cf19de71f06..e2e99504c715 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h @@ -181,6 +181,7 @@ static const struct dpu_pingpong_cfg msm8996_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_MSM8996_TE2_MASK, .sblk = &msm8996_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -188,6 +189,7 @@ static const struct dpu_pingpong_cfg msm8996_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_MSM8996_TE2_MASK, .sblk = &msm8996_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), @@ -195,6 +197,7 @@ static const struct dpu_pingpong_cfg msm8996_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_MSM8996_MASK, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), @@ -202,6 +205,7 @@ static const struct dpu_pingpong_cfg msm8996_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_MSM8996_MASK, .sblk = &msm8996_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 746474679ef5..1bdffe168fb1 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -170,6 +170,7 @@ static const struct dpu_pingpong_cfg msm8998_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -177,6 +178,7 @@ static const struct dpu_pingpong_cfg msm8998_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), @@ -184,6 +186,7 @@ static const struct dpu_pingpong_cfg msm8998_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), @@ -191,6 +194,7 @@ static const struct dpu_pingpong_cfg msm8998_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h index 4f2f68b07f20..03f46a652449 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h @@ -141,6 +141,7 @@ static const struct dpu_pingpong_cfg sdm660_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -148,6 +149,7 @@ static const struct dpu_pingpong_cfg sdm660_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), @@ -155,6 +157,7 @@ static const struct dpu_pingpong_cfg sdm660_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), @@ -162,6 +165,7 @@ static const struct dpu_pingpong_cfg sdm660_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h index c70bef025ac4..011e98e6e7db 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h @@ -115,6 +115,7 @@ static const struct dpu_pingpong_cfg sdm630_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -122,6 +123,7 @@ static const struct dpu_pingpong_cfg sdm630_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index ab7b4822ca63..152fa5ea12dd 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -194,6 +194,7 @@ static const struct dpu_pingpong_cfg sdm845_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -201,6 +202,7 @@ static const struct dpu_pingpong_cfg sdm845_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_TE2_MASK, .sblk = &sdm845_pp_sblk_te, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), @@ -208,6 +210,7 @@ static const struct dpu_pingpong_cfg sdm845_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), @@ -215,6 +218,7 @@ static const struct dpu_pingpong_cfg sdm845_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SDM845_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 979527d98fbc..7f0754e47c2e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -218,6 +218,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -225,6 +226,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -232,6 +234,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -239,6 +242,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -246,6 +250,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x72000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, @@ -253,6 +258,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x72800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index d76b8992a6c1..1a904b68950a 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -217,6 +217,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -224,6 +225,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -231,6 +233,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -238,6 +241,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -245,6 +249,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x72000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, @@ -252,6 +257,7 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x72800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h index 83db11339b29..7c65f77a2c43 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h @@ -164,6 +164,7 @@ static const struct dpu_pingpong_cfg sm7150_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -171,6 +172,7 @@ static const struct dpu_pingpong_cfg sm7150_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -178,6 +180,7 @@ static const struct dpu_pingpong_cfg sm7150_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -185,6 +188,7 @@ static const struct dpu_pingpong_cfg sm7150_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h index da11830d4407..f0539dd11dc8 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h @@ -145,18 +145,21 @@ static const struct dpu_pingpong_cfg sm6150_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h index d3d3a34d0b45..a357567ad597 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h @@ -126,6 +126,7 @@ static const struct dpu_pingpong_cfg sm6125_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .merge_3d = 0, .sblk = &sdm845_pp_sblk, @@ -133,6 +134,7 @@ static const struct dpu_pingpong_cfg sm6125_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_1_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .merge_3d = 0, .sblk = &sdm845_pp_sblk, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index 47e01c3c242f..c0bf1eba1eab 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -216,6 +216,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -223,6 +224,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_0, @@ -230,6 +232,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x71000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -237,6 +240,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x71800, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_1, @@ -244,6 +248,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x72000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, @@ -251,6 +256,7 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x72800, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = MERGE_3D_2, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h index 040c94c0bb66..d004e7ee71fb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h @@ -115,6 +115,7 @@ static const struct dpu_pingpong_cfg sc7180_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, @@ -122,6 +123,7 @@ static const struct dpu_pingpong_cfg sc7180_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h index 43f64a005f5a..b0659b55542f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h @@ -78,6 +78,7 @@ static const struct dpu_pingpong_cfg sm6115_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h index 397278ba999b..ae0196372f35 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h @@ -124,6 +124,7 @@ static struct dpu_pingpong_cfg sm6350_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, @@ -131,6 +132,7 @@ static struct dpu_pingpong_cfg sm6350_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x70800, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h index 3cbb2fe8aba2..d9bb18f11a49 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h @@ -78,6 +78,7 @@ static const struct dpu_pingpong_cfg qcm2290_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h index a06c8634d2d7..8893b39e2ca3 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h @@ -80,6 +80,7 @@ static const struct dpu_pingpong_cfg sm6375_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x70000, .len = 0xd4, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = PINGPONG_SM8150_MASK, .sblk = &sdm845_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h index 0c860e804cab..6ded8b0309d9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h @@ -9,6 +9,7 @@ static const struct dpu_caps sm8350_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -216,6 +217,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -223,6 +225,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -230,6 +233,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -237,6 +241,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -244,6 +249,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -251,6 +257,7 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h index e9625c48c567..e1512ff5945c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h @@ -9,6 +9,7 @@ static const struct dpu_caps sc7280_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0x7, .has_dim_layer = true, .has_idle_pc = true, @@ -126,6 +127,7 @@ static const struct dpu_pingpong_cfg sc7280_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = 0, @@ -133,6 +135,7 @@ static const struct dpu_pingpong_cfg sc7280_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = 0, @@ -140,6 +143,7 @@ static const struct dpu_pingpong_cfg sc7280_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = 0, @@ -147,6 +151,7 @@ static const struct dpu_pingpong_cfg sc7280_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = 0, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h index fcee1c3665f8..2a084ee071b9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h @@ -9,6 +9,7 @@ static const struct dpu_caps sc8280xp_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 11, .has_src_split = true, .has_dim_layer = true, @@ -216,6 +217,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -223,6 +225,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -230,6 +233,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -237,6 +241,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -244,6 +249,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -251,6 +257,7 @@ static const struct dpu_pingpong_cfg sc8280xp_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h index 19b2ee8bbd5f..2cb3966ee51f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h @@ -9,6 +9,7 @@ static const struct dpu_caps sm8450_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -217,6 +218,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -224,6 +226,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -231,6 +234,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -238,6 +242,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -245,6 +250,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -252,6 +258,7 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -259,12 +266,14 @@ static const struct dpu_pingpong_cfg sm8450_pp[] = { }, { .name = "pingpong_cwb_0", .id = PINGPONG_CWB_0, .base = 0x65800, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_cwb_1", .id = PINGPONG_CWB_1, .base = 0x65c00, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h index 4d96ce71746f..1135918e0a86 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h @@ -8,6 +8,7 @@ static const struct dpu_caps sa8775p_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -216,6 +217,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -223,6 +225,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -230,6 +233,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -237,6 +241,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -244,6 +249,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -251,6 +257,7 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -258,12 +265,14 @@ static const struct dpu_pingpong_cfg sa8775p_pp[] = { }, { .name = "pingpong_6", .id = PINGPONG_CWB_0, .base = 0x65800, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_7", .id = PINGPONG_CWB_1, .base = 0x65c00, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h index 24f988465bf6..0516e75a3a16 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h @@ -9,6 +9,7 @@ static const struct dpu_caps sm8550_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -213,6 +214,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -220,6 +222,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -227,6 +230,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -234,6 +238,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -241,6 +246,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -248,6 +254,7 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -255,12 +262,14 @@ static const struct dpu_pingpong_cfg sm8550_pp[] = { }, { .name = "pingpong_cwb_0", .id = PINGPONG_CWB_0, .base = 0x66000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_cwb_1", .id = PINGPONG_CWB_1, .base = 0x66400, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h index 6417baa84f82..23d044e10c75 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h @@ -8,6 +8,7 @@ static const struct dpu_caps x1e80100_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, + .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, @@ -213,6 +214,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { { .name = "pingpong_0", .id = PINGPONG_0, .base = 0x69000, .len = 0, + .max_linewidth = DPU_8_x_MAX_PINGPONG_0_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -220,6 +222,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_1", .id = PINGPONG_1, .base = 0x6a000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_0, @@ -227,6 +230,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_2", .id = PINGPONG_2, .base = 0x6b000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -234,6 +238,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_3", .id = PINGPONG_3, .base = 0x6c000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_1, @@ -241,6 +246,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_4", .id = PINGPONG_4, .base = 0x6d000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -248,6 +254,7 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_5", .id = PINGPONG_5, .base = 0x6e000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_2, @@ -255,12 +262,14 @@ static const struct dpu_pingpong_cfg x1e80100_pp[] = { }, { .name = "pingpong_cwb_0", .id = PINGPONG_CWB_0, .base = 0x66000, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, }, { .name = "pingpong_cwb_1", .id = PINGPONG_CWB_1, .base = 0x66400, .len = 0, + .max_linewidth = DPU_6_x_MAX_PINGPONG_WIDTH, .features = BIT(DPU_PINGPONG_DITHER), .sblk = &sc7280_pp_sblk, .merge_3d = MERGE_3D_3, diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h index 5f1f3eae0f6f..194780905d29 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -24,6 +24,12 @@ #define DPU_MAX_IMG_WIDTH 0x3fff #define DPU_MAX_IMG_HEIGHT 0x3fff +#define DPU_1_x_MAX_PINGPONG_WIDTH 4096 +#define DPU_6_x_MAX_PINGPONG_WIDTH 5120 +#define DPU_8_x_MAX_PINGPONG_0_WIDTH 8960 + +#define DEFAULT_DSC_ENCODER_MAX_WIDTH 2560 + #define CRTC_DUAL_MIXERS 2 #define MAX_XIN_COUNT 16 @@ -336,6 +342,7 @@ struct dpu_rotation_cfg { /** * struct dpu_caps - define DPU capabilities * @max_mixer_width max layer mixer line width support. + * @max_dsc_encoder_width max dsc encoder line width support * @max_mixer_blendstages max layer mixer blend stages or * supported z order * @has_src_split source split feature status @@ -349,6 +356,7 @@ struct dpu_rotation_cfg { */ struct dpu_caps { u32 max_mixer_width; + u32 max_dsc_encoder_width; u32 max_mixer_blendstages; bool has_src_split; bool has_dim_layer; @@ -530,6 +538,7 @@ struct dpu_dspp_cfg { * @id enum identifying this block * @base register offset of this block * @features bit mask identifying sub-blocks/features + * @max_linewidth max linewidth for PINGPONG * @intr_done: index for PINGPONG done interrupt * @intr_rdptr: index for PINGPONG readpointer done interrupt * @sblk sub-blocks information @@ -537,6 +546,7 @@ struct dpu_dspp_cfg { struct dpu_pingpong_cfg { DPU_HW_BLK_INFO; u32 merge_3d; + u32 max_linewidth; unsigned int intr_done; unsigned int intr_rdptr; const struct dpu_pingpong_sub_blks *sblk; -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog 2025-05-14 23:52 ` [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog Jessica Zhang @ 2025-05-15 0:21 ` Dmitry Baryshkov 2025-05-15 17:13 ` Jessica Zhang 0 siblings, 1 reply; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-15 0:21 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Wed, May 14, 2025 at 04:52:30PM -0700, Jessica Zhang wrote: > Add max_dsc_encoder_width to dpu_caps struct and max_linewidth to > dpu_pingpong_cfg for all chipsets within the HW catalog. > > Note: The max supported PINGPONG width was 4096 but increased to 5120 > after DPU 6.x. In addition, DPU 8.x+ increases the max supported width > of PINGPONG_0 specifically to 8960. > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 11 +++++++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 1 + > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 4 ++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 4 ++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 4 ++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 4 ++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 6 ++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 6 ++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 4 ++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 3 +++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 6 ++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 + > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 2 ++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 + > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 + > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 7 +++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 5 +++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 7 +++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 9 +++++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 9 +++++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 9 +++++++++ > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 9 +++++++++ > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 10 ++++++++++ This needs to be rebased on top of linux-next, otherwise you've missed dpu_9_1_sar2130p.h . -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog 2025-05-15 0:21 ` Dmitry Baryshkov @ 2025-05-15 17:13 ` Jessica Zhang 0 siblings, 0 replies; 16+ messages in thread From: Jessica Zhang @ 2025-05-15 17:13 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On 5/14/2025 5:21 PM, Dmitry Baryshkov wrote: > On Wed, May 14, 2025 at 04:52:30PM -0700, Jessica Zhang wrote: >> Add max_dsc_encoder_width to dpu_caps struct and max_linewidth to >> dpu_pingpong_cfg for all chipsets within the HW catalog. >> >> Note: The max supported PINGPONG width was 4096 but increased to 5120 >> after DPU 6.x. In addition, DPU 8.x+ increases the max supported width >> of PINGPONG_0 specifically to 8960. >> >> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> >> --- >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 11 +++++++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 1 + >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 4 ++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 4 ++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 4 ++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 4 ++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 6 ++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 6 ++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 4 ++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 3 +++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 6 ++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 + >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 2 ++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 + >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 + >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 7 +++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 5 +++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 7 +++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 9 +++++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 9 +++++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 9 +++++++++ >> drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 9 +++++++++ >> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 10 ++++++++++ > > This needs to be rebased on top of linux-next, otherwise you've missed > dpu_9_1_sar2130p.h . Ah yes, forgot to update my local working branch. Thanks, Jessica Zhang > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang 2025-05-14 23:52 ` [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct Jessica Zhang 2025-05-14 23:52 ` [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog Jessica Zhang @ 2025-05-14 23:52 ` Jessica Zhang 2025-05-15 0:28 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth Jessica Zhang 2025-05-14 23:52 ` [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog Jessica Zhang 4 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Validate requested mode and topology based on the PINGPONG or DSC encoder max width. In addition, drop MAX_HDISPLAY_SPLIT and base LM reservation off of PINGPONG or DSC encoder max width As noted in the patch, while DPU 8.x+ supports a max linewidth of 8960 for PINGPONG_0, there is some additional logic that needs to be added to the resource manager to specifically try and reserve PINGPONG_0 for modes that are greater than 5k. Since this is out of the scope of this series, add a helper that will get the overall minimum PINGPONG max linewidth for a given chipset. Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 46 +++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 0714936d8835..6131d071b051 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -723,6 +723,31 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc) _dpu_crtc_complete_flip(crtc); } +static int msm_display_get_max_pingpong_width(struct dpu_kms *dpu_kms) +{ + const struct dpu_pingpong_cfg *pingpong; + u32 max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth; + + /* + * Find the smallest overall PINGPONG max_linewidth in the catalog since + * max_linewidth can differ between PINGPONGs even within the same + * chipset. + * + * Note: While, for DPU 8.x+, PINGPONG_0 can technically support up to + * 8k resolutions, this requires reworking the RM to try to reserve + * PINGPONG_0 for modes greater than 5k. + * + * Once this additional logic is implemented, we can drop this helper + * and use the reserved PINGPONG's max_linewidth + */ + for (int i = 1; i < dpu_kms->catalog->pingpong_count; i++) { + pingpong = &dpu_kms->catalog->pingpong[i]; + max_pingpong_width = min(max_pingpong_width, pingpong->max_linewidth); + } + + return max_pingpong_width; +} + static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, struct drm_crtc_state *state) { @@ -730,13 +755,14 @@ static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, struct drm_display_mode *adj_mode = &state->adjusted_mode; u32 crtc_split_width = adj_mode->hdisplay / cstate->num_mixers; struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc); + int max_pingpong_width = msm_display_get_max_pingpong_width(dpu_kms); int i; /* if we cannot merge 2 LMs (no 3d mux) better to fail earlier * before even checking the width after the split */ if (!dpu_kms->catalog->caps->has_3d_merge && - adj_mode->hdisplay > dpu_kms->catalog->caps->max_mixer_width) + adj_mode->hdisplay > max_pingpong_width) return -E2BIG; for (i = 0; i < cstate->num_mixers; i++) { @@ -748,7 +774,7 @@ static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, trace_dpu_crtc_setup_lm_bounds(DRMID(crtc), i, r); - if (drm_rect_width(r) > dpu_kms->catalog->caps->max_mixer_width) + if (drm_rect_width(r) > max_pingpong_width) return -E2BIG; } @@ -1279,7 +1305,6 @@ static int dpu_crtc_reassign_planes(struct drm_crtc *crtc, struct drm_crtc_state } #define MAX_CHANNELS_PER_CRTC 2 -#define MAX_HDISPLAY_SPLIT 1080 static struct msm_display_topology dpu_crtc_get_topology( struct drm_crtc *crtc, @@ -1289,12 +1314,18 @@ static struct msm_display_topology dpu_crtc_get_topology( struct drm_display_mode *mode = &crtc_state->adjusted_mode; struct msm_display_topology topology = {0}; struct drm_encoder *drm_enc; + const struct dpu_caps *caps = dpu_kms->catalog->caps; + u32 max_hdisplay_split; drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc_state->encoder_mask) dpu_encoder_update_topology(drm_enc, &topology, crtc_state->state, &crtc_state->adjusted_mode); topology.cwb_enabled = drm_crtc_in_clone_mode(crtc_state); + max_hdisplay_split = msm_display_get_max_pingpong_width(dpu_kms); + + if (topology.num_dsc > 0 && caps->max_dsc_encoder_width > 0) + max_hdisplay_split = min(max_hdisplay_split, caps->max_dsc_encoder_width); /* * Datapath topology selection @@ -1315,7 +1346,7 @@ static struct msm_display_topology dpu_crtc_get_topology( * count both the WB and real-time phys encoders. * * For non-DSC CWB usecases, have the num_lm be decided by the - * (mode->hdisplay > MAX_HDISPLAY_SPLIT) check. + * (mode->hdisplay > max_hdisplay_split) check. */ if (topology.num_intf == 2 && !topology.cwb_enabled) @@ -1323,7 +1354,7 @@ static struct msm_display_topology dpu_crtc_get_topology( else if (topology.num_dsc == 2) topology.num_lm = 2; else if (dpu_kms->catalog->caps->has_3d_merge) - topology.num_lm = (mode->hdisplay > MAX_HDISPLAY_SPLIT) ? 2 : 1; + topology.num_lm = (mode->hdisplay > max_hdisplay_split) ? 2 : 1; else topology.num_lm = 1; @@ -1501,18 +1532,19 @@ static enum drm_mode_status dpu_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode) { struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc); + int max_pingpong_width = msm_display_get_max_pingpong_width(dpu_kms); /* if there is no 3d_mux block we cannot merge LMs so we cannot * split the large layer into 2 LMs, filter out such modes */ if (!dpu_kms->catalog->caps->has_3d_merge && - mode->hdisplay > dpu_kms->catalog->caps->max_mixer_width) + mode->hdisplay > max_pingpong_width) return MODE_BAD_HVALUE; /* * max crtc width is equal to the max mixer width * 2 and max height is 4K */ return drm_mode_validate_size(mode, - 2 * dpu_kms->catalog->caps->max_mixer_width, + 2 * max_pingpong_width, 4096); } -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width 2025-05-14 23:52 ` [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width Jessica Zhang @ 2025-05-15 0:28 ` Dmitry Baryshkov 2025-05-16 0:39 ` Jessica Zhang 0 siblings, 1 reply; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-15 0:28 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Wed, May 14, 2025 at 04:52:31PM -0700, Jessica Zhang wrote: > Validate requested mode and topology based on the PINGPONG or DSC encoder > max width. In addition, drop MAX_HDISPLAY_SPLIT and base LM reservation > off of PINGPONG or DSC encoder max width Separate commit for num_lm, please. > > As noted in the patch, while DPU 8.x+ supports a max linewidth of 8960 > for PINGPONG_0, there is some additional logic that needs to be added to > the resource manager to specifically try and reserve PINGPONG_0 for > modes that are greater than 5k. > > Since this is out of the scope of this series, add a helper that will > get the overall minimum PINGPONG max linewidth for a given chipset. > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 46 +++++++++++++++++++++++++++----- > 1 file changed, 39 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > index 0714936d8835..6131d071b051 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > @@ -723,6 +723,31 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc) > _dpu_crtc_complete_flip(crtc); > } > > +static int msm_display_get_max_pingpong_width(struct dpu_kms *dpu_kms) > +{ > + const struct dpu_pingpong_cfg *pingpong; > + u32 max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth; > + > + /* > + * Find the smallest overall PINGPONG max_linewidth in the catalog since > + * max_linewidth can differ between PINGPONGs even within the same > + * chipset. > + * > + * Note: While, for DPU 8.x+, PINGPONG_0 can technically support up to > + * 8k resolutions, this requires reworking the RM to try to reserve > + * PINGPONG_0 for modes greater than 5k. > + * > + * Once this additional logic is implemented, we can drop this helper > + * and use the reserved PINGPONG's max_linewidth > + */ > + for (int i = 1; i < dpu_kms->catalog->pingpong_count; i++) { > + pingpong = &dpu_kms->catalog->pingpong[i]; > + max_pingpong_width = min(max_pingpong_width, pingpong->max_linewidth); > + } Since we are skipping PINGPONG_0, wouldn't it be enough to return max_linewidth of PP_1 ? I think, it would be easier to follow .max_dsc_encoder_width and store .max_pingpong_linewidth in dpu_caps (and later add special .max_pp0_linewidth). > + > + return max_pingpong_width; > +} > + > static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, > struct drm_crtc_state *state) > { -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width 2025-05-15 0:28 ` Dmitry Baryshkov @ 2025-05-16 0:39 ` Jessica Zhang 2025-05-16 16:19 ` Dmitry Baryshkov 0 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-16 0:39 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On 5/14/2025 5:28 PM, Dmitry Baryshkov wrote: > On Wed, May 14, 2025 at 04:52:31PM -0700, Jessica Zhang wrote: >> Validate requested mode and topology based on the PINGPONG or DSC encoder >> max width. In addition, drop MAX_HDISPLAY_SPLIT and base LM reservation >> off of PINGPONG or DSC encoder max width > > Separate commit for num_lm, please. Hi Dmitry, Ack. > >> >> As noted in the patch, while DPU 8.x+ supports a max linewidth of 8960 >> for PINGPONG_0, there is some additional logic that needs to be added to >> the resource manager to specifically try and reserve PINGPONG_0 for >> modes that are greater than 5k. >> >> Since this is out of the scope of this series, add a helper that will >> get the overall minimum PINGPONG max linewidth for a given chipset. >> >> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> >> --- >> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 46 +++++++++++++++++++++++++++----- >> 1 file changed, 39 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c >> index 0714936d8835..6131d071b051 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c >> @@ -723,6 +723,31 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc) >> _dpu_crtc_complete_flip(crtc); >> } >> >> +static int msm_display_get_max_pingpong_width(struct dpu_kms *dpu_kms) >> +{ >> + const struct dpu_pingpong_cfg *pingpong; >> + u32 max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth; >> + >> + /* >> + * Find the smallest overall PINGPONG max_linewidth in the catalog since >> + * max_linewidth can differ between PINGPONGs even within the same >> + * chipset. >> + * >> + * Note: While, for DPU 8.x+, PINGPONG_0 can technically support up to >> + * 8k resolutions, this requires reworking the RM to try to reserve >> + * PINGPONG_0 for modes greater than 5k. >> + * >> + * Once this additional logic is implemented, we can drop this helper >> + * and use the reserved PINGPONG's max_linewidth >> + */ >> + for (int i = 1; i < dpu_kms->catalog->pingpong_count; i++) { >> + pingpong = &dpu_kms->catalog->pingpong[i]; >> + max_pingpong_width = min(max_pingpong_width, pingpong->max_linewidth); >> + } > > Since we are skipping PINGPONG_0, wouldn't it be enough to return > max_linewidth of PP_1 ? I don't think we're skipping PINGPONG_0 here since `u32 max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth;` at the top of the function. > > I think, it would be easier to follow .max_dsc_encoder_width and store > .max_pingpong_linewidth in dpu_caps (and later add special > .max_pp0_linewidth). Ack. I think my only concern for this is that max_pp0_linewidth won't be set for all chipsets. But if you're fine with that I'll go ahead and make this change. Thanks, Jessica Zhang > >> + >> + return max_pingpong_width; >> +} >> + >> static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, >> struct drm_crtc_state *state) >> { > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width 2025-05-16 0:39 ` Jessica Zhang @ 2025-05-16 16:19 ` Dmitry Baryshkov 0 siblings, 0 replies; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-16 16:19 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Fri, 16 May 2025 at 03:39, Jessica Zhang <jessica.zhang@oss.qualcomm.com> wrote: > > > > On 5/14/2025 5:28 PM, Dmitry Baryshkov wrote: > > On Wed, May 14, 2025 at 04:52:31PM -0700, Jessica Zhang wrote: > >> Validate requested mode and topology based on the PINGPONG or DSC encoder > >> max width. In addition, drop MAX_HDISPLAY_SPLIT and base LM reservation > >> off of PINGPONG or DSC encoder max width > > > > Separate commit for num_lm, please. > > Hi Dmitry, > > Ack. > > > > >> > >> As noted in the patch, while DPU 8.x+ supports a max linewidth of 8960 > >> for PINGPONG_0, there is some additional logic that needs to be added to > >> the resource manager to specifically try and reserve PINGPONG_0 for > >> modes that are greater than 5k. > >> > >> Since this is out of the scope of this series, add a helper that will > >> get the overall minimum PINGPONG max linewidth for a given chipset. > >> > >> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > >> --- > >> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 46 +++++++++++++++++++++++++++----- > >> 1 file changed, 39 insertions(+), 7 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > >> index 0714936d8835..6131d071b051 100644 > >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > >> @@ -723,6 +723,31 @@ void dpu_crtc_complete_commit(struct drm_crtc *crtc) > >> _dpu_crtc_complete_flip(crtc); > >> } > >> > >> +static int msm_display_get_max_pingpong_width(struct dpu_kms *dpu_kms) > >> +{ > >> + const struct dpu_pingpong_cfg *pingpong; > >> + u32 max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth; > >> + > >> + /* > >> + * Find the smallest overall PINGPONG max_linewidth in the catalog since > >> + * max_linewidth can differ between PINGPONGs even within the same > >> + * chipset. > >> + * > >> + * Note: While, for DPU 8.x+, PINGPONG_0 can technically support up to > >> + * 8k resolutions, this requires reworking the RM to try to reserve > >> + * PINGPONG_0 for modes greater than 5k. > >> + * > >> + * Once this additional logic is implemented, we can drop this helper > >> + * and use the reserved PINGPONG's max_linewidth > >> + */ > >> + for (int i = 1; i < dpu_kms->catalog->pingpong_count; i++) { > >> + pingpong = &dpu_kms->catalog->pingpong[i]; > >> + max_pingpong_width = min(max_pingpong_width, pingpong->max_linewidth); > >> + } > > > > Since we are skipping PINGPONG_0, wouldn't it be enough to return > > max_linewidth of PP_1 ? > > I don't think we're skipping PINGPONG_0 here since `u32 > max_pingpong_width = dpu_kms->catalog->pingpong[0].max_linewidth;` at > the top of the function. > > > > > I think, it would be easier to follow .max_dsc_encoder_width and store > > .max_pingpong_linewidth in dpu_caps (and later add special > > .max_pp0_linewidth). > > Ack. I think my only concern for this is that max_pp0_linewidth won't be > set for all chipsets. But if you're fine with that I'll go ahead and > make this change. You can set it for all chipsets having PINGPONG_0. It might be the same as .max_pingpong_linewidth, but that's not a problem. > > Thanks, > > Jessica Zhang > > > > >> + > >> + return max_pingpong_width; > >> +} > >> + > >> static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, > >> struct drm_crtc_state *state) > >> { > > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang ` (2 preceding siblings ...) 2025-05-14 23:52 ` [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width Jessica Zhang @ 2025-05-14 23:52 ` Jessica Zhang 2025-05-15 0:17 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog Jessica Zhang 4 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Since the max mixer width is not a strict hardware limit, use the actual hardware limit (the writeback maxlinewidth) to filter modes. Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> --- drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c index 8ff496082902..0a198896f656 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c @@ -14,14 +14,7 @@ static int dpu_wb_conn_get_modes(struct drm_connector *connector) struct msm_drm_private *priv = dev->dev_private; struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms); - /* - * We should ideally be limiting the modes only to the maxlinewidth but - * on some chipsets this will allow even 4k modes to be added which will - * fail the per SSPP bandwidth checks. So, till we have dual-SSPP support - * and source split support added lets limit the modes based on max_mixer_width - * as 4K modes can then be supported. - */ - return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_mixer_width, + return drm_add_modes_noedid(connector, dpu_kms->catalog->wb->maxlinewidth, dev->mode_config.max_height); } -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth 2025-05-14 23:52 ` [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth Jessica Zhang @ 2025-05-15 0:17 ` Dmitry Baryshkov 2025-05-16 0:48 ` Jessica Zhang 0 siblings, 1 reply; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-15 0:17 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Thu, 15 May 2025 at 02:52, Jessica Zhang <jessica.zhang@oss.qualcomm.com> wrote: > > Since the max mixer width is not a strict hardware limit, use the actual Is it? What is the actual max width that the mixer can support? > hardware limit (the writeback maxlinewidth) to filter modes. > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > index 8ff496082902..0a198896f656 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > @@ -14,14 +14,7 @@ static int dpu_wb_conn_get_modes(struct drm_connector *connector) > struct msm_drm_private *priv = dev->dev_private; > struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms); > > - /* > - * We should ideally be limiting the modes only to the maxlinewidth but > - * on some chipsets this will allow even 4k modes to be added which will > - * fail the per SSPP bandwidth checks. So, till we have dual-SSPP support > - * and source split support added lets limit the modes based on max_mixer_width > - * as 4K modes can then be supported. > - */ > - return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_mixer_width, > + return drm_add_modes_noedid(connector, dpu_kms->catalog->wb->maxlinewidth, > dev->mode_config.max_height); > } > > > -- > 2.49.0 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth 2025-05-15 0:17 ` Dmitry Baryshkov @ 2025-05-16 0:48 ` Jessica Zhang 2025-05-16 21:40 ` Dmitry Baryshkov 0 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-16 0:48 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On 5/14/2025 5:17 PM, Dmitry Baryshkov wrote: > On Thu, 15 May 2025 at 02:52, Jessica Zhang > <jessica.zhang@oss.qualcomm.com> wrote: >> >> Since the max mixer width is not a strict hardware limit, use the actual > > Is it? What is the actual max width that the mixer can support? Hi Dmitry, By hardware limit, I mean restrictions based on the size of buffers within the hardware block itself. PINGPONG, DSC encoder, and WB blocks all have buffers, so they do have a max supported width based on the size of their hardware buffers. On the other hand, LM doesn't so it isn't necessarily restricted by a max width. I can clarify this in the commit message and cover letter. Thanks, Jessica Zhang > >> hardware limit (the writeback maxlinewidth) to filter modes. >> >> Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> >> --- >> drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 +-------- >> 1 file changed, 1 insertion(+), 8 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c >> index 8ff496082902..0a198896f656 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c >> @@ -14,14 +14,7 @@ static int dpu_wb_conn_get_modes(struct drm_connector *connector) >> struct msm_drm_private *priv = dev->dev_private; >> struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms); >> >> - /* >> - * We should ideally be limiting the modes only to the maxlinewidth but >> - * on some chipsets this will allow even 4k modes to be added which will >> - * fail the per SSPP bandwidth checks. So, till we have dual-SSPP support >> - * and source split support added lets limit the modes based on max_mixer_width >> - * as 4K modes can then be supported. >> - */ >> - return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_mixer_width, >> + return drm_add_modes_noedid(connector, dpu_kms->catalog->wb->maxlinewidth, >> dev->mode_config.max_height); >> } >> >> >> -- >> 2.49.0 >> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth 2025-05-16 0:48 ` Jessica Zhang @ 2025-05-16 21:40 ` Dmitry Baryshkov 0 siblings, 0 replies; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-16 21:40 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Thu, May 15, 2025 at 05:48:09PM -0700, Jessica Zhang wrote: > > > On 5/14/2025 5:17 PM, Dmitry Baryshkov wrote: > > On Thu, 15 May 2025 at 02:52, Jessica Zhang > > <jessica.zhang@oss.qualcomm.com> wrote: > > > > > > Since the max mixer width is not a strict hardware limit, use the actual > > > > Is it? What is the actual max width that the mixer can support? > > Hi Dmitry, > > By hardware limit, I mean restrictions based on the size of buffers within > the hardware block itself. > > PINGPONG, DSC encoder, and WB blocks all have buffers, so they do have a max > supported width based on the size of their hardware buffers. On the other > hand, LM doesn't so it isn't necessarily restricted by a max width. > > I can clarify this in the commit message and cover letter. Yes, please. The text above is perfect for the commit message. > > Thanks, > > Jessica Zhang > > > > > > hardware limit (the writeback maxlinewidth) to filter modes. > > > > > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > > > --- > > > drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 9 +-------- > > > 1 file changed, 1 insertion(+), 8 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > > > index 8ff496082902..0a198896f656 100644 > > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c > > > @@ -14,14 +14,7 @@ static int dpu_wb_conn_get_modes(struct drm_connector *connector) > > > struct msm_drm_private *priv = dev->dev_private; > > > struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms); > > > > > > - /* > > > - * We should ideally be limiting the modes only to the maxlinewidth but > > > - * on some chipsets this will allow even 4k modes to be added which will > > > - * fail the per SSPP bandwidth checks. So, till we have dual-SSPP support > > > - * and source split support added lets limit the modes based on max_mixer_width > > > - * as 4K modes can then be supported. > > > - */ > > > - return drm_add_modes_noedid(connector, dpu_kms->catalog->caps->max_mixer_width, > > > + return drm_add_modes_noedid(connector, dpu_kms->catalog->wb->maxlinewidth, > > > dev->mode_config.max_height); > > > } > > > > > > > > > -- > > > 2.49.0 > > > > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang ` (3 preceding siblings ...) 2025-05-14 23:52 ` [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth Jessica Zhang @ 2025-05-14 23:52 ` Jessica Zhang 2025-05-15 0:32 ` Dmitry Baryshkov 4 siblings, 1 reply; 16+ messages in thread From: Jessica Zhang @ 2025-05-14 23:52 UTC (permalink / raw) To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar Cc: Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel, Jessica Zhang Remove the now-unused max_mixer_width field from the HW catalog Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 1 - drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 2 -- 28 files changed, 29 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h index 9db31591e27e..2f0f4cf07338 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h @@ -8,7 +8,6 @@ #define _DPU_10_0_SM8650_H static const struct dpu_caps sm8650_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h index 4ac89cadf328..6c1bfd6b6ac9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h @@ -7,7 +7,6 @@ #define _DPU_1_14_MSM8937_H static const struct dpu_caps msm8937_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .max_linewidth = DEFAULT_DPU_LINE_WIDTH, .pixel_ram_size = 40 * 1024, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h index dbd4129439a8..c00d45b8fb6f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h @@ -7,7 +7,6 @@ #define _DPU_1_14_MSM8917_H static const struct dpu_caps msm8917_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .max_linewidth = DEFAULT_DPU_LINE_WIDTH, .pixel_ram_size = 16 * 1024, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h index a93976f6167c..5c1383b31691 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h @@ -7,7 +7,6 @@ #define _DPU_1_16_MSM8953_H static const struct dpu_caps msm8953_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .max_linewidth = DEFAULT_DPU_LINE_WIDTH, .pixel_ram_size = 40 * 1024, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h index e2e99504c715..5dcd1f81a4c5 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h @@ -9,7 +9,6 @@ #define _DPU_1_7_MSM8996_H static const struct dpu_caps msm8996_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x7, .has_src_split = true, .max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 1bdffe168fb1..a283b4107f8a 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -8,7 +8,6 @@ #define _DPU_3_0_MSM8998_H static const struct dpu_caps msm8998_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x7, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h index 03f46a652449..0c8362befe62 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h @@ -7,7 +7,6 @@ #define _DPU_3_2_SDM660_H static const struct dpu_caps sdm660_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x7, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h index 011e98e6e7db..49b9bd52bf41 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h @@ -7,7 +7,6 @@ #define _DPU_3_3_SDM630_H static const struct dpu_caps sdm630_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x7, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 152fa5ea12dd..e35fbe0eb1db 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -8,7 +8,6 @@ #define _DPU_4_0_SDM845_H static const struct dpu_caps sdm845_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 7f0754e47c2e..b55cc140aa88 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -8,7 +8,6 @@ #define _DPU_5_0_SM8150_H static const struct dpu_caps sm8150_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index 1a904b68950a..22bfd755d214 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -8,7 +8,6 @@ #define _DPU_5_1_SC8180X_H static const struct dpu_caps sc8180x_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h index 7c65f77a2c43..6ca54f2401d6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h @@ -8,7 +8,6 @@ #define _DPU_5_2_SM7150_H static const struct dpu_caps sm7150_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h index f0539dd11dc8..2f21b01393b6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h @@ -7,7 +7,6 @@ #define _DPU_5_3_SM6150_H static const struct dpu_caps sm6150_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x9, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h index a357567ad597..e5c5945a0385 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h @@ -9,7 +9,6 @@ #define _DPU_5_4_SM6125_H static const struct dpu_caps sm6125_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x6, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index c0bf1eba1eab..ba2b5dda1054 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -8,7 +8,6 @@ #define _DPU_6_0_SM8250_H static const struct dpu_caps sm8250_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h index d004e7ee71fb..43c7f6794cb5 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h @@ -8,7 +8,6 @@ #define _DPU_6_2_SC7180_H static const struct dpu_caps sc7180_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x9, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h index b0659b55542f..7c2be386fc73 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h @@ -8,7 +8,6 @@ #define _DPU_6_3_SM6115_H static const struct dpu_caps sm6115_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h index ae0196372f35..6c4531be116f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h @@ -9,7 +9,6 @@ #define _DPU_6_4_SM6350_H static const struct dpu_caps sm6350_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0x7, .has_src_split = true, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h index d9bb18f11a49..b5f78064f761 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h @@ -8,7 +8,6 @@ #define _DPU_6_5_QCM2290_H static const struct dpu_caps qcm2290_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h index 8893b39e2ca3..0564f108db22 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h @@ -9,7 +9,6 @@ #define _DPU_6_9_SM6375_H static const struct dpu_caps sm6375_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_LINE_WIDTH, .max_mixer_blendstages = 0x4, .has_dim_layer = true, .has_idle_pc = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h index 6ded8b0309d9..31517c894a13 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h @@ -8,7 +8,6 @@ #define _DPU_7_0_SM8350_H static const struct dpu_caps sm8350_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h index e1512ff5945c..9c5bc570b754 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h @@ -8,7 +8,6 @@ #define _DPU_7_2_SC7280_H static const struct dpu_caps sc7280_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0x7, .has_dim_layer = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h index 2a084ee071b9..f2fbff348d16 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h @@ -8,7 +8,6 @@ #define _DPU_8_0_SC8280XP_H static const struct dpu_caps sc8280xp_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 11, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h index 2cb3966ee51f..5e9cb02602ae 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h @@ -8,7 +8,6 @@ #define _DPU_8_1_SM8450_H static const struct dpu_caps sm8450_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h index 1135918e0a86..e3b332c313b3 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h @@ -7,7 +7,6 @@ #define _DPU_8_4_SA8775P_H static const struct dpu_caps sa8775p_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h index 0516e75a3a16..a27a50da28d9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h @@ -8,7 +8,6 @@ #define _DPU_9_0_SM8550_H static const struct dpu_caps sm8550_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h index 23d044e10c75..7d5b94408e69 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h @@ -7,7 +7,6 @@ #define _DPU_9_2_X1E80100_H static const struct dpu_caps x1e80100_dpu_caps = { - .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_dsc_encoder_width = DEFAULT_DSC_ENCODER_MAX_WIDTH, .max_mixer_blendstages = 0xb, .has_src_split = true, diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h index 194780905d29..f0534c0cd905 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -341,7 +341,6 @@ struct dpu_rotation_cfg { /** * struct dpu_caps - define DPU capabilities - * @max_mixer_width max layer mixer line width support. * @max_dsc_encoder_width max dsc encoder line width support * @max_mixer_blendstages max layer mixer blend stages or * supported z order @@ -355,7 +354,6 @@ struct dpu_rotation_cfg { * @max_vdeci_exp max vertical decimation supported (max is 2^value) */ struct dpu_caps { - u32 max_mixer_width; u32 max_dsc_encoder_width; u32 max_mixer_blendstages; bool has_src_split; -- 2.49.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog 2025-05-14 23:52 ` [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog Jessica Zhang @ 2025-05-15 0:32 ` Dmitry Baryshkov 0 siblings, 0 replies; 16+ messages in thread From: Dmitry Baryshkov @ 2025-05-15 0:32 UTC (permalink / raw) To: Jessica Zhang Cc: Rob Clark, Sean Paul, Marijn Suijten, David Airlie, Simona Vetter, Abhinav Kumar, Abhinav Kumar, linux-arm-msm, dri-devel, freedreno, linux-kernel On Wed, May 14, 2025 at 04:52:33PM -0700, Jessica Zhang wrote: > Remove the now-unused max_mixer_width field from the HW catalog > > Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_10_0_sm8650.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_14_msm8937.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_15_msm8917.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_16_msm8953.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_1_7_msm8996.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_2_sm7150.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_3_sm6150.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_4_sm6125.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 1 - > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 2 -- > 28 files changed, 29 deletions(-) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2025-05-16 21:40 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-14 23:52 [PATCH 0/5] drm/msm/dpu: Drop max_mixer_width and MAX_HDISPLAY_SPLIT Jessica Zhang 2025-05-14 23:52 ` [PATCH 1/5] drm/msm/dpu: Drop maxwidth from dpu_lm_sub_blks struct Jessica Zhang 2025-05-15 0:32 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 2/5] drm/msm/dpu: Add max pingpong and dsc width to HW catalog Jessica Zhang 2025-05-15 0:21 ` Dmitry Baryshkov 2025-05-15 17:13 ` Jessica Zhang 2025-05-14 23:52 ` [PATCH 3/5] drm/msm/dpu: Check mode against PINGPONG or DSC max width Jessica Zhang 2025-05-15 0:28 ` Dmitry Baryshkov 2025-05-16 0:39 ` Jessica Zhang 2025-05-16 16:19 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 4/5] drm/msm/dpu: Filter writeback modes using writeback maxlinewidth Jessica Zhang 2025-05-15 0:17 ` Dmitry Baryshkov 2025-05-16 0:48 ` Jessica Zhang 2025-05-16 21:40 ` Dmitry Baryshkov 2025-05-14 23:52 ` [PATCH 5/5] drm/msm/dpu: Remove max_mixer_width from catalog Jessica Zhang 2025-05-15 0:32 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).