linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/45] drm/msm/dp: Add MST support for MSM chipsets
@ 2024-12-06  4:31 Abhinav Kumar
  2024-12-06  4:31 ` [PATCH 01/45] drm/msm/dp: dont call dp_catalog_ctrl_mainlink_ctrl in dp_ctrl_configure_source_params() Abhinav Kumar
                   ` (46 more replies)
  0 siblings, 47 replies; 111+ messages in thread
From: Abhinav Kumar @ 2024-12-06  4:31 UTC (permalink / raw)
  To: Rob Clark, Dmitry Baryshkov, Sean Paul, Marijn Suijten,
	David Airlie, Simona Vetter, Stephen Boyd, Chandan Uddaraju,
	Guenter Roeck, Kuogee Hsieh, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: Vara Reddy, Rob Clark, Tanmay Shah, linux-arm-msm, dri-devel,
	freedreno, linux-kernel, devicetree, Jessica Zhang,
	Laurent Pinchart, Abhinav Kumar, Yongxing Mou

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/patch/622243/ (to avoid a log spam)
[2] : https://patchwork.freedesktop.org/series/142010/ (to fix up HPD)
[3] : https://patchwork.freedesktop.org/patch/612740/ (to avoid blank screens)
[4] : https://patchwork.freedesktop.org/series/140216/ (MDSS DT for sa8775p)
[5] : https://patchwork.kernel.org/project/linux-arm-msm/list/?series=912200
      (Display Port DT changes for sa8775p)

Bindings for the pixel clock for additional stream is available at :

[6] : https://patchwork.freedesktop.org/series/142016/

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 <robdclark@gmail.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Sean Paul <sean@poorly.run>
To: Marijn Suijten <marijn.suijten@somainline.org>
To: David Airlie <airlied@gmail.com>
To: Simona Vetter <simona@ffwll.ch>
To: Stephen Boyd <swboyd@chromium.org>
To: Chandan Uddaraju <chandanu@codeaurora.org>
To: Guenter Roeck <groeck@chromium.org>
To: Kuogee Hsieh <quic_khsieh@quicinc.com>
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
Cc: Vara Reddy <quic_varar@quicinc.com>
Cc: Rob Clark <robdclark@chromium.org>
Cc: Tanmay Shah <tanmay@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: freedreno@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
---
Abhinav Kumar (43):
      drm/msm/dp: dont call dp_catalog_ctrl_mainlink_ctrl in dp_ctrl_configure_source_params()
      drm/msm/dp: disable the opp table request even for dp_ctrl_off_link()
      drm/msm/dp: fix the intf_type of MST interfaces
      drm/msm/dp: split msm_dp_panel_read_sink_caps() into two parts
      drm/msm/dp: add a helper to read mst caps for dp_panel
      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: move the pixel clock control to its own API
      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 stream_id for each DP panel
      drm/msm/dp: convert dp_display_set_mode() to use dp_panel argument
      drm/msm/dp: add support for programming p1 register block
      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 program mst support in mainlink
      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 to send vcpf packets in dp controller
      drm/msm/dp: always program MST_FIFO_CONSTANT_FILL for MST
      drm/msm/dp: abstract out the dp_display stream helpers to accept a panel
      drm/msm/dp: move link related operations to dp_display_unprepare()
      drm/msm/dp: replace power_on with active_stream_cnt for dp_display
      drm/msm/dp: make the SST bridge disconnected when mst is active
      drm/msm/dp: add an API to initialize MST on sink side
      drm/msm/dp: skip reading the EDID for MST cases
      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 irq hpd callback for dp mst
      drm/msm/dp: add support to re-use and clear the panel edid
      drm/msm/dp: add a mst session mutex to protect bridge ops
      drm/msm: add support for 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: add a stream to intf map for DP controller
      drm/msm/dpu: use msm_dp_get_mst_intf_id() to get the intf id
      drm/msm/dp: mark ST_DISCONNECTED only if all streams are disabled
      drm/msm/dp: populate the max_streams for sa8775 mst controller
      arm64: dts: qcom: add mst support for pixel 1 stream clk for DP1

Yongxing Mou (2):
      drm/msm/dp: propagate hpd state changes to dp mst module
      arm64: dts: qcom: add mst support for pixel stream clk for DP0

 arch/arm64/boot/dts/qcom/sa8775p.dtsi              |   23 +-
 drivers/gpu/drm/msm/Makefile                       |    3 +-
 .../drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h    |    8 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c        |   25 +-
 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_aux.h                    |    1 +
 drivers/gpu/drm/msm/dp/dp_catalog.c                |  292 ++++-
 drivers/gpu/drm/msm/dp/dp_catalog.h                |   27 +
 drivers/gpu/drm/msm/dp/dp_ctrl.c                   |  454 ++++++--
 drivers/gpu/drm/msm/dp/dp_ctrl.h                   |   21 +-
 drivers/gpu/drm/msm/dp/dp_display.c                |  559 +++++++---
 drivers/gpu/drm/msm/dp/dp_display.h                |   33 +-
 drivers/gpu/drm/msm/dp/dp_drm.c                    |   53 +-
 drivers/gpu/drm/msm/dp/dp_drm.h                    |   12 -
 drivers/gpu/drm/msm/dp/dp_mst_drm.c                | 1118 ++++++++++++++++++++
 drivers/gpu/drm/msm/dp/dp_mst_drm.h                |  110 ++
 drivers/gpu/drm/msm/dp/dp_panel.c                  |   41 +-
 drivers/gpu/drm/msm/dp/dp_panel.h                  |   15 +-
 drivers/gpu/drm/msm/dp/dp_reg.h                    |   25 +-
 drivers/gpu/drm/msm/msm_atomic.c                   |    2 +
 drivers/gpu/drm/msm/msm_drv.h                      |   29 +
 drivers/gpu/drm/msm/msm_kms.c                      |    1 +
 24 files changed, 2589 insertions(+), 296 deletions(-)
---
base-commit: b166256c1e6ce356fa1404d4c8531830e6f100a8
change-id: 20241205-dp_mst-d62fa86257ed

Best regards,
-- 
Abhinav Kumar <quic_abhinavk@quicinc.com>


^ permalink raw reply	[flat|nested] 111+ messages in thread

end of thread, other threads:[~2025-05-29 10:08 UTC | newest]

Thread overview: 111+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-06  4:31 [PATCH 00/45] drm/msm/dp: Add MST support for MSM chipsets Abhinav Kumar
2024-12-06  4:31 ` [PATCH 01/45] drm/msm/dp: dont call dp_catalog_ctrl_mainlink_ctrl in dp_ctrl_configure_source_params() Abhinav Kumar
2024-12-08 17:50   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 02/45] drm/msm/dp: disable the opp table request even for dp_ctrl_off_link() Abhinav Kumar
2024-12-06  8:38   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 03/45] drm/msm/dp: fix the intf_type of MST interfaces Abhinav Kumar
2024-12-06  8:41   ` Dmitry Baryshkov
2025-01-07  0:55   ` Bjorn Andersson
2025-05-29 10:06     ` Yongxing Mou
2024-12-06  4:31 ` [PATCH 04/45] drm/msm/dp: split msm_dp_panel_read_sink_caps() into two parts Abhinav Kumar
2024-12-06  8:51   ` Dmitry Baryshkov
2025-05-22  9:51     ` Yongxing Mou
2025-05-22 12:38       ` Dmitry Baryshkov
2025-05-26 12:21         ` Yongxing Mou
2024-12-06  4:31 ` [PATCH 05/45] drm/msm/dp: add a helper to read mst caps for dp_panel Abhinav Kumar
2024-12-06  8:52   ` Dmitry Baryshkov
2025-05-26 12:26     ` Yongxing Mou
2025-05-28 16:13       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 06/45] drm/msm/dp: remove dp_display's dp_mode and use dp_panel's instead Abhinav Kumar
2024-12-06  9:01   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 07/45] drm/msm/dp: break up dp_display_enable into two parts Abhinav Kumar
2024-12-06  9:04   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 08/45] drm/msm/dp: re-arrange dp_display_disable() into functional parts Abhinav Kumar
2024-12-08 12:03   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 09/45] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Abhinav Kumar
2024-12-06  9:09   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 10/45] drm/msm/dp: move the pixel clock control to its own API Abhinav Kumar
2024-12-06  9:11   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 11/45] drm/msm/dp: split dp_ctrl_off() into stream and link parts Abhinav Kumar
2024-12-06  9:14   ` Dmitry Baryshkov
2025-05-26 12:47     ` Yongxing Mou
2025-05-28 16:15       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 12/45] drm/msm/dp: make bridge helpers use dp_display to allow re-use Abhinav Kumar
2024-12-08 11:07   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 13/45] drm/msm/dp: separate dp_display_prepare() into its own API Abhinav Kumar
2024-12-06 12:12   ` Stephan Gerhold
2024-12-06  4:31 ` [PATCH 14/45] drm/msm/dp: introduce stream_id for each DP panel Abhinav Kumar
2024-12-08 11:22   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 15/45] drm/msm/dp: convert dp_display_set_mode() to use dp_panel argument Abhinav Kumar
2024-12-08 11:39   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 16/45] drm/msm/dp: add support for programming p1 register block Abhinav Kumar
2024-12-06  9:39   ` Dmitry Baryshkov
2024-12-06  9:42   ` Dmitry Baryshkov
2024-12-08  6:22   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 17/45] drm/msm/dp: use stream_id to change offsets in dp_catalog Abhinav Kumar
2024-12-08  5:42   ` Dmitry Baryshkov
2025-05-26 12:57     ` Yongxing Mou
2025-05-28 16:17       ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 18/45] drm/msm/dp: add support to send ACT packets for MST Abhinav Kumar
2024-12-08  5:45   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 19/45] drm/msm/dp: add support to program mst support in mainlink Abhinav Kumar
2024-12-08 11:42   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 20/45] drm/msm/dp: no need to update tu calculation for mst Abhinav Kumar
2024-12-08  5:45   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 21/45] drm/msm/dp: add support for mst channel slot allocation Abhinav Kumar
2024-12-08  6:13   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 22/45] drm/msm/dp: add support to send vcpf packets in dp controller Abhinav Kumar
2024-12-08  6:20   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 23/45] drm/msm/dp: always program MST_FIFO_CONSTANT_FILL for MST Abhinav Kumar
2024-12-08 11:44   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 24/45] drm/msm/dp: abstract out the dp_display stream helpers to accept a panel Abhinav Kumar
2024-12-08 11:46   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 25/45] drm/msm/dp: move link related operations to dp_display_unprepare() Abhinav Kumar
2024-12-08 11:48   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 26/45] drm/msm/dp: replace power_on with active_stream_cnt for dp_display Abhinav Kumar
2024-12-08 11:50   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 27/45] drm/msm/dp: make the SST bridge disconnected when mst is active Abhinav Kumar
2024-12-08 11:51   ` Dmitry Baryshkov
2024-12-06  4:31 ` [PATCH 28/45] drm/msm/dp: add an API to initialize MST on sink side Abhinav Kumar
2024-12-08 11:56   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 29/45] drm/msm/dp: skip reading the EDID for MST cases Abhinav Kumar
2024-12-06  9:32   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 30/45] drm/msm/dp: add dp_display_get_panel() to initialize DP panel Abhinav Kumar
2024-12-08  8:51   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 31/45] drm/msm/dp: add dp_mst_drm to manage DP MST bridge operations Abhinav Kumar
2024-12-06 10:12   ` Dmitry Baryshkov
2025-05-27 10:29     ` Yongxing Mou
2025-05-28 18:02       ` Dmitry Baryshkov
2024-12-08  7:19   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 32/45] drm/msm/dp: add connector abstraction for DP MST Abhinav Kumar
2024-12-08  7:24   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 33/45] drm/msm/dp: add irq hpd callback for dp mst Abhinav Kumar
2024-12-08  6:44   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 34/45] drm/msm/dp: add support to re-use and clear the panel edid Abhinav Kumar
2024-12-08  8:53   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 35/45] drm/msm/dp: add a mst session mutex to protect bridge ops Abhinav Kumar
2024-12-08  8:54   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 36/45] drm/msm/dp: propagate hpd state changes to dp mst module Abhinav Kumar
2024-12-08  8:58   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 37/45] drm/msm: add support for non-blocking commits Abhinav Kumar
2024-12-06  9:27   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 38/45] drm/msm: initialize DRM MST encoders for DP controllers Abhinav Kumar
2024-12-08  6:25   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 39/45] drm/msm/dp: initialize dp_mst module for each DP MST controller Abhinav Kumar
2024-12-08  6:31   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 40/45] drm/msm: add a stream to intf map for DP controller Abhinav Kumar
2024-12-06  9:20   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 41/45] drm/msm/dpu: use msm_dp_get_mst_intf_id() to get the intf id Abhinav Kumar
2024-12-06  9:25   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 42/45] drm/msm/dp: mark ST_DISCONNECTED only if all streams are disabled Abhinav Kumar
2024-12-08 11:58   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 43/45] drm/msm/dp: populate the max_streams for sa8775 mst controller Abhinav Kumar
2024-12-08 12:00   ` Dmitry Baryshkov
2024-12-06  4:32 ` [PATCH 44/45] arm64: dts: qcom: add mst support for pixel stream clk for DP0 Abhinav Kumar
2024-12-06 12:20   ` Konrad Dybcio
2025-01-07  0:52   ` Bjorn Andersson
2024-12-06  4:32 ` [PATCH 45/45] arm64: dts: qcom: add mst support for pixel 1 stream clk for DP1 Abhinav Kumar
2025-01-07  1:06 ` [PATCH 00/45] drm/msm/dp: Add MST support for MSM chipsets Bjorn Andersson
2025-01-07  1:10   ` Abhinav Kumar
2025-05-10 12:12 ` Jens Glathe
2025-05-22 18:19   ` Abhinav Kumar

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).