diff options
author | qctecmdr <qctecmdr@localhost> | 2020-02-20 19:02:08 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-02-20 19:02:08 -0800 |
commit | a787730c248ade20c0db7006c81dc5ece36fbb50 (patch) | |
tree | 670f1c4ec31f4da88cd8f760578e5593c271d650 /msm/dp/dp_display.c | |
parent | 0285e07a4938a5d41ce3a1f57ea3c55f6a1d49a9 (diff) | |
parent | 86fe694d214f7d5ee3e011239538b481779c2f38 (diff) | |
download | display-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.c | 18 |
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); |