summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev/msm
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 /drivers/video/fbdev/msm
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>
Diffstat (limited to 'drivers/video/fbdev/msm')
-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");