diff options
author | qctecmdr <qctecmdr@localhost> | 2020-02-14 20:37:19 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-02-14 20:37:19 -0800 |
commit | b18685b58b09c0e8d59a06565d348ec5312b8714 (patch) | |
tree | f53e0580310de979942f1237bd815c6c4639be63 | |
parent | 3b4de8c84bdcf7a29034f4317fb4b4c7fe89f1a7 (diff) | |
parent | 1ee18008ca3b56bbb62033958f1223e5544b1457 (diff) | |
download | display-drivers-b18685b58b09c0e8d59a06565d348ec5312b8714.tar.gz |
Merge "disp: msm: sde: flush crtc event thread before idle notification"
-rw-r--r-- | msm/sde/sde_kms.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index 9f2717a8..f7636880 100644 --- a/msm/sde/sde_kms.c +++ b/msm/sde/sde_kms.c @@ -2743,7 +2743,7 @@ end: static void _sde_kms_pm_suspend_idle_helper(struct sde_kms *sde_kms, struct device *dev) { - int i, ret; + int i, ret, crtc_id = 0; struct drm_device *ddev = dev_get_drvdata(dev); struct drm_connector *conn; struct drm_connector_list_iter conn_iter; @@ -2762,12 +2762,17 @@ static void _sde_kms_pm_suspend_idle_helper(struct sde_kms *sde_kms, ret = sde_encoder_wait_for_event(conn->encoder, MSM_ENC_TX_COMPLETE); - if (ret && ret != -EWOULDBLOCK) + if (ret && ret != -EWOULDBLOCK) { SDE_ERROR( "[conn: %d] wait for commit done returned %d\n", conn->base.id, ret); - else if (!ret) + } else if (!ret) { + crtc_id = drm_crtc_index(conn->state->crtc); + if (priv->event_thread[crtc_id].thread) + kthread_flush_worker( + &priv->event_thread[crtc_id].worker); sde_encoder_idle_request(conn->encoder); + } } drm_connector_list_iter_end(&conn_iter); |