* [PATCH v3 0/3] drm/msm: drop DPU 3.x support from the MDP5 driver
@ 2025-12-24 15:42 Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 1/3] drm/msm/dpu: drop intr_start from DPU 3.x catalog files Dmitry Baryshkov
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2025-12-24 15:42 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, Alexey Minnekhanov, David Airlie,
Simona Vetter, Alexey Minnekhanov
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel
Fix commands pannels support on DPU 3.x platforms and drop support for
those platforms (MSM8998, SDM660 / SDM636, SDM630) from the MDP5 driver.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
Changes in v3:
- Fixed commit message (Marijn)
- Reordered CTL_START checks to be more logical (Marijn)
- Link to v2: https://lore.kernel.org/r/20251218-mdp5-drop-dpu3-v2-0-11299f1999d2@oss.qualcomm.com
Changes in v2:
- Fixed CTL_START interrupt handling on DPU 3.x
- Link to v1: https://lore.kernel.org/r/20251211-mdp5-drop-dpu3-v1-1-0a0186d92757@oss.qualcomm.com
---
Dmitry Baryshkov (3):
drm/msm/dpu: drop intr_start from DPU 3.x catalog files
drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x
drm/msm/mdp5: drop support for MSM8998, SDM630 and SDM660
.../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 | 5 -
.../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 3 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 314 ---------------------
drivers/gpu/drm/msm/msm_drv.c | 16 +-
6 files changed, 15 insertions(+), 333 deletions(-)
---
base-commit: 4ba14a6add891fe9b2564e3049b7447de3256399
change-id: 20250926-mdp5-drop-dpu3-38bc04d44103
Best regards,
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 1/3] drm/msm/dpu: drop intr_start from DPU 3.x catalog files
2025-12-24 15:42 [PATCH v3 0/3] drm/msm: drop DPU 3.x support from the MDP5 driver Dmitry Baryshkov
@ 2025-12-24 15:42 ` Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 2/3] drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 3/3] drm/msm/mdp5: drop support for MSM8998, SDM630 and SDM660 Dmitry Baryshkov
2 siblings, 0 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2025-12-24 15:42 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, Alexey Minnekhanov, David Airlie,
Simona Vetter, Alexey Minnekhanov
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel
DPU 3.x don't have separate intr_start interrupt, drop it from catalog
files.
Fixes: 94391a14fc27 ("drm/msm/dpu1: Add MSM8998 to hw catalog")
Fixes: 7204df5e7e68 ("drm/msm/dpu: add support for SDM660 and SDM630 platforms")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 5 -----
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_2_sdm660.h | 5 -----
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_3_sdm630.h | 5 -----
3 files changed, 15 deletions(-)
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 f91220496082..b1b03d8b30fa 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
@@ -42,24 +42,19 @@ static const struct dpu_ctl_cfg msm8998_ctl[] = {
.name = "ctl_0", .id = CTL_0,
.base = 0x1000, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
}, {
.name = "ctl_1", .id = CTL_1,
.base = 0x1200, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
}, {
.name = "ctl_2", .id = CTL_2,
.base = 0x1400, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
}, {
.name = "ctl_3", .id = CTL_3,
.base = 0x1600, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
}, {
.name = "ctl_4", .id = CTL_4,
.base = 0x1800, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
},
};
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 8f9a097147c0..64df4e80ea43 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
@@ -37,24 +37,19 @@ static const struct dpu_ctl_cfg sdm660_ctl[] = {
.name = "ctl_0", .id = CTL_0,
.base = 0x1000, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
}, {
.name = "ctl_1", .id = CTL_1,
.base = 0x1200, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
}, {
.name = "ctl_2", .id = CTL_2,
.base = 0x1400, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
}, {
.name = "ctl_3", .id = CTL_3,
.base = 0x1600, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
}, {
.name = "ctl_4", .id = CTL_4,
.base = 0x1800, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
},
};
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 0ad18bd273ff..b409af899918 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
@@ -36,24 +36,19 @@ static const struct dpu_ctl_cfg sdm630_ctl[] = {
.name = "ctl_0", .id = CTL_0,
.base = 0x1000, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9),
}, {
.name = "ctl_1", .id = CTL_1,
.base = 0x1200, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10),
}, {
.name = "ctl_2", .id = CTL_2,
.base = 0x1400, .len = 0x94,
.features = BIT(DPU_CTL_SPLIT_DISPLAY),
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11),
}, {
.name = "ctl_3", .id = CTL_3,
.base = 0x1600, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12),
}, {
.name = "ctl_4", .id = CTL_4,
.base = 0x1800, .len = 0x94,
- .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13),
},
};
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 2/3] drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x
2025-12-24 15:42 [PATCH v3 0/3] drm/msm: drop DPU 3.x support from the MDP5 driver Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 1/3] drm/msm/dpu: drop intr_start from DPU 3.x catalog files Dmitry Baryshkov
@ 2025-12-24 15:42 ` Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 3/3] drm/msm/mdp5: drop support for MSM8998, SDM630 and SDM660 Dmitry Baryshkov
2 siblings, 0 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2025-12-24 15:42 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, Alexey Minnekhanov, David Airlie,
Simona Vetter, Alexey Minnekhanov
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel
DPU units before 4.x don't have a separate CTL_START IRQ to mark the
begin of the data transfer. In such a case, wait for the frame transfer
to complete rather than trying to wait for the CTL_START interrupt (and
obviously hitting the timeout).
Fixes: 050770cbbd26 ("drm/msm/dpu: Fix timeout issues on command mode panels")
Reported-by: Alexey Minnekhanov <alexeymin@postmarketos.org>
Closes: https://lore.kernel.org/r/8e1d33ff-d902-4ae9-9162-e00d17a5e6d1@postmarketos.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
index 0ec6d67c7c70..4faed35f146b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
@@ -681,7 +681,8 @@ static int dpu_encoder_phys_cmd_wait_for_commit_done(
if (!dpu_encoder_phys_cmd_is_master(phys_enc))
return 0;
- if (phys_enc->hw_ctl->ops.is_started(phys_enc->hw_ctl))
+ if (!phys_enc->irq[INTR_IDX_CTL_START] ||
+ phys_enc->hw_ctl->ops.is_started(phys_enc->hw_ctl))
return dpu_encoder_phys_cmd_wait_for_tx_complete(phys_enc);
return _dpu_encoder_phys_cmd_wait_for_ctl_start(phys_enc);
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 3/3] drm/msm/mdp5: drop support for MSM8998, SDM630 and SDM660
2025-12-24 15:42 [PATCH v3 0/3] drm/msm: drop DPU 3.x support from the MDP5 driver Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 1/3] drm/msm/dpu: drop intr_start from DPU 3.x catalog files Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 2/3] drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x Dmitry Baryshkov
@ 2025-12-24 15:42 ` Dmitry Baryshkov
2 siblings, 0 replies; 4+ messages in thread
From: Dmitry Baryshkov @ 2025-12-24 15:42 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, Alexey Minnekhanov, David Airlie,
Simona Vetter, Alexey Minnekhanov
Cc: linux-arm-msm, dri-devel, freedreno, linux-kernel
Currently MDP5 3.x (MSM8998, SDM630 and SDM660) platforms are support
by both DPU and MDP5 drivers. Support for them in the DPU driver is
mature enough, so it's no longer sensible to keep them enabled in the
MDP5 driver. Not to mention that MSM8998 never used an MDP5 compatible
string. Drop support for the MDP5 3.x genration inside the MDP5
driver and migrate those to the DPU driver only.
Note: this will break if one uses the DT generated before v6.3 as they
had only the generic, "qcom,mdp5" compatible string for SDM630 and
SDM660. However granted that we had two LTS releases inbetween I don't
think it is an issue.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 314 -------------------------------
drivers/gpu/drm/msm/msm_drv.c | 16 +-
2 files changed, 13 insertions(+), 317 deletions(-)
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
index df464f7c05bf..69fef034d0df 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
@@ -1097,310 +1097,6 @@ static const struct mdp5_cfg_hw msm8937_config = {
.max_clk = 320000000,
};
-static const struct mdp5_cfg_hw msm8998_config = {
- .name = "msm8998",
- .mdp = {
- .count = 1,
- .caps = MDP_CAP_DSC |
- MDP_CAP_CDM |
- MDP_CAP_SRC_SPLIT |
- 0,
- },
- .ctl = {
- .count = 5,
- .base = { 0x01000, 0x01200, 0x01400, 0x01600, 0x01800 },
- .flush_hw_mask = 0xf7ffffff,
- },
- .pipe_vig = {
- .count = 4,
- .base = { 0x04000, 0x06000, 0x08000, 0x0a000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_CSC |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_rgb = {
- .count = 4,
- .base = { 0x14000, 0x16000, 0x18000, 0x1a000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_dma = {
- .count = 2, /* driver supports max of 2 currently */
- .base = { 0x24000, 0x26000, 0x28000, 0x2a000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_cursor = {
- .count = 2,
- .base = { 0x34000, 0x36000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- MDP_PIPE_CAP_CURSOR |
- 0,
- },
-
- .lm = {
- .count = 6,
- .base = { 0x44000, 0x45000, 0x46000, 0x47000, 0x48000, 0x49000 },
- .instances = {
- { .id = 0, .pp = 0, .dspp = 0,
- .caps = MDP_LM_CAP_DISPLAY |
- MDP_LM_CAP_PAIR, },
- { .id = 1, .pp = 1, .dspp = 1,
- .caps = MDP_LM_CAP_DISPLAY, },
- { .id = 2, .pp = 2, .dspp = -1,
- .caps = MDP_LM_CAP_DISPLAY |
- MDP_LM_CAP_PAIR, },
- { .id = 3, .pp = -1, .dspp = -1,
- .caps = MDP_LM_CAP_WB, },
- { .id = 4, .pp = -1, .dspp = -1,
- .caps = MDP_LM_CAP_WB, },
- { .id = 5, .pp = 3, .dspp = -1,
- .caps = MDP_LM_CAP_DISPLAY, },
- },
- .nb_stages = 8,
- .max_width = 2560,
- .max_height = 0xFFFF,
- },
- .dspp = {
- .count = 2,
- .base = { 0x54000, 0x56000 },
- },
- .ad = {
- .count = 3,
- .base = { 0x78000, 0x78800, 0x79000 },
- },
- .pp = {
- .count = 4,
- .base = { 0x70000, 0x70800, 0x71000, 0x71800 },
- },
- .cdm = {
- .count = 1,
- .base = { 0x79200 },
- },
- .dsc = {
- .count = 2,
- .base = { 0x80000, 0x80400 },
- },
- .intf = {
- .base = { 0x6a000, 0x6a800, 0x6b000, 0x6b800, 0x6c000 },
- .connect = {
- [0] = INTF_eDP,
- [1] = INTF_DSI,
- [2] = INTF_DSI,
- [3] = INTF_HDMI,
- },
- },
- .max_clk = 412500000,
-};
-
-static const struct mdp5_cfg_hw sdm630_config = {
- .name = "sdm630",
- .mdp = {
- .count = 1,
- .caps = MDP_CAP_CDM |
- MDP_CAP_SRC_SPLIT |
- 0,
- },
- .ctl = {
- .count = 5,
- .base = { 0x01000, 0x01200, 0x01400, 0x01600, 0x01800 },
- .flush_hw_mask = 0xf4ffffff,
- },
- .pipe_vig = {
- .count = 1,
- .base = { 0x04000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_CSC |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_rgb = {
- .count = 4,
- .base = { 0x14000, 0x16000, 0x18000, 0x1a000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_dma = {
- .count = 2, /* driver supports max of 2 currently */
- .base = { 0x24000, 0x26000, 0x28000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_cursor = {
- .count = 1,
- .base = { 0x34000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- MDP_PIPE_CAP_CURSOR |
- 0,
- },
-
- .lm = {
- .count = 2,
- .base = { 0x44000, 0x46000 },
- .instances = {
- { .id = 0, .pp = 0, .dspp = 0,
- .caps = MDP_LM_CAP_DISPLAY |
- MDP_LM_CAP_PAIR, },
- { .id = 1, .pp = 1, .dspp = -1,
- .caps = MDP_LM_CAP_WB, },
- },
- .nb_stages = 8,
- .max_width = 2048,
- .max_height = 0xFFFF,
- },
- .dspp = {
- .count = 1,
- .base = { 0x54000 },
- },
- .ad = {
- .count = 2,
- .base = { 0x78000, 0x78800 },
- },
- .pp = {
- .count = 3,
- .base = { 0x70000, 0x71000, 0x72000 },
- },
- .cdm = {
- .count = 1,
- .base = { 0x79200 },
- },
- .intf = {
- .base = { 0x6a000, 0x6a800 },
- .connect = {
- [0] = INTF_DISABLED,
- [1] = INTF_DSI,
- },
- },
- .max_clk = 412500000,
-};
-
-static const struct mdp5_cfg_hw sdm660_config = {
- .name = "sdm660",
- .mdp = {
- .count = 1,
- .caps = MDP_CAP_DSC |
- MDP_CAP_CDM |
- MDP_CAP_SRC_SPLIT |
- 0,
- },
- .ctl = {
- .count = 5,
- .base = { 0x01000, 0x01200, 0x01400, 0x01600, 0x01800 },
- .flush_hw_mask = 0xf4ffffff,
- },
- .pipe_vig = {
- .count = 2,
- .base = { 0x04000, 0x6000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_CSC |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_rgb = {
- .count = 4,
- .base = { 0x14000, 0x16000, 0x18000, 0x1a000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SCALE |
- MDP_PIPE_CAP_DECIMATION |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_dma = {
- .count = 2, /* driver supports max of 2 currently */
- .base = { 0x24000, 0x26000, 0x28000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- 0,
- },
- .pipe_cursor = {
- .count = 1,
- .base = { 0x34000 },
- .caps = MDP_PIPE_CAP_HFLIP |
- MDP_PIPE_CAP_VFLIP |
- MDP_PIPE_CAP_SW_PIX_EXT |
- MDP_PIPE_CAP_CURSOR |
- 0,
- },
-
- .lm = {
- .count = 4,
- .base = { 0x44000, 0x45000, 0x46000, 0x49000 },
- .instances = {
- { .id = 0, .pp = 0, .dspp = 0,
- .caps = MDP_LM_CAP_DISPLAY |
- MDP_LM_CAP_PAIR, },
- { .id = 1, .pp = 1, .dspp = 1,
- .caps = MDP_LM_CAP_DISPLAY, },
- { .id = 2, .pp = 2, .dspp = -1,
- .caps = MDP_LM_CAP_DISPLAY |
- MDP_LM_CAP_PAIR, },
- { .id = 3, .pp = 3, .dspp = -1,
- .caps = MDP_LM_CAP_WB, },
- },
- .nb_stages = 8,
- .max_width = 2560,
- .max_height = 0xFFFF,
- },
- .dspp = {
- .count = 2,
- .base = { 0x54000, 0x56000 },
- },
- .ad = {
- .count = 2,
- .base = { 0x78000, 0x78800 },
- },
- .pp = {
- .count = 5,
- .base = { 0x70000, 0x70800, 0x71000, 0x71800, 0x72000 },
- },
- .cdm = {
- .count = 1,
- .base = { 0x79200 },
- },
- .dsc = {
- .count = 2,
- .base = { 0x80000, 0x80400 },
- },
- .intf = {
- .base = { 0x6a000, 0x6a800, 0x6b000, 0x6b800 },
- .connect = {
- [0] = INTF_DISABLED,
- [1] = INTF_DSI,
- [2] = INTF_DSI,
- [3] = INTF_HDMI,
- },
- },
- .max_clk = 412500000,
-};
-
static const struct mdp5_cfg_handler cfg_handlers_v1[] = {
{ .revision = 0, .config = { .hw = &msm8x74v1_config } },
{ .revision = 1, .config = { .hw = &msm8x26_config } },
@@ -1416,12 +1112,6 @@ static const struct mdp5_cfg_handler cfg_handlers_v1[] = {
{ .revision = 16, .config = { .hw = &msm8x53_config } },
};
-static const struct mdp5_cfg_handler cfg_handlers_v3[] = {
- { .revision = 0, .config = { .hw = &msm8998_config } },
- { .revision = 2, .config = { .hw = &sdm660_config } },
- { .revision = 3, .config = { .hw = &sdm630_config } },
-};
-
const struct mdp5_cfg_hw *mdp5_cfg_get_hw_config(struct mdp5_cfg_handler *cfg_handler)
{
return cfg_handler->config.hw;
@@ -1455,10 +1145,6 @@ struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms *mdp5_kms,
cfg_handlers = cfg_handlers_v1;
num_handlers = ARRAY_SIZE(cfg_handlers_v1);
break;
- case 3:
- cfg_handlers = cfg_handlers_v3;
- num_handlers = ARRAY_SIZE(cfg_handlers_v3);
- break;
default:
DRM_DEV_ERROR(dev->dev, "unexpected MDP major version: v%d.%d\n",
major, minor);
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 7e977fec4100..abee7149a9e8 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -960,23 +960,33 @@ static bool prefer_mdp5 = true;
MODULE_PARM_DESC(prefer_mdp5, "Select whether MDP5 or DPU driver should be preferred");
module_param(prefer_mdp5, bool, 0444);
+/* list all platforms that have been migrated from mdp5 to dpu driver */
+static const char *const msm_mdp5_dpu_migrated[] = {
+ /* there never was qcom,msm8998-mdp5 */
+ "qcom,sdm630-mdp5",
+ "qcom,sdm660-mdp5",
+ NULL
+};
+
/* list all platforms supported by both mdp5 and dpu drivers */
static const char *const msm_mdp5_dpu_migration[] = {
"qcom,msm8917-mdp5",
"qcom,msm8937-mdp5",
"qcom,msm8953-mdp5",
"qcom,msm8996-mdp5",
- "qcom,sdm630-mdp5",
- "qcom,sdm660-mdp5",
NULL,
};
bool msm_disp_drv_should_bind(struct device *dev, bool dpu_driver)
{
- /* If it is not an MDP5 device, do not try MDP5 driver */
+ /* If it is not an MDP5 device, use DPU */
if (!of_device_is_compatible(dev->of_node, "qcom,mdp5"))
return dpu_driver;
+ /* If it is no longer supported by MDP5, use DPU */
+ if (of_device_compatible_match(dev->of_node, msm_mdp5_dpu_migrated))
+ return dpu_driver;
+
/* If it is not in the migration list, use MDP5 */
if (!of_device_compatible_match(dev->of_node, msm_mdp5_dpu_migration))
return !dpu_driver;
--
2.47.3
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-24 15:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-24 15:42 [PATCH v3 0/3] drm/msm: drop DPU 3.x support from the MDP5 driver Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 1/3] drm/msm/dpu: drop intr_start from DPU 3.x catalog files Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 2/3] drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x Dmitry Baryshkov
2025-12-24 15:42 ` [PATCH v3 3/3] drm/msm/mdp5: drop support for MSM8998, SDM630 and SDM660 Dmitry Baryshkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®