There is a scenario that dp cable is unplugged from DUT during system suspended will cause audio option state does not match real connection state. Fix this problem by Signaling audio plugged change with realtime connection status at dp_pm_resume() so that audio option will be in correct state after system resumed.
Changes in V2: -- correct Fixes tag commit id.
Fixes: f591dbb5fb8c ("drm/msm/dp: power off DP phy at suspend") Signed-off-by: Kuogee Hsieh khsieh@codeaurora.org Reviewed-by: Stephen Boyd swboyd@chromium.org --- drivers/gpu/drm/msm/dp/dp_display.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 78c5301..2b660e9 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1339,6 +1339,10 @@ static int dp_pm_resume(struct device *dev) else dp->dp_display.is_connected = false;
+ dp_display_handle_plugged_change(g_dp_display, + dp->dp_display.is_connected); + + mutex_unlock(&dp->event_mutex);
return 0;
Quoting Kuogee Hsieh (2021-07-23 09:55:39)
There is a scenario that dp cable is unplugged from DUT during system suspended will cause audio option state does not match real connection state. Fix this problem by Signaling audio plugged change with realtime connection status at dp_pm_resume() so that audio option will be in correct state after system resumed.
Changes in V2: -- correct Fixes tag commit id.
Fixes: f591dbb5fb8c ("drm/msm/dp: power off DP phy at suspend") Signed-off-by: Kuogee Hsieh khsieh@codeaurora.org Reviewed-by: Stephen Boyd swboyd@chromium.org
drivers/gpu/drm/msm/dp/dp_display.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 78c5301..2b660e9 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1339,6 +1339,10 @@ static int dp_pm_resume(struct device *dev) else dp->dp_display.is_connected = false;
dp_display_handle_plugged_change(g_dp_display,
Can this be dp_display instead of g_dp_display?
dp->dp_display.is_connected);
mutex_unlock(&dp->event_mutex); return 0;
Quoting Kuogee Hsieh (2021-07-23 09:55:39)
There is a scenario that dp cable is unplugged from DUT during system suspended will cause audio option state does not match real connection state. Fix this problem by Signaling audio plugged change with realtime connection status at dp_pm_resume() so that audio option will be in correct state after system resumed.
Changes in V2: -- correct Fixes tag commit id.
Fixes: f591dbb5fb8c ("drm/msm/dp: power off DP phy at suspend") Signed-off-by: Kuogee Hsieh khsieh@codeaurora.org Reviewed-by: Stephen Boyd swboyd@chromium.org
drivers/gpu/drm/msm/dp/dp_display.c | 4 ++++ 1 file changed, 4 insertions(+)
I noticed that with or without this patch I still have a problem with an apple dongle where if I leave the dongle connected but unplug the HDMI cable during suspend the audio device is still there when I resume. The display looks to be connected in that case too, according to modetest. I don't know if you want to roll that into this patch or make another follow-up patch to fix it, but it seems like the sink count isn't updated on resume? Did commit f591dbb5fb8c break a bunch of logic in here because now the link is powered down properly and so sink_count isn't updated properly?
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 78c5301..2b660e9 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1339,6 +1339,10 @@ static int dp_pm_resume(struct device *dev) else dp->dp_display.is_connected = false;
dp_display_handle_plugged_change(g_dp_display,
dp->dp_display.is_connected);
There's also a double newline here that we should probably remove.
mutex_unlock(&dp->event_mutex); return 0;
dri-devel@lists.freedesktop.org