summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNarender Ankam <nankam@codeaurora.org>2020-03-19 13:32:33 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2020-04-07 04:38:10 -0700
commit85d75e131d471e8d0bdcba22077913f6d3508e1e (patch)
tree3e238520b15ced0c27f1c0deac3d6c73a6d7723d
parentf63159db8cf43b9060182c40c37067ec2fcfd461 (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.c19
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");