msm: mdss: hdcp_1x: fix compliance failure
1B-01 DP HDCP compliance test needs either poll RxStatus or wait for CP_IRQ to fetch the list of Downstream devices' KSVs. Currently, hdcp_1x module waits for CP_IRQ but compliance test equipment fails this test as source is unable to read KSVs within allowed time due to software delays. Poll RxStatus register in sink to get KSVs ready status so that KSVs can be read as soon as sink mark them as ready. Also, re-factor the code as per the specification. Change-Id: Ieefa13dfc9e154b005329b01e2769266a1954ddb Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
This commit is contained in:
parent
368fecd7df
commit
8dac9cfe73
2 changed files with 629 additions and 552 deletions
|
@ -558,6 +558,7 @@ static int hdcp_lib_txmtr_init_legacy(struct hdcp_lib_handle *handle);
|
||||||
|
|
||||||
static struct qseecom_handle *hdcp1_handle;
|
static struct qseecom_handle *hdcp1_handle;
|
||||||
static bool hdcp1_supported = true;
|
static bool hdcp1_supported = true;
|
||||||
|
static bool hdcp1_enc_enabled;
|
||||||
|
|
||||||
static const char *hdcp_lib_message_name(int msg_id)
|
static const char *hdcp_lib_message_name(int msg_id)
|
||||||
{
|
{
|
||||||
|
@ -2278,6 +2279,11 @@ int hdcp1_set_enc(bool enable)
|
||||||
if (!hdcp1_supported || !hdcp1_handle)
|
if (!hdcp1_supported || !hdcp1_handle)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (hdcp1_enc_enabled == enable) {
|
||||||
|
pr_debug("already %s\n", enable ? "enabled" : "disabled");
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
/* set keys and request aksv */
|
/* set keys and request aksv */
|
||||||
set_enc_req = (struct hdcp1_set_enc_req *)hdcp1_handle->sbuf;
|
set_enc_req = (struct hdcp1_set_enc_req *)hdcp1_handle->sbuf;
|
||||||
set_enc_req->commandid = HDCP1_SET_ENC_MESSAGE_ID;
|
set_enc_req->commandid = HDCP1_SET_ENC_MESSAGE_ID;
|
||||||
|
@ -2302,7 +2308,8 @@ int hdcp1_set_enc(bool enable)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("success\n");
|
hdcp1_enc_enabled = enable;
|
||||||
|
pr_debug("%s success\n", enable ? "enable" : "disable");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue