On 10/12/2026 8:23 PM, Dmitry Baryshkov wrote:
On Mon, Oct 12, 2026 at 04:44:06PM +0800, Yongxing Mou wrote:
On 10/1/2026 6:32 PM, Dmitry Baryshkov wrote:
On Tue, Sep 29, 2026 at 12:25:32PM +0800, Yongxing Mou wrote:
From: Abhinav Kumar <[email protected]>
Whenever virtual channel slot allocation changes, the DP
source must send the action control trigger sequence to notify
the sink about the same. This would be applicable during the
start and stop of the pixel stream. Add the infrastructure
to be able to send ACT packets for the DP controller when
operating in MST mode.
Add REG_DP_MST_ACT, the ACT trigger register used by this sequence.
Signed-off-by: Abhinav Kumar <[email protected]>
Signed-off-by: Yongxing Mou <[email protected]>
---
drivers/gpu/drm/msm/dp/dp_ctrl.c | 44
++++++++++++++++++++++++++++++++++++-
drivers/gpu/drm/msm/dp/dp_ctrl.h | 5 ++++-
drivers/gpu/drm/msm/dp/dp_display.c | 3 ++-
drivers/gpu/drm/msm/dp/dp_display.h | 1 +
drivers/gpu/drm/msm/dp/dp_reg.h | 1 +
5 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c
index e1614bc49a7c..65d22505c2b6 100644
--- a/drivers/gpu/drm/msm/dp/dp_ctrl.c
+++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c
@@ -142,6 +142,7 @@ struct msm_dp_ctrl_private {
bool core_clks_on;
bool link_clks_on;
bool stream_clks_on[DP_STREAM_MAX];
+ bool mst_active;
I really don't like the idea of having this flag in two locations. Here
and in the msm_dp_display_private. Can we have it in one place only?
These two fields are intended to represent different states with different
lifetimes.
msm_dp::mst_active tracks whether the DP connection has an active MST
session. The controller field records whether the current controller/link is
operating in MST mode and remains valid until the link is shut down.
I agree that using mst_active for both fields makes them look like
duplicated state. I propose renaming the controller field to mst_mode while
keeping the display-side field as mst_active.
Would you agree with this change?
What is the difference between these two? I.e. what os the difference
between those two?
The difference between these two states mainly shows up during unplug.
mst_active is cleared when dp_display starts handling the unplug, while
dp_ctrl needs to keep the MST state until all streams are disabled and
the link is shut down.
So there is a period during teardown where these two states are
different, which is expected.
My concern with keeping only one state is that we would need to pass the
MST mode through multiple dp_ctrl APIs, which would make the code more
complicated. Would it make sense to keep this state in dp_ctrl and
rename it to mst_mode to make the distinction clearer?
};
[...]
static void msm_dp_display_unprepare(struct msm_dp_display_private *dp)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.h
b/drivers/gpu/drm/msm/dp/dp_display.h
index 83117e7619f3..472429d09200 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.h
+++ b/drivers/gpu/drm/msm/dp/dp_display.h
@@ -19,6 +19,7 @@ struct msm_dp {
struct drm_bridge *bridge;
bool audio_enabled;
bool power_on;
+ bool mst_active;
unsigned int connector_type;
bool is_edp;