Message ID | 1627059339-12142-1-git-send-email-khsieh@codeaurora.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [v2] drm/msm/dp: signal audio plugged change at dp_pm_resume | expand |
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;
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;