summaryrefslogtreecommitdiff
path: root/msm/dp/dp_display.c
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2020-02-20 19:02:08 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2020-02-20 19:02:08 -0800
commita787730c248ade20c0db7006c81dc5ece36fbb50 (patch)
tree670f1c4ec31f4da88cd8f760578e5593c271d650 /msm/dp/dp_display.c
parent0285e07a4938a5d41ce3a1f57ea3c55f6a1d49a9 (diff)
parent86fe694d214f7d5ee3e011239538b481779c2f38 (diff)
downloaddisplay-drivers-a787730c248ade20c0db7006c81dc5ece36fbb50.tar.gz
Merge "disp: msm: hdcp: abort queued tasks while processing PM suspend"
Diffstat (limited to 'msm/dp/dp_display.c')
-rw-r--r--msm/dp/dp_display.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c
index ad30e03b..cc702307 100644
--- a/msm/dp/dp_display.c
+++ b/msm/dp/dp_display.c
@@ -401,6 +401,22 @@ static void dp_display_hdcp_deregister_stream(struct dp_display_private *dp,
}
}
+static void dp_display_abort_hdcp(struct dp_display_private *dp,
+ bool abort)
+{
+ u32 i = HDCP_VERSION_2P2;
+ struct dp_hdcp_dev *dev = NULL;
+
+ while (i) {
+ dev = &dp->hdcp.dev[i];
+ i >>= 1;
+ if (!(dp->hdcp.source_cap & dev->ver))
+ continue;
+
+ dev->ops->abort(dev->fd, abort);
+ }
+}
+
static void dp_display_hdcp_cb_work(struct work_struct *work)
{
struct dp_display_private *dp;
@@ -851,6 +867,7 @@ static void dp_display_host_init(struct dp_display_private *dp)
dp->hpd->host_init(dp->hpd, &dp->catalog->hpd);
dp->ctrl->init(dp->ctrl, flip, reset);
enable_irq(dp->irq);
+ dp_display_abort_hdcp(dp, false);
dp_display_state_add(DP_STATE_INITIALIZED);
@@ -928,6 +945,7 @@ static void dp_display_host_deinit(struct dp_display_private *dp)
return;
}
+ dp_display_abort_hdcp(dp, true);
dp->ctrl->deinit(dp->ctrl);
dp->hpd->host_deinit(dp->hpd, &dp->catalog->hpd);
dp->power->deinit(dp->power);