summaryrefslogtreecommitdiff
path: root/msm/dp/dp_display.c
diff options
context:
space:
mode:
Diffstat (limited to 'msm/dp/dp_display.c')
-rw-r--r--msm/dp/dp_display.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c
index cfae5da7..2ff34baf 100644
--- a/msm/dp/dp_display.c
+++ b/msm/dp/dp_display.c
@@ -1340,6 +1340,7 @@ static void dp_display_attention_work(struct work_struct *work)
{
struct dp_display_private *dp = container_of(work,
struct dp_display_private, attention_work);
+ int rc = 0;
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY, dp->state);
mutex_lock(&dp->session_lock);
@@ -1403,16 +1404,20 @@ static void dp_display_attention_work(struct work_struct *work)
if (dp->link->sink_request & DP_TEST_LINK_TRAINING) {
SDE_EVT32_EXTERNAL(dp->state, DP_TEST_LINK_TRAINING);
dp->link->send_test_response(dp->link);
- dp->ctrl->link_maintenance(dp->ctrl);
+ rc = dp->ctrl->link_maintenance(dp->ctrl);
}
if (dp->link->sink_request & DP_LINK_STATUS_UPDATED) {
SDE_EVT32_EXTERNAL(dp->state, DP_LINK_STATUS_UPDATED);
- dp->ctrl->link_maintenance(dp->ctrl);
+ rc = dp->ctrl->link_maintenance(dp->ctrl);
}
- dp_audio_enable(dp, true);
+ if (!rc)
+ dp_audio_enable(dp, true);
+
mutex_unlock(&dp->session_lock);
+ if (rc)
+ goto end;
if (dp->link->sink_request & (DP_TEST_LINK_PHY_TEST_PATTERN |
DP_TEST_LINK_TRAINING))
@@ -1436,6 +1441,8 @@ cp_irq:
mst_attention:
dp_display_mst_attention(dp);
+
+end:
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
}