[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250825-msm-dp-mst-v3-0-01faacfcdedd@oss.qualcomm.com>
Date: Mon, 25 Aug 2025 22:15:46 +0800
From: Yongxing Mou <yongxing.mou@....qualcomm.com>
To: Rob Clark <robin.clark@....qualcomm.com>,
Dmitry Baryshkov <lumag@...nel.org>,
Abhinav Kumar <abhinav.kumar@...ux.dev>,
Jessica Zhang <jessica.zhang@....qualcomm.com>,
Sean Paul <sean@...rly.run>,
Marijn Suijten <marijn.suijten@...ainline.org>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>
Cc: linux-arm-msm@...r.kernel.org, dri-devel@...ts.freedesktop.org,
freedreno@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
Yongxing Mou <yongxing.mou@....qualcomm.com>,
Abhinav Kumar <quic_abhinavk@...cinc.com>
Subject: [PATCH v3 00/38] drm/msm/dp: Add MST support for MSM chipsets
Add support for Multi-stream transport for MSM chipsets that allow
a single instance of DP controller to send multiple streams.
This series has been validated on sa8775p ride platform using multiple
MST dongles and also daisy chain method on both DP0 and DP1 upto 1080P.
With 4x4K monitors, due to lack of layer mixers that combination will not
work but this can be supported as well after some rework on the DPU side.
In addition, SST was re-validated with all these changes to ensure there
were no regressions.
This patch series was made on top of:
[1] : https://patchwork.freedesktop.org/series/151522/ (v2 to fix up HPD)
Bindings for the pixel clock for additional stream is available at :
[2] : https://patchwork.freedesktop.org/series/152718/
Overall, the patch series has been organized in the following way:
1) First set are a couple of fixes made while debugging MST but applicable
to SST as well so go ahead of everything else
2) Prepare the DP driver to get ready to handle multiple streams. This is the bulk
of the work as current DP driver design had to be adjusted to make this happen.
3) Finally, new files to handle MST related operations
Validation was done on the latest linux-next on top of above changes and
both FB console and weston compositors were validated with these changes.
To: Rob Clark <robin.clark@....qualcomm.com>
To: Dmitry Baryshkov <lumag@...nel.org>
To: Abhinav Kumar <abhinav.kumar@...ux.dev>
To: Jessica Zhang <jessica.zhang@....qualcomm.com>
To: Sean Paul <sean@...rly.run>
To: Marijn Suijten <marijn.suijten@...ainline.org>
To: David Airlie <airlied@...il.com>
To: Simona Vetter <simona@...ll.ch>
Cc: linux-arm-msm@...r.kernel.org
Cc: dri-devel@...ts.freedesktop.org
Cc: freedreno@...ts.freedesktop.org
Cc: linux-kernel@...r.kernel.org
Signed-off-by: Yongxing Mou <yongxing.mou@....qualcomm.com>
---
Changes in v3: Fixed review comments from Dmitry
- Fixed lots of comments from series V1/V2.
- Rebased onto next-20250808.
- Rebased onto Jessica's HPD-refactor branch.
- Fixed formatting issues in commit messages under changes.
- Removed unnecessary one-line wrappers.
- Relocated MST-related .atomic_check() calls to their appropriate positions.
- Removed the logic related to slot checking in .mode_valid().
- Link to v2: https://lore.kernel.org/r/20250609-msm-dp-mst-v2-0-a54d8902a23d@quicinc.com
Changes in v2: Fixed review comments from Dmitry
- Rebase on top of next-20250606
- Add all 4 streams pixel clks support and MST2/MST3 Link clk support
- Address the formatting issues mentioned in the review comments
- Drop the cache of msm_dp_panel->drm_edid cached
- Remove the one-line wrapper funtion and redundant conditional check
- Fixed the commit messgae descriptions of some patches
- Reordered the patches and renamed some functions and variables
- Link to v1: https://lore.kernel.org/all/20241205-dp_mst-v1-0-f
8618d42a99a@...cinc.com/
---
Abhinav Kumar (30):
drm/msm/dp: remove dp_display's dp_mode and use dp_panel's instead
drm/msm/dp: break up dp_display_enable into two parts
drm/msm/dp: re-arrange dp_display_disable() into functional parts
drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it
drm/msm/dp: split dp_ctrl_off() into stream and link parts
drm/msm/dp: make bridge helpers use dp_display to allow re-use
drm/msm/dp: separate dp_display_prepare() into its own API
drm/msm/dp: introduce max_streams for DP controller MST support
drm/msm/dp: introduce stream_id for each DP panel
drm/msm/dp: Add support for programming p1/p2/p3 register blocks
drm/msm/dp: use stream_id to change offsets in dp_catalog
drm/msm/dp: add support to send ACT packets for MST
drm/msm/dp: Add support to enable MST in mainlink control
drm/msm/dp: no need to update tu calculation for mst
drm/msm/dp: Add support for MST channel slot allocation
drm/msm/dp: Add support for sending VCPF packets in DP controller
drm/msm/dp: Always program MST_FIFO_CONSTANT_FILL for MST use cases
drm/msm/dp: abstract out the dp_display stream helpers to accept a panel
drm/msm/dp: replace power_on with active_stream_cnt for dp_display
drm/msm/dp: Mark the SST bridge disconnected when mst is active
drm/msm/dp: add an API to initialize MST on sink side
drm/msm/dp: add dp_display_get_panel() to initialize DP panel
drm/msm/dp: add dp_mst_drm to manage DP MST bridge operations
drm/msm/dp: add connector abstraction for DP MST
drm/msm/dp: add HPD callback for dp MST
drm/msm: add support for MST non-blocking commits
drm/msm: initialize DRM MST encoders for DP controllers
drm/msm/dp: initialize dp_mst module for each DP MST controller
drm/msm/dpu: use msm_dp_get_mst_intf_id() to get the intf id
drm/msm/dp: fix the intf_type of MST interfaces
Yongxing Mou (8):
drm/msm/dp: remove cached drm_edid from panel
drm/msm/dp: splite msm_dp_ctrl_config_ctrl() into link parts and stream parts
drm/msm/dp: extract MISC1_MISC0 configuration into a separate function
drm/msm/dp: move the pixel clock control to its own API
drm/msm/dp: Add catalog support for 3rd/4th stream MST
drm/msm/dp: add MST atomic check to msm_atomic_check()
drm/msm/dp: propagate MST state changes to dp mst module
drm/msm/dp: Add MST stream support for SA8775P DP controller 0 and 1
drivers/gpu/drm/msm/Makefile | 3 +-
.../drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 6 +-
.../drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 12 +-
.../drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 6 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 51 +-
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 2 +
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 29 +-
drivers/gpu/drm/msm/dp/dp_audio.c | 2 +-
drivers/gpu/drm/msm/dp/dp_ctrl.c | 664 +++++++++++---
drivers/gpu/drm/msm/dp/dp_ctrl.h | 23 +-
drivers/gpu/drm/msm/dp/dp_display.c | 569 ++++++++----
drivers/gpu/drm/msm/dp/dp_display.h | 36 +-
drivers/gpu/drm/msm/dp/dp_drm.c | 51 +-
drivers/gpu/drm/msm/dp/dp_drm.h | 12 -
drivers/gpu/drm/msm/dp/dp_mst_drm.c | 994 +++++++++++++++++++++
drivers/gpu/drm/msm/dp/dp_mst_drm.h | 90 ++
drivers/gpu/drm/msm/dp/dp_panel.c | 295 +++---
drivers/gpu/drm/msm/dp/dp_panel.h | 27 +-
drivers/gpu/drm/msm/dp/dp_reg.h | 46 +-
drivers/gpu/drm/msm/msm_atomic.c | 10 +-
drivers/gpu/drm/msm/msm_drv.h | 19 +
drivers/gpu/drm/msm/msm_kms.c | 2 +
22 files changed, 2529 insertions(+), 420 deletions(-)
---
base-commit: b1549501188cc9eba732c25b033df7a53ccc341f
change-id: 20250609-msm-dp-mst-cddc2f61daee
prerequisite-message-id: <20250808-hpd-refactor-v2-0-7f4e1e741aa3@....qualcomm.com>
prerequisite-patch-id: 0fc90e557ae4bb852757444b92af71ebb3c0698f
prerequisite-patch-id: a58ebaf429385c622869c83e83ce7ffdfe9ea27e
prerequisite-patch-id: 9840ae12755ebc1528d6719b058b86ce8ba3e5e8
prerequisite-patch-id: 8d5d7ac0302a333ecaf01d420f067d2db7195783
prerequisite-patch-id: 49532adadff58e9069a96b37f26017847fb29a3d
prerequisite-patch-id: 3d58007342ba985e1c7f0f85ebc5da29c8b67b5c
prerequisite-patch-id: 46274f99ffb986e53a48d6802e2fc05beb7b7b01
prerequisite-patch-id: 67536f5bceaf6e9aae18cb8e95874b71ef22dee4
prerequisite-patch-id: f5fb952fb63bce96161cb56db065927fa0a91e87
prerequisite-patch-id: 981c763c51c815adda57909ffe567cfa1069d5f5
prerequisite-patch-id: 3f738fbbf3634482eaf46e5bd5b83c0cf2ce0fe1
prerequisite-patch-id: 1e250d144e7bad58e2f1ea33f74ceea8e26335e0
prerequisite-message-id: <20250815-dp_mst_bindings-v6-0-e715bbbb5386@....qualcomm.com>
prerequisite-patch-id: ffeeb0739a4b3d310912f4bb6c0bd17802818879
prerequisite-patch-id: f0f92109d1bfffa6a1142f2aaecbd72a29b858c0
prerequisite-patch-id: 9cabb6be69b17e8580a2cffc7aa2709106cc1adf
prerequisite-patch-id: a389a2e4eca44bf62bb2c861c96596368be7a021
prerequisite-patch-id: 4f02ab9314f95984ab7dc9b852ba4d6c676746a7
prerequisite-patch-id: 62d643df7c88d8db2279def1e4b63a605e9145c0
Best regards,
--
Yongxing Mou <yongxing.mou@....qualcomm.com>
Powered by blists - more mailing lists