diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index a2dda7f356..8395d784b9 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -1052,16 +1052,21 @@ error_ctrl: return rc; } -static void dp_display_host_ready(struct dp_display_private *dp) +static int dp_display_host_ready(struct dp_display_private *dp) { + int rc = 0; + if (!dp_display_state_is(DP_STATE_INITIALIZED)) { - dp_display_state_show("[not initialized]"); - return; + rc = dp_display_host_init(dp); + if (rc) { + dp_display_state_show("[not initialized]"); + return rc; + } } if (dp_display_state_is(DP_STATE_READY)) { dp_display_state_log("[already ready]"); - return; + return rc; } /* @@ -1089,6 +1094,7 @@ static void dp_display_host_ready(struct dp_display_private *dp) dp_display_state_add(DP_STATE_READY); /* log this as it results from user action of cable connection */ DP_INFO("[OK]\n"); + return rc; } static void dp_display_host_unready(struct dp_display_private *dp) @@ -1191,7 +1197,11 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp) dp_display_state_remove(DP_STATE_SRC_PWRDN); } - dp_display_host_ready(dp); + rc = dp_display_host_ready(dp); + if (rc) { + dp_display_state_show("[ready failed]"); + goto end; + } dp->link->psm_config(dp->link, &dp->panel->link_info, false); dp->debug->psm_enabled = false; @@ -2354,7 +2364,11 @@ static int dp_display_prepare(struct dp_display *dp_display, void *panel) } /* For supporting DP_PANEL_SRC_INITIATED_POWER_DOWN case */ - dp_display_host_ready(dp); + rc = dp_display_host_ready(dp); + if (rc) { + dp_display_state_show("[ready failed]"); + goto end; + } if (dp->debug->psm_enabled) { dp->link->psm_config(dp->link, &dp->panel->link_info, false);