summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2020-02-14 20:37:19 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2020-02-14 20:37:19 -0800
commitb18685b58b09c0e8d59a06565d348ec5312b8714 (patch)
treef53e0580310de979942f1237bd815c6c4639be63
parent3b4de8c84bdcf7a29034f4317fb4b4c7fe89f1a7 (diff)
parent1ee18008ca3b56bbb62033958f1223e5544b1457 (diff)
downloaddisplay-drivers-b18685b58b09c0e8d59a06565d348ec5312b8714.tar.gz
Merge "disp: msm: sde: flush crtc event thread before idle notification"
-rw-r--r--msm/sde/sde_kms.c11
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);