@@ -178,6 +178,15 @@ static int dp_del_event(struct dp_display_private *dp_priv, u32 event)
178178 return 0 ;
179179}
180180
181+ void dp_display_signal_audio_start (struct msm_dp * dp_display )
182+ {
183+ struct dp_display_private * dp ;
184+
185+ dp = container_of (dp_display , struct dp_display_private , dp_display );
186+
187+ reinit_completion (& dp -> audio_comp );
188+ }
189+
181190void dp_display_signal_audio_complete (struct msm_dp * dp_display )
182191{
183192 struct dp_display_private * dp ;
@@ -586,10 +595,8 @@ static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data)
586595 mutex_lock (& dp -> event_mutex );
587596
588597 state = dp -> hpd_state ;
589- if (state == ST_CONNECT_PENDING ) {
590- dp_display_enable (dp , 0 );
598+ if (state == ST_CONNECT_PENDING )
591599 dp -> hpd_state = ST_CONNECTED ;
592- }
593600
594601 mutex_unlock (& dp -> event_mutex );
595602
@@ -651,7 +658,6 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data)
651658 dp_add_event (dp , EV_DISCONNECT_PENDING_TIMEOUT , 0 , DP_TIMEOUT_5_SECOND );
652659
653660 /* signal the disconnect event early to ensure proper teardown */
654- reinit_completion (& dp -> audio_comp );
655661 dp_display_handle_plugged_change (g_dp_display , false);
656662
657663 dp_catalog_hpd_config_intr (dp -> catalog , DP_DP_HPD_PLUG_INT_MASK |
@@ -669,10 +675,8 @@ static int dp_disconnect_pending_timeout(struct dp_display_private *dp, u32 data
669675 mutex_lock (& dp -> event_mutex );
670676
671677 state = dp -> hpd_state ;
672- if (state == ST_DISCONNECT_PENDING ) {
673- dp_display_disable (dp , 0 );
678+ if (state == ST_DISCONNECT_PENDING )
674679 dp -> hpd_state = ST_DISCONNECTED ;
675- }
676680
677681 mutex_unlock (& dp -> event_mutex );
678682
@@ -898,7 +902,6 @@ static int dp_display_disable(struct dp_display_private *dp, u32 data)
898902 /* wait only if audio was enabled */
899903 if (dp_display -> audio_enabled ) {
900904 /* signal the disconnect event */
901- reinit_completion (& dp -> audio_comp );
902905 dp_display_handle_plugged_change (dp_display , false);
903906 if (!wait_for_completion_timeout (& dp -> audio_comp ,
904907 HZ * 5 ))
@@ -1272,7 +1275,12 @@ static int dp_pm_resume(struct device *dev)
12721275
12731276 status = dp_catalog_link_is_connected (dp -> catalog );
12741277
1275- if (status )
1278+ /*
1279+ * can not declared display is connected unless
1280+ * HDMI cable is plugged in and sink_count of
1281+ * dongle become 1
1282+ */
1283+ if (status && dp -> link -> sink_count )
12761284 dp -> dp_display .is_connected = true;
12771285 else
12781286 dp -> dp_display .is_connected = false;
0 commit comments