Messages in this thread | | | Date | Thu, 15 Apr 2021 10:40:44 -0700 | From | khsieh@codeauro ... | Subject | Re: [PATCH v2 2/3] drm/msm/dp: initialize audio_comp when audio starts |
| |
On 2021-04-14 14:22, Stephen Boyd wrote: > Quoting Kuogee Hsieh (2021-04-14 14:02:50) >> Initialize audio_comp when audio starts and wait for audio_comp at >> dp_display_disable(). This will take care of both dongle unplugged >> and display off (suspend) cases. >> >> Changes in v2: >> -- add dp_display_start_audio() >> >> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org> > > Looking better. Thanks! > >> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c >> b/drivers/gpu/drm/msm/dp/dp_display.c >> index 0ba71c7..8a69bcd 100644 >> --- a/drivers/gpu/drm/msm/dp/dp_display.c >> +++ b/drivers/gpu/drm/msm/dp/dp_display.c >> @@ -177,6 +177,14 @@ static int dp_del_event(struct dp_display_private >> *dp_priv, u32 event) >> >> return 0; >> } >> +void dp_display_start_audio(struct msm_dp *dp_display) > > Please unstick this from previous function by adding a newline above. > >> +{ >> + struct dp_display_private *dp; >> + >> + dp = container_of(dp_display, struct dp_display_private, >> dp_display); >> + >> + reinit_completion(&dp->audio_comp); >> +} >> >> void dp_display_signal_audio_complete(struct msm_dp *dp_display) >> { >> @@ -648,10 +656,6 @@ static int dp_hpd_unplug_handle(struct >> dp_display_private *dp, u32 data) >> /* start sentinel checking in case of missing uevent */ >> dp_add_event(dp, EV_DISCONNECT_PENDING_TIMEOUT, 0, >> DP_TIMEOUT_5_SECOND); >> >> - /* signal the disconnect event early to ensure proper teardown >> */ > > This doesn't need to be done early anymore? Please mention why in the > commit text. > This is my mistake, it still need signal audio here, will fix it
>> - reinit_completion(&dp->audio_comp); >> - dp_display_handle_plugged_change(g_dp_display, false); >> - >> dp_catalog_hpd_config_intr(dp->catalog, >> DP_DP_HPD_PLUG_INT_MASK | >> DP_DP_IRQ_HPD_INT_MASK, true); >> >> @@ -894,7 +898,6 @@ static int dp_display_disable(struct >> dp_display_private *dp, u32 data) >> /* wait only if audio was enabled */ >> if (dp_display->audio_enabled) { >> /* signal the disconnect event */ >> - reinit_completion(&dp->audio_comp); >> dp_display_handle_plugged_change(dp_display, false); >> if (!wait_for_completion_timeout(&dp->audio_comp, >> HZ * 5))
| |