Currently the KMS and GPU parts of the msm driver are pretty much intertwined. It is impossible to register a KMS-only device and registering a GPU-only DRM device requires modifying the DT. Not to mention that binding the GPU-only device creates an interim platform devices, which complicates IOMMU setup.
Rework the driver: - Make it possible to disable KMS parts (if MDP4, MDP5 and DPU drivers are disabled). - Register GPU-only devices without an interim platform device. - Add module param that makes msm driver register GPU and KMS devices separately. Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com> --- Changes in v2: - Got rid of mdp4_crtc.id and msm_drm_private.num_crtcs - Moved msm_drm_private.wq and msm_drm_private.event_thread to struct msm_kms (Rob Clark) - Moved HDMI / DSI / DP pointers to msm_kms (Abhinav) - Link to v1: https://lore.kernel.org/r/20250413-msm-gpu-split-v1-0-1132f4b61...@oss.qualcomm.com --- Dmitry Baryshkov (11): drm/msm: move wq handling to KMS code drm/msm: move helper calls to msm_kms.c drm/msm/mdp4: get rid of mdp4_crtc.id drm/msm: get rid of msm_drm_private::num_crtcs drm/msm: move KMS driver data to msm_kms drm/msm: make it possible to disable KMS-related code. drm/msm: bail out late_init_minor() if it is not a GPU device drm/msm: rearrange symbol selection drm/msm: rework binding of Imageon GPUs drm/msm: enable separate binding of GPU and display devices drm/msm: make it possible to disable GPU support drivers/gpu/drm/msm/Kconfig | 54 ++++-- drivers/gpu/drm/msm/Makefile | 31 +-- drivers/gpu/drm/msm/adreno/adreno_device.c | 39 +--- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 4 +- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 13 +- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 35 ++-- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 9 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 13 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.h | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 17 +- drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 12 +- drivers/gpu/drm/msm/dp/dp_debug.c | 4 + drivers/gpu/drm/msm/dp/dp_display.c | 6 +- drivers/gpu/drm/msm/dsi/dsi.c | 4 +- drivers/gpu/drm/msm/hdmi/hdmi.c | 13 +- drivers/gpu/drm/msm/msm_debugfs.c | 222 ++++++++++++---------- drivers/gpu/drm/msm/msm_drv.c | 205 +++++++++++++------- drivers/gpu/drm/msm/msm_drv.h | 34 ++-- drivers/gpu/drm/msm/msm_gpu.h | 71 ++++++- drivers/gpu/drm/msm/msm_kms.c | 41 +++- drivers/gpu/drm/msm/msm_kms.h | 46 +++++ drivers/gpu/drm/msm/msm_submitqueue.c | 12 +- 23 files changed, 549 insertions(+), 340 deletions(-) --- base-commit: 37ff6e9a2ce321b7932d3987701757fb4d87b0e6 change-id: 20250411-msm-gpu-split-2701e49e40f0 Best regards, -- Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com>