diff options
| author | Narender Ankam <nankam@codeaurora.org> | 2020-03-19 13:32:33 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2020-04-07 04:38:10 -0700 |
| commit | 85d75e131d471e8d0bdcba22077913f6d3508e1e (patch) | |
| tree | 3e238520b15ced0c27f1c0deac3d6c73a6d7723d | |
| parent | f63159db8cf43b9060182c40c37067ec2fcfd461 (diff) | |
msm: mdss: hdcp: reauth on rxstatus ddc read failure
If maximum number of retries reached to read RxStatus over DDC and
still failed to read RxStatus, fail HDCP 2.2 authentication and try
to reauthenticate downstream HDCP device.
Change-Id: I42e39bd2ceeed038aff74789c5e18a38e7ee35d6
Signed-off-by: Narender Ankam <nankam@codeaurora.org>
Signed-off-by: Ramendra Kumar <ramendra@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_hdmi_hdcp2p2.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_hdmi_hdcp2p2.c b/drivers/video/fbdev/msm/mdss_hdmi_hdcp2p2.c index b922662d25aa..6399be1328e2 100644 --- a/drivers/video/fbdev/msm/mdss_hdmi_hdcp2p2.c +++ b/drivers/video/fbdev/msm/mdss_hdmi_hdcp2p2.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015-2017,2019-2020, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -740,6 +740,14 @@ static void hdmi_hdcp2p2_recv_msg(struct hdmi_hdcp2p2_ctrl *ctrl) goto exit; } + if (ddc_data->ddc_max_retries_fail) { + pr_debug("rxstatus ddc failed\n"); + + ddc_data->ddc_max_retries_fail = false; + rc = -ENOLINK; + goto exit; + } + if (ddc_data->reauth_req) { ddc_data->reauth_req = false; @@ -897,6 +905,15 @@ static void hdmi_hdcp2p2_link_work(struct kthread_work *work) ddc_data = &ddc_ctrl->hdcp2p2_ddc_data; + if (ddc_data->ddc_max_retries_fail) { + pr_debug("rxstatus ddc failed\n"); + + ddc_data->ddc_max_retries_fail = false; + rc = -ENOLINK; + cdata.cmd = HDCP_LIB_WKUP_CMD_STOP; + goto exit; + } + if (ddc_data->reauth_req) { pr_debug("reauth triggered by sink\n"); |
