* [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events
2026-06-29 14:48 [PATCH 0/5] drm/msm/dp: Add MSM Type-C MST support Yongxing Mou
@ 2026-06-29 14:48 ` Yongxing Mou
2026-07-12 10:21 ` Dmitry Baryshkov
2026-06-29 14:48 ` [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events Yongxing Mou
` (3 subsequent siblings)
4 siblings, 1 reply; 16+ messages in thread
From: Yongxing Mou @ 2026-06-29 14:48 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno, Yongxing Mou
The bridge connector framework currently invokes all bridge
hpd_notify() callbacks and unconditionally emits a connector hotplug
event afterwards.
However, not every HPD notification requires a userspace hotplug event.
In particular, DP MST bridges may use hpd_notify() to propagate HPD and
IRQ notifications through the bridge chain while the actual hotplug
handling is performed by the DRM DP MST core. Connector creation,
removal and userspace hotplug events are already managed by the MST
topology framework.
Allow hpd_notify() implementations to suppress the bridge connector
hotplug event by introducing a bool *send_hotplug parameter. Drivers
can clear this flag when HPD processing should not result in a
connector hotplug notification.
A NULL pointer indicates that hotplug suppression is not supported by
the caller, such as the connector detect polling path.
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
---
drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 3 ++-
drivers/gpu/drm/display/drm_bridge_connector.c | 15 +++++++++------
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 3 ++-
drivers/gpu/drm/msm/dp/dp_display.c | 3 ++-
drivers/gpu/drm/msm/dp/dp_drm.h | 3 ++-
drivers/gpu/drm/omapdrm/dss/hdmi4.c | 3 ++-
include/drm/drm_bridge.h | 3 ++-
7 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
index 8cb17bd0e238..42e1cadcd3fb 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
@@ -430,7 +430,8 @@ static const struct drm_edid *lt9611uxc_bridge_edid_read(struct drm_bridge *brid
static void lt9611uxc_bridge_hpd_notify(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug)
{
const struct drm_edid *drm_edid;
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 8f7075fd2aa5..5edca47a025f 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -142,7 +142,8 @@ struct drm_bridge_connector {
static void drm_bridge_connector_hpd_notify(struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug)
{
struct drm_bridge_connector *bridge_connector =
to_drm_bridge_connector(connector);
@@ -150,13 +151,14 @@ static void drm_bridge_connector_hpd_notify(struct drm_connector *connector,
/* Notify all bridges in the pipeline of hotplug events. */
drm_for_each_bridge_in_chain_scoped(bridge_connector->encoder, bridge) {
if (bridge->funcs->hpd_notify)
- bridge->funcs->hpd_notify(bridge, connector, status, extra_status);
+ bridge->funcs->hpd_notify(bridge, connector, status,
+ extra_status, send_hotplug);
}
}
static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bridge_connector,
- enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status status,
+ enum drm_connector_status_extra extra_status)
{
struct drm_connector *connector = &drm_bridge_connector->base;
struct drm_device *dev = connector->dev;
@@ -165,7 +167,7 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
connector->status = status;
mutex_unlock(&dev->mode_config.mutex);
- drm_bridge_connector_hpd_notify(connector, status, extra_status);
+ drm_bridge_connector_hpd_notify(connector, status, extra_status, NULL);
drm_kms_helper_connector_hotplug_event(connector);
}
@@ -227,7 +229,8 @@ drm_bridge_connector_detect(struct drm_connector *connector, bool force)
if (hdmi)
drm_atomic_helper_connector_hdmi_hotplug(connector, status);
- drm_bridge_connector_hpd_notify(connector, status, DRM_CONNECTOR_NO_EXTRA_STATUS);
+ drm_bridge_connector_hpd_notify(connector, status,
+ DRM_CONNECTOR_NO_EXTRA_STATUS, NULL);
} else {
switch (connector->connector_type) {
case DRM_MODE_CONNECTOR_DPI:
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index 4aecf0ffcf75..a67e7b365c5b 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -324,7 +324,8 @@ static int meson_encoder_hdmi_atomic_check(struct drm_bridge *bridge,
static void meson_encoder_hdmi_hpd_notify(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug)
{
struct meson_encoder_hdmi *encoder_hdmi = bridge_to_meson_encoder_hdmi(bridge);
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index fcfee26f0078..6835c68fe510 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1763,7 +1763,8 @@ void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge)
void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug)
{
struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(bridge);
struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display;
diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_drm.h
index f6b96c27408a..07ddcd055962 100644
--- a/drivers/gpu/drm/msm/dp/dp_drm.h
+++ b/drivers/gpu/drm/msm/dp/dp_drm.h
@@ -32,6 +32,7 @@ void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge);
void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status);
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug);
#endif /* _DP_DRM_H_ */
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
index d02d432abde4..ad659cef16f5 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
@@ -430,7 +430,8 @@ static void hdmi4_bridge_disable(struct drm_bridge *bridge,
static void hdmi4_bridge_hpd_notify(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status)
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug)
{
struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 9c4c88024cc5..e6de665ce8f6 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -616,7 +616,8 @@ struct drm_bridge_funcs {
void (*hpd_notify)(struct drm_bridge *bridge,
struct drm_connector *connector,
enum drm_connector_status status,
- enum drm_connector_status_extra extra_status);
+ enum drm_connector_status_extra extra_status,
+ bool *send_hotplug);
/**
* @hpd_enable:
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events
2026-06-29 14:48 ` [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events Yongxing Mou
@ 2026-07-12 10:21 ` Dmitry Baryshkov
2026-08-17 8:01 ` Yongxing Mou
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Baryshkov @ 2026-07-12 10:21 UTC (permalink / raw)
To: Yongxing Mou
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On Mon, Jun 29, 2026 at 10:48:03PM +0800, Yongxing Mou wrote:
> The bridge connector framework currently invokes all bridge
> hpd_notify() callbacks and unconditionally emits a connector hotplug
> event afterwards.
>
> However, not every HPD notification requires a userspace hotplug event.
>
> In particular, DP MST bridges may use hpd_notify() to propagate HPD and
> IRQ notifications through the bridge chain while the actual hotplug
> handling is performed by the DRM DP MST core. Connector creation,
> removal and userspace hotplug events are already managed by the MST
> topology framework.
>
> Allow hpd_notify() implementations to suppress the bridge connector
> hotplug event by introducing a bool *send_hotplug parameter. Drivers
> can clear this flag when HPD processing should not result in a
> connector hotplug notification.
Why? Worst case the kernel receives another hotplug notification which
gets ignored by the driver.
>
> A NULL pointer indicates that hotplug suppression is not supported by
> the caller, such as the connector detect polling path.
And nothing in this patch makes any use of it. I'd say, it's
questionable addition. Let me check other patches...
>
> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
> ---
> drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 3 ++-
> drivers/gpu/drm/display/drm_bridge_connector.c | 15 +++++++++------
> drivers/gpu/drm/meson/meson_encoder_hdmi.c | 3 ++-
> drivers/gpu/drm/msm/dp/dp_display.c | 3 ++-
> drivers/gpu/drm/msm/dp/dp_drm.h | 3 ++-
> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 3 ++-
> include/drm/drm_bridge.h | 3 ++-
> 7 files changed, 21 insertions(+), 12 deletions(-)
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events
2026-07-12 10:21 ` Dmitry Baryshkov
@ 2026-08-17 8:01 ` Yongxing Mou
0 siblings, 0 replies; 16+ messages in thread
From: Yongxing Mou @ 2026-08-17 8:01 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On 7/12/2026 6:21 PM, Dmitry Baryshkov wrote:
> On Mon, Jun 29, 2026 at 10:48:03PM +0800, Yongxing Mou wrote:
>> The bridge connector framework currently invokes all bridge
>> hpd_notify() callbacks and unconditionally emits a connector hotplug
>> event afterwards.
>>
>> However, not every HPD notification requires a userspace hotplug event.
>>
>> In particular, DP MST bridges may use hpd_notify() to propagate HPD and
>> IRQ notifications through the bridge chain while the actual hotplug
>> handling is performed by the DRM DP MST core. Connector creation,
>> removal and userspace hotplug events are already managed by the MST
>> topology framework.
>>
>> Allow hpd_notify() implementations to suppress the bridge connector
>> hotplug event by introducing a bool *send_hotplug parameter. Drivers
>> can clear this flag when HPD processing should not result in a
>> connector hotplug notification.
>
> Why? Worst case the kernel receives another hotplug notification which
> gets ignored by the driver.
>
Hi, thanks for reviwing those patches.
Let me try to explain the motivation.
Semantically, IRQ_HPD is just an IRQ notification, not a connection state
transition, and shouldn't be turned into a userspace hotplug in the first
place. However, drm_bridge_connector_handle_hpd() currently calls
drm_kms_helper_connector_hotplug_event() unconditionally after processing
the event, so every IRQ_HPD ends up reported as a hotplug.
Second, MST IRQ_HPD is level-sticky -- as long as the ACK has not been
cleared, the IRQ keeps firing repeatedly, and MST bring-up (link training
/ MST enable handshake) itself generates a burst of IRQ_HPDs. So this is
not about "one extra hotplug", but about a burst of them within a short
window.
Every one of those hotplugs is delivered to userspace via udev and
prompts the compositor to re-probe the connector. In the window before
mst_active is set, that re-probe walks back into msm_dp_bridge_detect()
and performs aux/DPCD accesses, racing with the MST enable flow.
The amplification also isn't limited to a single connector: on Hamoa
there are 4 connectors (3x DP + eDP), and we observe that a hotplug on
any one connector causes the compositor to re-query all 4. So this burst
of spurious IRQ_HPDs during MST enable ends up amplified across the
whole card.
>>
>> A NULL pointer indicates that hotplug suppression is not supported by
>> the caller, such as the connector detect polling path.
>
> And nothing in this patch makes any use of it. I'd say, it's
> questionable addition. Let me check other patches...
>
You are right, I will reorganize the patches in next patchset.
>>
>> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
>> ---
>> drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 3 ++-
>> drivers/gpu/drm/display/drm_bridge_connector.c | 15 +++++++++------
>> drivers/gpu/drm/meson/meson_encoder_hdmi.c | 3 ++-
>> drivers/gpu/drm/msm/dp/dp_display.c | 3 ++-
>> drivers/gpu/drm/msm/dp/dp_drm.h | 3 ++-
>> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 3 ++-
>> include/drm/drm_bridge.h | 3 ++-
>> 7 files changed, 21 insertions(+), 12 deletions(-)
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events
2026-06-29 14:48 [PATCH 0/5] drm/msm/dp: Add MSM Type-C MST support Yongxing Mou
2026-06-29 14:48 ` [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events Yongxing Mou
@ 2026-06-29 14:48 ` Yongxing Mou
2026-07-12 10:33 ` Dmitry Baryshkov
2026-06-29 14:48 ` [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation Yongxing Mou
` (2 subsequent siblings)
4 siblings, 1 reply; 16+ messages in thread
From: Yongxing Mou @ 2026-06-29 14:48 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno, Yongxing Mou
The bridge connector HPD handling path currently updates
connector->status for every hpd_notify() invocation.
This does not work well for IRQ-only notifications where the event being
reported is carried by extra_status and no connector status transition is
associated with it.
One example is DP MST. HPD IRQs are propagated through
drm_bridge_hpd_notify_*() so that bridge drivers can process the
notification. During MST operation, however, the SST connector attached
to the bridge connector is intentionally kept disconnected while the MST
topology manager handles all connector creation, removal and hotplug
processing.
Updating connector->status for an IRQ-only MST notification may cause
the SST connector state to oscillate between connected and disconnected
depending on the notification path. These artificial state transitions
can later be detected by the polling logic and result in unnecessary
hotplug events being generated. Userspace then re-probes connector
status, potentially triggering the same sequence again.
Treat notifications with status == connector_status_unknown and a valid
extra_status as IRQ-only events. Forward the notification to bridge
drivers without modifying connector->status.
This keeps IRQ delivery working while leaving connector state management
to the component that actually owns it, such as the DP MST topology
framework.
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 5edca47a025f..7334d6677604 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -163,6 +163,18 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
struct drm_connector *connector = &drm_bridge_connector->base;
struct drm_device *dev = connector->dev;
+ /*
+ * IRQ-only notification: extra_status carries the event but
+ * status is unknown — do not overwrite connector->status.
+ */
+ if (status == connector_status_unknown &&
+ extra_status != DRM_CONNECTOR_NO_EXTRA_STATUS) {
+ drm_bridge_connector_hpd_notify(connector,
+ connector->status,
+ extra_status, NULL);
+ return;
+ }
+
mutex_lock(&dev->mode_config.mutex);
connector->status = status;
mutex_unlock(&dev->mode_config.mutex);
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events
2026-06-29 14:48 ` [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events Yongxing Mou
@ 2026-07-12 10:33 ` Dmitry Baryshkov
2026-08-17 8:02 ` Yongxing Mou
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Baryshkov @ 2026-07-12 10:33 UTC (permalink / raw)
To: Yongxing Mou
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On Mon, Jun 29, 2026 at 10:48:04PM +0800, Yongxing Mou wrote:
> The bridge connector HPD handling path currently updates
> connector->status for every hpd_notify() invocation.
>
> This does not work well for IRQ-only notifications where the event being
> reported is carried by extra_status and no connector status transition is
> associated with it.
>
> One example is DP MST. HPD IRQs are propagated through
> drm_bridge_hpd_notify_*() so that bridge drivers can process the
> notification. During MST operation, however, the SST connector attached
> to the bridge connector is intentionally kept disconnected while the MST
> topology manager handles all connector creation, removal and hotplug
> processing.
>
> Updating connector->status for an IRQ-only MST notification may cause
> the SST connector state to oscillate between connected and disconnected
> depending on the notification path. These artificial state transitions
> can later be detected by the polling logic and result in unnecessary
> hotplug events being generated. Userspace then re-probes connector
> status, potentially triggering the same sequence again.
Then the API might need to be adjusted.
Remember, we have two usecases, which we must be able to interpret
correctly:
- The driver gets separate HPD and IRQ_HPD events.
- The driver gets HPD and IRQ_HPD at the same time.
>
> Treat notifications with status == connector_status_unknown and a valid
> extra_status as IRQ-only events. Forward the notification to bridge
> drivers without modifying connector->status.
>
> This keeps IRQ delivery working while leaving connector state management
> to the component that actually owns it, such as the DP MST topology
> framework.
How is it handled by other drivers (i915, amd, nouveau)?
>
> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
> ---
> drivers/gpu/drm/display/drm_bridge_connector.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
> index 5edca47a025f..7334d6677604 100644
> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
> @@ -163,6 +163,18 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
> struct drm_connector *connector = &drm_bridge_connector->base;
> struct drm_device *dev = connector->dev;
>
> + /*
> + * IRQ-only notification: extra_status carries the event but
> + * status is unknown — do not overwrite connector->status.
But it's not unknown at this point. The connector status is reported
following the HPD status.
> + */
> + if (status == connector_status_unknown &&
> + extra_status != DRM_CONNECTOR_NO_EXTRA_STATUS) {
> + drm_bridge_connector_hpd_notify(connector,
> + connector->status,
> + extra_status, NULL);
> + return;
> + }
> +
> mutex_lock(&dev->mode_config.mutex);
> connector->status = status;
> mutex_unlock(&dev->mode_config.mutex);
>
> --
> 2.43.0
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events
2026-07-12 10:33 ` Dmitry Baryshkov
@ 2026-08-17 8:02 ` Yongxing Mou
0 siblings, 0 replies; 16+ messages in thread
From: Yongxing Mou @ 2026-08-17 8:02 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On 7/12/2026 6:33 PM, Dmitry Baryshkov wrote:
> On Mon, Jun 29, 2026 at 10:48:04PM +0800, Yongxing Mou wrote:
>> The bridge connector HPD handling path currently updates
>> connector->status for every hpd_notify() invocation.
>>
>> This does not work well for IRQ-only notifications where the event being
>> reported is carried by extra_status and no connector status transition is
>> associated with it.
>>
>> One example is DP MST. HPD IRQs are propagated through
>> drm_bridge_hpd_notify_*() so that bridge drivers can process the
>> notification. During MST operation, however, the SST connector attached
>> to the bridge connector is intentionally kept disconnected while the MST
>> topology manager handles all connector creation, removal and hotplug
>> processing.
>>
>> Updating connector->status for an IRQ-only MST notification may cause
>> the SST connector state to oscillate between connected and disconnected
>> depending on the notification path. These artificial state transitions
>> can later be detected by the polling logic and result in unnecessary
>> hotplug events being generated. Userspace then re-probes connector
>> status, potentially triggering the same sequence again.
>
> Then the API might need to be adjusted.
>
> Remember, we have two usecases, which we must be able to interpret
> correctly:
> - The driver gets separate HPD and IRQ_HPD events.
> - The driver gets HPD and IRQ_HPD at the same time.
>
Ohh yes, here need to rework.
>>
>> Treat notifications with status == connector_status_unknown and a valid
>> extra_status as IRQ-only events. Forward the notification to bridge
>> drivers without modifying connector->status.
>>
>> This keeps IRQ delivery working while leaving connector state management
>> to the component that actually owns it, such as the DP MST topology
>> framework.
>
> How is it handled by other drivers (i915, amd, nouveau)?
>
i915, amdgpu, and nouveau don't go through the drm_bridge_hpd_notify()
bridge chain -- their DP controllers are integrated into the SoC, and
HPD interrupts are handled directly in their own encoder code.
MSM DP is different in that HPD comes from Type-C / pmic_glink altmode
via aux-hpd-bridge, so it has to go through the bridge chain, which
means this semantic needs to be extended to the bridge API.
>>
>> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
>> ---
>> drivers/gpu/drm/display/drm_bridge_connector.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
>> index 5edca47a025f..7334d6677604 100644
>> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
>> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
>> @@ -163,6 +163,18 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
>> struct drm_connector *connector = &drm_bridge_connector->base;
>> struct drm_device *dev = connector->dev;
>>
>> + /*
>> + * IRQ-only notification: extra_status carries the event but
>> + * status is unknown — do not overwrite connector->status.
>
> But it's not unknown at this point. The connector status is reported
> following the HPD status.
>
You are right, in the SST case the bridge_connector status does follow
HPD / link status -- because the bridge_connector itself represents
that SST connector, so its status naturally is the link status.
The MST case has a key difference though: the SST connector must be
explicitly marked disconnected (to prevent the DRM framework from
enabling it), consistent with what i915, amdgpu and nouveau do. In
other words, once MST is enabled, the SST connector that the
bridge_connector represents no longer equates to the link status --
the real link is managed by the MST topology, and the SST connector
is just a placeholder at that point.
The issue is that IRQ_HPD still travels through the bridge_connector
chain and takes the old "update the SST connector's status -> emit
hotplug" path. Under MST that runs into two constraints -- and this
is exactly what this series is trying to address:
1. The SST connector represented by bridge_connector no longer stands
for the link, so its status must not be overwritten by IRQ_HPD
events.
2. IRQ_HPD needs a clean path that does not trigger a hotplug on the
bridge_connector -- the MST framework already manages hotplugs
independently.
Using connector_status_unknown as a sentinel here does feel a bit odd;
let me think about whether there is a cleaner approach.
>> + */
>> + if (status == connector_status_unknown &&
>> + extra_status != DRM_CONNECTOR_NO_EXTRA_STATUS) {
>> + drm_bridge_connector_hpd_notify(connector,
>> + connector->status,
>> + extra_status, NULL);
>> + return;
>> + }
>> +
>> mutex_lock(&dev->mode_config.mutex);
>> connector->status = status;
>> mutex_unlock(&dev->mode_config.mutex);
>>
>> --
>> 2.43.0
>>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation
2026-06-29 14:48 [PATCH 0/5] drm/msm/dp: Add MSM Type-C MST support Yongxing Mou
2026-06-29 14:48 ` [PATCH 1/5] drm/bridge: allow hpd_notify() to suppress connector hotplug events Yongxing Mou
2026-06-29 14:48 ` [PATCH 2/5] drm/bridge_connector: preserve connector status for IRQ-only HPD events Yongxing Mou
@ 2026-06-29 14:48 ` Yongxing Mou
2026-07-12 10:44 ` Dmitry Baryshkov
2026-06-29 14:48 ` [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification Yongxing Mou
2026-06-29 14:48 ` [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled Yongxing Mou
4 siblings, 1 reply; 16+ messages in thread
From: Yongxing Mou @ 2026-06-29 14:48 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno, Yongxing Mou
The DP MST framework already generates the required hotplug events for
MST topology changes.
Suppress connector hotplug event generation from the bridge connector
path while MST is active, and continue propagating HPD notifications to
the DP driver.
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 6 ++++--
drivers/gpu/drm/msm/dp/dp_display.c | 9 ++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 7334d6677604..82ed0dc450ab 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -162,6 +162,7 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
{
struct drm_connector *connector = &drm_bridge_connector->base;
struct drm_device *dev = connector->dev;
+ bool send_hotplug = true;
/*
* IRQ-only notification: extra_status carries the event but
@@ -179,9 +180,10 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
connector->status = status;
mutex_unlock(&dev->mode_config.mutex);
- drm_bridge_connector_hpd_notify(connector, status, extra_status, NULL);
+ drm_bridge_connector_hpd_notify(connector, status, extra_status, &send_hotplug);
- drm_kms_helper_connector_hotplug_event(connector);
+ if (send_hotplug)
+ drm_kms_helper_connector_hotplug_event(connector);
}
static void drm_bridge_connector_hpd_cb(void *cb_data,
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 6835c68fe510..bc93b566fbca 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1790,10 +1790,17 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
msm_dp_hpd_plug_handle(dp);
} else {
msm_dp_hpd_plug_handle(dp);
+ /* mst_active is set in plug_handle; suppress SST hotplug */
+ if (send_hotplug && msm_dp_display->mst_active)
+ *send_hotplug = false;
}
} else {
- if (hpd_link_status == ISR_DISCONNECTED)
+ if (!msm_dp_display->mst_active) {
msm_dp_hpd_unplug_handle(dp);
+ } else if (send_hotplug) {
+ msm_dp_hpd_unplug_handle(dp);
+ *send_hotplug = false;
+ }
}
pm_runtime_put_sync(&msm_dp_display->pdev->dev);
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation
2026-06-29 14:48 ` [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation Yongxing Mou
@ 2026-07-12 10:44 ` Dmitry Baryshkov
2026-08-17 8:01 ` Yongxing Mou
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Baryshkov @ 2026-07-12 10:44 UTC (permalink / raw)
To: Yongxing Mou
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On Mon, Jun 29, 2026 at 10:48:05PM +0800, Yongxing Mou wrote:
> The DP MST framework already generates the required hotplug events for
> MST topology changes.
>
> Suppress connector hotplug event generation from the bridge connector
> path while MST is active, and continue propagating HPD notifications to
> the DP driver.
>
> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
> ---
> drivers/gpu/drm/display/drm_bridge_connector.c | 6 ++++--
> drivers/gpu/drm/msm/dp/dp_display.c | 9 ++++++++-
No, it can't go as this. The drm_bridge_connector part should have been
a part of the first patch.
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
> index 7334d6677604..82ed0dc450ab 100644
> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
> @@ -162,6 +162,7 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
> {
> struct drm_connector *connector = &drm_bridge_connector->base;
> struct drm_device *dev = connector->dev;
> + bool send_hotplug = true;
>
> /*
> * IRQ-only notification: extra_status carries the event but
> @@ -179,9 +180,10 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
> connector->status = status;
> mutex_unlock(&dev->mode_config.mutex);
>
> - drm_bridge_connector_hpd_notify(connector, status, extra_status, NULL);
> + drm_bridge_connector_hpd_notify(connector, status, extra_status, &send_hotplug);
>
> - drm_kms_helper_connector_hotplug_event(connector);
> + if (send_hotplug)
> + drm_kms_helper_connector_hotplug_event(connector);
But now I can also see that the idea seems to be incorrect. You are
preventing the kernel from sending the events, but it doesn't really
matter. If connection status oscillates, then other components might
notice it even without the event being sent.
> }
>
> static void drm_bridge_connector_hpd_cb(void *cb_data,
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 6835c68fe510..bc93b566fbca 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1790,10 +1790,17 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
> msm_dp_hpd_plug_handle(dp);
> } else {
> msm_dp_hpd_plug_handle(dp);
> + /* mst_active is set in plug_handle; suppress SST hotplug */
> + if (send_hotplug && msm_dp_display->mst_active)
> + *send_hotplug = false;
> }
> } else {
> - if (hpd_link_status == ISR_DISCONNECTED)
> + if (!msm_dp_display->mst_active) {
> msm_dp_hpd_unplug_handle(dp);
> + } else if (send_hotplug) {
> + msm_dp_hpd_unplug_handle(dp);
> + *send_hotplug = false;
Why? Disconnected events definitely should be reported further.
> + }
> }
>
> pm_runtime_put_sync(&msm_dp_display->pdev->dev);
>
> --
> 2.43.0
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation
2026-07-12 10:44 ` Dmitry Baryshkov
@ 2026-08-17 8:01 ` Yongxing Mou
0 siblings, 0 replies; 16+ messages in thread
From: Yongxing Mou @ 2026-08-17 8:01 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On 7/12/2026 6:44 PM, Dmitry Baryshkov wrote:
> On Mon, Jun 29, 2026 at 10:48:05PM +0800, Yongxing Mou wrote:
>> The DP MST framework already generates the required hotplug events for
>> MST topology changes.
>>
>> Suppress connector hotplug event generation from the bridge connector
>> path while MST is active, and continue propagating HPD notifications to
>> the DP driver.
>>
>> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
>> ---
>> drivers/gpu/drm/display/drm_bridge_connector.c | 6 ++++--
>> drivers/gpu/drm/msm/dp/dp_display.c | 9 ++++++++-
>
> No, it can't go as this. The drm_bridge_connector part should have been
> a part of the first patch.
>
Got it.
>> 2 files changed, 12 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
>> index 7334d6677604..82ed0dc450ab 100644
>> --- a/drivers/gpu/drm/display/drm_bridge_connector.c
>> +++ b/drivers/gpu/drm/display/drm_bridge_connector.c
>> @@ -162,6 +162,7 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
>> {
>> struct drm_connector *connector = &drm_bridge_connector->base;
>> struct drm_device *dev = connector->dev;
>> + bool send_hotplug = true;
>>
>> /*
>> * IRQ-only notification: extra_status carries the event but
>> @@ -179,9 +180,10 @@ static void drm_bridge_connector_handle_hpd(struct drm_bridge_connector *drm_bri
>> connector->status = status;
>> mutex_unlock(&dev->mode_config.mutex);
>>
>> - drm_bridge_connector_hpd_notify(connector, status, extra_status, NULL);
>> + drm_bridge_connector_hpd_notify(connector, status, extra_status, &send_hotplug);
>>
>> - drm_kms_helper_connector_hotplug_event(connector);
>> + if (send_hotplug)
>> + drm_kms_helper_connector_hotplug_event(connector);
>
> But now I can also see that the idea seems to be incorrect. You are
> preventing the kernel from sending the events, but it doesn't really
> matter. If connection status oscillates, then other components might
> notice it even without the event being sent.
>
Here our original intent behind suppressing the hotplug was
that, under MST, hotplugs should be sent independently by the MST
framework, rather than being emitted along the IRQ handling path.
Following the extra_status approach you introduced, would it make sense
to let the bridge_connector layer distinguish between long pulses (HPD)
and short pulses (IRQ_HPD) -- a short pulse would not update
connector->status and would not emit a hotplug, only forwarding the
event to the bridge driver. Does this direction sound reasonable to
you?
>
>> }
>>
>> static void drm_bridge_connector_hpd_cb(void *cb_data,
>> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
>> index 6835c68fe510..bc93b566fbca 100644
>> --- a/drivers/gpu/drm/msm/dp/dp_display.c
>> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
>> @@ -1790,10 +1790,17 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
>> msm_dp_hpd_plug_handle(dp);
>> } else {
>> msm_dp_hpd_plug_handle(dp);
>> + /* mst_active is set in plug_handle; suppress SST hotplug */
>> + if (send_hotplug && msm_dp_display->mst_active)
>> + *send_hotplug = false;
>> }
>> } else {
>> - if (hpd_link_status == ISR_DISCONNECTED)
>> + if (!msm_dp_display->mst_active) {
>> msm_dp_hpd_unplug_handle(dp);
>> + } else if (send_hotplug) {
>> + msm_dp_hpd_unplug_handle(dp);
>> + *send_hotplug = false;
>
> Why? Disconnected events definitely should be reported further.
>
In MST case, MST DRM framework will send the discconnected hotplug by
msm_dp_mst_display_set_mgr_state(&dp->msm_dp_display, false);.
>> + }
>> }
>>
>> pm_runtime_put_sync(&msm_dp_display->pdev->dev);
>>
>> --
>> 2.43.0
>>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification
2026-06-29 14:48 [PATCH 0/5] drm/msm/dp: Add MSM Type-C MST support Yongxing Mou
` (2 preceding siblings ...)
2026-06-29 14:48 ` [PATCH 3/5] drm/msm/dp: suppress bridge hotplug events during MST operation Yongxing Mou
@ 2026-06-29 14:48 ` Yongxing Mou
2026-07-12 10:55 ` Dmitry Baryshkov
2026-06-29 14:48 ` [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled Yongxing Mou
4 siblings, 1 reply; 16+ messages in thread
From: Yongxing Mou @ 2026-06-29 14:48 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno, Yongxing Mou
MST reuses the SST connector bridge to propagate HPD IRQ events through
the bridge chain.
For IRQ_HPD notifications there is no connector state transition to
report. Use connector_status_unknown together with
DRM_CONNECTOR_DP_IRQ_HPD so that the bridge connector framework treats
them as IRQ-only notifications and forwards them without modifying
connector state.
The DP driver handles IRQ_HPD events based on
DRM_CONNECTOR_DP_IRQ_HPD rather than connector status transitions.
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
---
drivers/gpu/drm/msm/dp/dp_display.c | 22 +++++++++-------------
drivers/soc/qcom/pmic_glink_altmode.c | 14 +++++++++-----
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index bc93b566fbca..4ee391cc7165 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1119,14 +1119,10 @@ static irqreturn_t msm_dp_display_irq_thread(int irq, void *dev_id)
drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
connector_status_connected);
- /* Send HPD as connected and distinguish it in the notifier */
- if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) {
- if (dp->msm_dp_display.mst_active)
- msm_dp_irq_hpd_handle(dp);
- else
- drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
- connector_status_connected);
- }
+ if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK)
+ drm_bridge_hpd_notify_extra(dp->msm_dp_display.bridge,
+ connector_status_unknown,
+ DRM_CONNECTOR_DP_IRQ_HPD);
ret = IRQ_HANDLED;
@@ -1781,11 +1777,11 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
drm_dbg_dp(dp->drm_dev, "type=%d link hpd_link_status=0x%x, status=%d\n",
msm_dp_display->connector_type, hpd_link_status, status);
- if (status == connector_status_connected) {
- if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
- extra_status == DRM_CONNECTOR_DP_IRQ_HPD) {
- msm_dp_irq_hpd_handle(dp);
- } else if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
+ if (extra_status == DRM_CONNECTOR_DP_IRQ_HPD ||
+ hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
+ msm_dp_irq_hpd_handle(dp);
+ } else if (status == connector_status_connected) {
+ if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
msm_dp_hpd_unplug_handle(dp);
msm_dp_hpd_plug_handle(dp);
} else {
diff --git a/drivers/soc/qcom/pmic_glink_altmode.c b/drivers/soc/qcom/pmic_glink_altmode.c
index 946eb20b8f83..28ab8cbb5ef9 100644
--- a/drivers/soc/qcom/pmic_glink_altmode.c
+++ b/drivers/soc/qcom/pmic_glink_altmode.c
@@ -373,11 +373,15 @@ static void pmic_glink_altmode_worker(struct work_struct *work)
else
conn_status = connector_status_disconnected;
- drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
- conn_status,
- alt_port->hpd_irq ?
- DRM_CONNECTOR_DP_IRQ_HPD :
- DRM_CONNECTOR_NO_EXTRA_STATUS);
+ if (alt_port->hpd_irq) {
+ drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
+ connector_status_unknown,
+ DRM_CONNECTOR_DP_IRQ_HPD);
+ } else {
+ drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
+ conn_status,
+ DRM_CONNECTOR_NO_EXTRA_STATUS);
+ }
} else if (alt_port->mux_ctrl == MUX_CTRL_STATE_TUNNELING) {
if (alt_port->svid == USB_TYPEC_TBT_SID)
pmic_glink_altmode_enable_tbt(altmode, alt_port);
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification
2026-06-29 14:48 ` [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification Yongxing Mou
@ 2026-07-12 10:55 ` Dmitry Baryshkov
2026-08-17 8:02 ` Yongxing Mou
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Baryshkov @ 2026-07-12 10:55 UTC (permalink / raw)
To: Yongxing Mou
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On Mon, Jun 29, 2026 at 10:48:06PM +0800, Yongxing Mou wrote:
> MST reuses the SST connector bridge to propagate HPD IRQ events through
> the bridge chain.
>
> For IRQ_HPD notifications there is no connector state transition to
> report. Use connector_status_unknown together with
> DRM_CONNECTOR_DP_IRQ_HPD so that the bridge connector framework treats
> them as IRQ-only notifications and forwards them without modifying
> connector state.
>
> The DP driver handles IRQ_HPD events based on
> DRM_CONNECTOR_DP_IRQ_HPD rather than connector status transitions.
>
> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
> ---
> drivers/gpu/drm/msm/dp/dp_display.c | 22 +++++++++-------------
> drivers/soc/qcom/pmic_glink_altmode.c | 14 +++++++++-----
And which tree (and why) would be able to merge this patch?
> 2 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index bc93b566fbca..4ee391cc7165 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1119,14 +1119,10 @@ static irqreturn_t msm_dp_display_irq_thread(int irq, void *dev_id)
> drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
> connector_status_connected);
>
> - /* Send HPD as connected and distinguish it in the notifier */
> - if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) {
> - if (dp->msm_dp_display.mst_active)
> - msm_dp_irq_hpd_handle(dp);
> - else
> - drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
> - connector_status_connected);
> - }
> + if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK)
> + drm_bridge_hpd_notify_extra(dp->msm_dp_display.bridge,
> + connector_status_unknown,
It's _not_ unknown.
> + DRM_CONNECTOR_DP_IRQ_HPD);
This should be fixed in the MST patchset. You should not be doing any
actual handling in the ISR routing.
>
> ret = IRQ_HANDLED;
>
> @@ -1781,11 +1777,11 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
> drm_dbg_dp(dp->drm_dev, "type=%d link hpd_link_status=0x%x, status=%d\n",
> msm_dp_display->connector_type, hpd_link_status, status);
>
> - if (status == connector_status_connected) {
> - if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
> - extra_status == DRM_CONNECTOR_DP_IRQ_HPD) {
> - msm_dp_irq_hpd_handle(dp);
> - } else if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
> + if (extra_status == DRM_CONNECTOR_DP_IRQ_HPD ||
> + hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
> + msm_dp_irq_hpd_handle(dp);
ANd here you missed the case when IRQ_HPD is being reported together
with the first HPD event.
> + } else if (status == connector_status_connected) {
> + if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
> msm_dp_hpd_unplug_handle(dp);
> msm_dp_hpd_plug_handle(dp);
> } else {
> diff --git a/drivers/soc/qcom/pmic_glink_altmode.c b/drivers/soc/qcom/pmic_glink_altmode.c
> index 946eb20b8f83..28ab8cbb5ef9 100644
> --- a/drivers/soc/qcom/pmic_glink_altmode.c
> +++ b/drivers/soc/qcom/pmic_glink_altmode.c
> @@ -373,11 +373,15 @@ static void pmic_glink_altmode_worker(struct work_struct *work)
> else
> conn_status = connector_status_disconnected;
>
> - drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
> - conn_status,
> - alt_port->hpd_irq ?
> - DRM_CONNECTOR_DP_IRQ_HPD :
> - DRM_CONNECTOR_NO_EXTRA_STATUS);
> + if (alt_port->hpd_irq) {
> + drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
> + connector_status_unknown,
And this is completely wrong. The AltMode driver (btw, you also missed
the normal altmode driver for DP) doesn't know if it should handle the
events in some way. It should report the HPD and IRQ_HPD as is.
> + DRM_CONNECTOR_DP_IRQ_HPD);
> + } else {
> + drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
> + conn_status,
> + DRM_CONNECTOR_NO_EXTRA_STATUS);
> + }
> } else if (alt_port->mux_ctrl == MUX_CTRL_STATE_TUNNELING) {
> if (alt_port->svid == USB_TYPEC_TBT_SID)
> pmic_glink_altmode_enable_tbt(altmode, alt_port);
>
> --
> 2.43.0
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification
2026-07-12 10:55 ` Dmitry Baryshkov
@ 2026-08-17 8:02 ` Yongxing Mou
0 siblings, 0 replies; 16+ messages in thread
From: Yongxing Mou @ 2026-08-17 8:02 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On 7/12/2026 6:55 PM, Dmitry Baryshkov wrote:
> On Mon, Jun 29, 2026 at 10:48:06PM +0800, Yongxing Mou wrote:
>> MST reuses the SST connector bridge to propagate HPD IRQ events through
>> the bridge chain.
>>
>> For IRQ_HPD notifications there is no connector state transition to
>> report. Use connector_status_unknown together with
>> DRM_CONNECTOR_DP_IRQ_HPD so that the bridge connector framework treats
>> them as IRQ-only notifications and forwards them without modifying
>> connector state.
>>
>> The DP driver handles IRQ_HPD events based on
>> DRM_CONNECTOR_DP_IRQ_HPD rather than connector status transitions.
>>
>> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
>> ---
>> drivers/gpu/drm/msm/dp/dp_display.c | 22 +++++++++-------------
>> drivers/soc/qcom/pmic_glink_altmode.c | 14 +++++++++-----
>
> And which tree (and why) would be able to merge this patch?
>
Emm , I will split the patch and reorganize it.
>> 2 files changed, 18 insertions(+), 18 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
>> index bc93b566fbca..4ee391cc7165 100644
>> --- a/drivers/gpu/drm/msm/dp/dp_display.c
>> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
>> @@ -1119,14 +1119,10 @@ static irqreturn_t msm_dp_display_irq_thread(int irq, void *dev_id)
>> drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
>> connector_status_connected);
>>
>> - /* Send HPD as connected and distinguish it in the notifier */
>> - if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) {
>> - if (dp->msm_dp_display.mst_active)
>> - msm_dp_irq_hpd_handle(dp);
>> - else
>> - drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
>> - connector_status_connected);
>> - }
>> + if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK)
>> + drm_bridge_hpd_notify_extra(dp->msm_dp_display.bridge,
>> + connector_status_unknown,
>
> It's _not_ unknown.
>
Same as my reply to 2/5 -- the status is indeed not unknown here, and
using connector_status_unknown as a sentinel in v1 is not appropriate.
I will fix this in v2 along the direction discussed on 2/5.
>> + DRM_CONNECTOR_DP_IRQ_HPD);
>
> This should be fixed in the MST patchset. You should not be doing any
> actual handling in the ISR routing.
>
>>
>> ret = IRQ_HANDLED;
>>
>> @@ -1781,11 +1777,11 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
>> drm_dbg_dp(dp->drm_dev, "type=%d link hpd_link_status=0x%x, status=%d\n",
>> msm_dp_display->connector_type, hpd_link_status, status);
>>
>> - if (status == connector_status_connected) {
>> - if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
>> - extra_status == DRM_CONNECTOR_DP_IRQ_HPD) {
>> - msm_dp_irq_hpd_handle(dp);
>> - } else if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
>> + if (extra_status == DRM_CONNECTOR_DP_IRQ_HPD ||
>> + hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
>> + msm_dp_irq_hpd_handle(dp);
>
> ANd here you missed the case when IRQ_HPD is being reported together
> with the first HPD event.
>
Yes, will fix it next patchset.
>> + } else if (status == connector_status_connected) {
>> + if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
>> msm_dp_hpd_unplug_handle(dp);
>> msm_dp_hpd_plug_handle(dp);
>> } else {
>> diff --git a/drivers/soc/qcom/pmic_glink_altmode.c b/drivers/soc/qcom/pmic_glink_altmode.c
>> index 946eb20b8f83..28ab8cbb5ef9 100644
>> --- a/drivers/soc/qcom/pmic_glink_altmode.c
>> +++ b/drivers/soc/qcom/pmic_glink_altmode.c
>> @@ -373,11 +373,15 @@ static void pmic_glink_altmode_worker(struct work_struct *work)
>> else
>> conn_status = connector_status_disconnected;
>>
>> - drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
>> - conn_status,
>> - alt_port->hpd_irq ?
>> - DRM_CONNECTOR_DP_IRQ_HPD :
>> - DRM_CONNECTOR_NO_EXTRA_STATUS);
>> + if (alt_port->hpd_irq) {
>> + drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
>> + connector_status_unknown,
>
> And this is completely wrong. The AltMode driver (btw, you also missed
> the normal altmode driver for DP) doesn't know if it should handle the
> events in some way. It should report the HPD and IRQ_HPD as is.
>
Will fix it next patchset .
>> + DRM_CONNECTOR_DP_IRQ_HPD);
>> + } else {
>> + drm_aux_hpd_bridge_notify_extra(&alt_port->bridge->dev,
>> + conn_status,
>> + DRM_CONNECTOR_NO_EXTRA_STATUS);
>> + }
>> } else if (alt_port->mux_ctrl == MUX_CTRL_STATE_TUNNELING) {
>> if (alt_port->svid == USB_TYPEC_TBT_SID)
>> pmic_glink_altmode_enable_tbt(altmode, alt_port);
>>
>> --
>> 2.43.0
>>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled
2026-06-29 14:48 [PATCH 0/5] drm/msm/dp: Add MSM Type-C MST support Yongxing Mou
` (3 preceding siblings ...)
2026-06-29 14:48 ` [PATCH 4/5] drm/msm/dp: report IRQ_HPD as an IRQ-only notification Yongxing Mou
@ 2026-06-29 14:48 ` Yongxing Mou
2026-07-12 10:56 ` Dmitry Baryshkov
4 siblings, 1 reply; 16+ messages in thread
From: Yongxing Mou @ 2026-06-29 14:48 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio
Cc: dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno, Yongxing Mou
When MST becomes active, the initial HPD plug notification updates the
SST connector state to connected.
However, the subsequent SST connector detect path reports disconnected
while MST is enabled. This connected -> disconnected transition is then
observed by the polling logic and may result in an unnecessary hotplug
event.
Set the SST connector state to disconnected immediately after MST is
initialized so that the detect path does not introduce a transient
state change.
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
---
drivers/gpu/drm/msm/dp/dp_display.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 4ee391cc7165..f8ca60d6d714 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -352,8 +352,10 @@ static int msm_dp_display_process_hpd_high(struct msm_dp_display_private *dp)
if (dp->max_stream > 1 && drm_dp_read_mst_cap(dp->aux, dp->panel->dpcd))
msm_dp_display_mst_init(dp);
- if (dp->msm_dp_display.mst_active)
+ if (dp->msm_dp_display.mst_active) {
+ connector->status = connector_status_disconnected;
msm_dp_mst_display_set_mgr_state(&dp->msm_dp_display, true);
+ }
msm_dp_link_reset_phy_params_vx_px(dp->link);
--
2.43.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled
2026-06-29 14:48 ` [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled Yongxing Mou
@ 2026-07-12 10:56 ` Dmitry Baryshkov
2026-08-17 8:01 ` Yongxing Mou
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Baryshkov @ 2026-07-12 10:56 UTC (permalink / raw)
To: Yongxing Mou
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On Mon, Jun 29, 2026 at 10:48:07PM +0800, Yongxing Mou wrote:
> When MST becomes active, the initial HPD plug notification updates the
> SST connector state to connected.
>
> However, the subsequent SST connector detect path reports disconnected
> while MST is enabled. This connected -> disconnected transition is then
> observed by the polling logic and may result in an unnecessary hotplug
> event.
>
> Set the SST connector state to disconnected immediately after MST is
> initialized so that the detect path does not introduce a transient
> state change.
>
> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
> ---
> drivers/gpu/drm/msm/dp/dp_display.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 4ee391cc7165..f8ca60d6d714 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -352,8 +352,10 @@ static int msm_dp_display_process_hpd_high(struct msm_dp_display_private *dp)
> if (dp->max_stream > 1 && drm_dp_read_mst_cap(dp->aux, dp->panel->dpcd))
> msm_dp_display_mst_init(dp);
>
> - if (dp->msm_dp_display.mst_active)
> + if (dp->msm_dp_display.mst_active) {
> + connector->status = connector_status_disconnected;
> msm_dp_mst_display_set_mgr_state(&dp->msm_dp_display, true);
This should be a part of the MST series.
> + }
>
> msm_dp_link_reset_phy_params_vx_px(dp->link);
>
>
> --
> 2.43.0
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 5/5] drm/msm/dp: mark the SST connector disconnected when MST is enabled
2026-07-12 10:56 ` Dmitry Baryshkov
@ 2026-08-17 8:01 ` Yongxing Mou
0 siblings, 0 replies; 16+ messages in thread
From: Yongxing Mou @ 2026-08-17 8:01 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Luca Ceresoli, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Rob Clark,
Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang, Sean Paul,
Marijn Suijten, Tomi Valkeinen, Bjorn Andersson, Konrad Dybcio,
dri-devel, linux-kernel, linux-amlogic, linux-arm-kernel,
linux-arm-msm, freedreno
On 7/12/2026 6:56 PM, Dmitry Baryshkov wrote:
> On Mon, Jun 29, 2026 at 10:48:07PM +0800, Yongxing Mou wrote:
>> When MST becomes active, the initial HPD plug notification updates the
>> SST connector state to connected.
>>
>> However, the subsequent SST connector detect path reports disconnected
>> while MST is enabled. This connected -> disconnected transition is then
>> observed by the polling logic and may result in an unnecessary hotplug
>> event.
>>
>> Set the SST connector state to disconnected immediately after MST is
>> initialized so that the detect path does not introduce a transient
>> state change.
>>
>> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
>> ---
>> drivers/gpu/drm/msm/dp/dp_display.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
>> index 4ee391cc7165..f8ca60d6d714 100644
>> --- a/drivers/gpu/drm/msm/dp/dp_display.c
>> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
>> @@ -352,8 +352,10 @@ static int msm_dp_display_process_hpd_high(struct msm_dp_display_private *dp)
>> if (dp->max_stream > 1 && drm_dp_read_mst_cap(dp->aux, dp->panel->dpcd))
>> msm_dp_display_mst_init(dp);
>>
>> - if (dp->msm_dp_display.mst_active)
>> + if (dp->msm_dp_display.mst_active) {
>> + connector->status = connector_status_disconnected;
>> msm_dp_mst_display_set_mgr_state(&dp->msm_dp_display, true);
>
> This should be a part of the MST series.
>
Got it .
>> + }
>>
>> msm_dp_link_reset_phy_params_vx_px(dp->link);
>>
>>
>> --
>> 2.43.0
>>
>
^ permalink raw reply [flat|nested] 16+ messages in thread