From 8832c1bcedeb429d072639cc45c5c89ee7910189 Mon Sep 17 00:00:00 2001 From: Aravind Venkateswaran Date: Fri, 14 Jul 2017 21:40:02 -0700 Subject: [PATCH] msm: mdss: hdcp2p2: fix check for sink support for HDCP 2.x Current implementation only checks if the sink is HDCP capable. In addition, it is required that the source also checks for the HDCP version supported by the sink prior to initiating HDCP 2.x authentication sequence. CRs-Fixed: 2062951 Change-Id: I24901202a0abc2ff4336ab9c6c2fd708a53559f2 Signed-off-by: Aravind Venkateswaran --- drivers/video/fbdev/msm/mdss_dp_hdcp2p2.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_dp_hdcp2p2.c b/drivers/video/fbdev/msm/mdss_dp_hdcp2p2.c index 5a677dfe7484..36a062dc5207 100644 --- a/drivers/video/fbdev/msm/mdss_dp_hdcp2p2.c +++ b/drivers/video/fbdev/msm/mdss_dp_hdcp2p2.c @@ -894,22 +894,24 @@ static bool dp_hdcp2p2_supported(struct dp_hdcp2p2_ctrl *ctrl) { struct edp_cmd cmd = {0}; const u32 offset = 0x6921d; - u8 buf; + u8 buf[3]; cmd.read = 1; cmd.addr = offset; - cmd.len = sizeof(buf); - cmd.out_buf = &buf; + cmd.len = ARRAY_SIZE(buf); + cmd.out_buf = buf; if (dp_aux_read(ctrl->init_data.cb_data, &cmd)) { pr_err("RxCaps read failed\n"); goto error; } - pr_debug("rxcaps 0x%x\n", buf); + pr_debug("HDCP_CAPABLE=%lu\n", (buf[2] & BIT(1)) >> 1); + pr_debug("VERSION=%d\n", buf[0]); - if (buf & BIT(1)) + if ((buf[2] & BIT(1)) && (buf[0] == 0x2)) return true; + error: return false; }