From 8eba91adf8db1f91b5d4dd045c2a79288dd1d19c Mon Sep 17 00:00:00 2001 From: Narender Ankam Date: Tue, 14 Nov 2017 18:40:15 +0530 Subject: [PATCH] msm: mdss: hdmi: fix HDCP1.4 authentication issues After part I authentication, SW DDC is not disabled and because of this, we observe arbitration issues during part III authentication. Disable SW DDC before starting part III of HDCP authentication. Fail part II of authentication with repeater if its device count is zero. Change-Id: I72f5b1115c094d4a72ae2b324f3903cdb195e5fe Signed-off-by: Narender Ankam --- drivers/video/fbdev/msm/mdss_hdcp_1x.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/msm/mdss_hdcp_1x.c b/drivers/video/fbdev/msm/mdss_hdcp_1x.c index 2dc9c8f96c5b..2c86c8148211 100644 --- a/drivers/video/fbdev/msm/mdss_hdcp_1x.c +++ b/drivers/video/fbdev/msm/mdss_hdcp_1x.c @@ -1236,8 +1236,10 @@ static int hdcp_1x_authentication_part2(struct hdcp_1x *hdcp) goto error; /* do not proceed further if no device connected */ - if (!hdcp->current_tp.dev_count) + if (!hdcp->current_tp.dev_count) { + rc = -EINVAL; goto error; + } rc = hdcp_1x_write_ksv_fifo(hdcp); } while (--v_retry && rc); @@ -1344,7 +1346,7 @@ static void hdcp_1x_auth_work(struct work_struct *work) goto end; } else { hdcp->hdcp_state = HDCP_STATE_AUTHENTICATED; - goto end; + goto disable_sw_ddc; } hdcp->ksv_ready = false; @@ -1353,6 +1355,7 @@ static void hdcp_1x_auth_work(struct work_struct *work) if (rc) goto end; +disable_sw_ddc: /* * Disabling software DDC before going into part3 to make sure * there is no Arbitration between software and hardware for DDC