FAILED: patch "[PATCH] drm/msm/dp: check sink_count before update is_connected" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From d9aa6571b28ba0022de1e48801ff03a1854c7ef2 Mon Sep 17 00:00:00 2001
From: Kuogee Hsieh <[email protected]>
Date: Wed, 21 Apr 2021 16:37:35 -0700
Subject: [PATCH] drm/msm/dp: check sink_count before update is_connected
status
Link status is different from display connected status in the case of something like an Apple dongle where the type-c plug can be connected, and therefore the link is connected, but no sink is connected until an HDMI cable is plugged into the dongle. The sink_count of DPCD of dongle will increase to 1 once an HDMI cable is plugged into the dongle so that display connected status will become true. This checking also apply at pm_resume.
Changes in v4:
-- none
drivers/gpu/drm/msm/dp/dp_display.c +8 -7
@@ -586,10 +586,8 @@ static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data)mutex_lock (&dp->event_mutex); state = dp->hpd_state; -if (state ==ST_CONNECT_PENDING ) { -dp_display_enable (dp,0 ); +if (state ==ST_CONNECT_PENDING ) dp->hpd_state =ST_CONNECTED ; - }mutex_unlock (&dp->event_mutex);
@@ -669,10 +667,8 @@ static int dp_disconnect_pending_timeout(struct dp_display_private *dp, u32 datamutex_lock (&dp->event_mutex); state = dp->hpd_state; -if (state ==ST_DISCONNECT_PENDING ) { -dp_display_disable (dp,0 ); +if (state ==ST_DISCONNECT_PENDING ) dp->hpd_state =ST_DISCONNECTED ; - }mutex_unlock (&dp->event_mutex);
@@ -1272,7 +1268,12 @@ static int dp_pm_resume(struct device *dev) status =dp_catalog_link_is_connected (dp->catalog); -if (status) +/* +* can not declared display is connected unless +* HDMI cable is plugged in and sink_count of +* dongle become 1 +*/ +if (status && dp->link->sink_count) dp->dp_display.is_connected = true;else dp->dp_display.is_connected = false;