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 <nankam@codeaurora.org>
This commit is contained in:
Narender Ankam 2017-11-14 18:40:15 +05:30 committed by Gerrit - the friendly Code Review server
parent c3b8576cf9
commit 8eba91adf8

View file

@ -1236,8 +1236,10 @@ static int hdcp_1x_authentication_part2(struct hdcp_1x *hdcp)
goto error; goto error;
/* do not proceed further if no device connected */ /* do not proceed further if no device connected */
if (!hdcp->current_tp.dev_count) if (!hdcp->current_tp.dev_count) {
rc = -EINVAL;
goto error; goto error;
}
rc = hdcp_1x_write_ksv_fifo(hdcp); rc = hdcp_1x_write_ksv_fifo(hdcp);
} while (--v_retry && rc); } while (--v_retry && rc);
@ -1344,7 +1346,7 @@ static void hdcp_1x_auth_work(struct work_struct *work)
goto end; goto end;
} else { } else {
hdcp->hdcp_state = HDCP_STATE_AUTHENTICATED; hdcp->hdcp_state = HDCP_STATE_AUTHENTICATED;
goto end; goto disable_sw_ddc;
} }
hdcp->ksv_ready = false; hdcp->ksv_ready = false;
@ -1353,6 +1355,7 @@ static void hdcp_1x_auth_work(struct work_struct *work)
if (rc) if (rc)
goto end; goto end;
disable_sw_ddc:
/* /*
* Disabling software DDC before going into part3 to make sure * Disabling software DDC before going into part3 to make sure
* there is no Arbitration between software and hardware for DDC * there is no Arbitration between software and hardware for DDC