[PATCH 1/1] i915/hdcp: debug log enhancement
Ramalingam C
ramalingam.c at intel.com
Mon Jul 1 00:49:20 UTC 2019
To capture the cause for the hdcp failures, more hdcp debug logs
are added.
Signed-off-by: Ramalingam C <ramalingam.c at intel.com>
---
drivers/gpu/drm/i915/display/intel_hdcp.c | 44 +++++++++++++++++------
1 file changed, 33 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index bc3a94d491c4..436a84cd66d3 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -506,8 +506,10 @@ int intel_hdcp_auth_downstream(struct intel_connector *connector)
}
ret = shim->read_bstatus(intel_dig_port, bstatus);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at read_status(%d)\n", ret);
return ret;
+ }
if (DRM_HDCP_MAX_DEVICE_EXCEEDED(bstatus[0]) ||
DRM_HDCP_MAX_CASCADE_EXCEEDED(bstatus[1])) {
@@ -523,16 +525,22 @@ int intel_hdcp_auth_downstream(struct intel_connector *connector)
* authentication.
*/
num_downstream = DRM_HDCP_NUM_DOWNSTREAM(bstatus[0]);
- if (num_downstream == 0)
+ if (num_downstream == 0) {
+ DRM_ERROR("Zero no of downstream\n");
return -EINVAL;
+ }
ksv_fifo = kcalloc(DRM_HDCP_KSV_LEN, num_downstream, GFP_KERNEL);
- if (!ksv_fifo)
+ if (!ksv_fifo) {
+ DRM_DEBUG_KMS("ksv_fifo: Out of no mem\n");
return -ENOMEM;
+ }
ret = shim->read_ksv_fifo(intel_dig_port, num_downstream, ksv_fifo);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at read_ksv_fifo(%d)\n", ret);
goto err;
+ }
if (drm_hdcp_check_ksvs_revoked(dev, ksv_fifo, num_downstream)) {
DRM_ERROR("Revoked Ksv(s) in ksv_fifo\n");
@@ -601,8 +609,10 @@ static int intel_hdcp_auth(struct intel_connector *connector)
*/
if (shim->hdcp_capable) {
ret = shim->hdcp_capable(intel_dig_port, &hdcp_capable);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at hdcp_capable(%d)\n", ret);
return ret;
+ }
if (!hdcp_capable) {
DRM_DEBUG_KMS("Panel is not HDCP capable\n");
return -EINVAL;
@@ -625,16 +635,20 @@ static int intel_hdcp_auth(struct intel_connector *connector)
an.reg[0] = I915_READ(PORT_HDCP_ANLO(port));
an.reg[1] = I915_READ(PORT_HDCP_ANHI(port));
ret = shim->write_an_aksv(intel_dig_port, an.shim);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at write_an_aksv(%d)\n", ret);
return ret;
+ }
r0_prime_gen_start = jiffies;
memset(&bksv, 0, sizeof(bksv));
ret = intel_hdcp_read_valid_bksv(intel_dig_port, shim, bksv.shim);
- if (ret < 0)
+ if (ret < 0) {
+ DRM_DEBUG_KMS("Failed at bksv_read(%d)\n", ret);
return ret;
+ }
if (drm_hdcp_check_ksvs_revoked(dev, bksv.shim, 1)) {
DRM_ERROR("BKSV is revoked\n");
@@ -645,15 +659,19 @@ static int intel_hdcp_auth(struct intel_connector *connector)
I915_WRITE(PORT_HDCP_BKSVHI(port), bksv.reg[1]);
ret = shim->repeater_present(intel_dig_port, &repeater_present);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at repeater status read(%d)\n", ret);
return ret;
+ }
if (repeater_present)
I915_WRITE(HDCP_REP_CTL,
intel_hdcp_get_repeater_ctl(intel_dig_port));
ret = shim->toggle_signalling(intel_dig_port, true);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Failed at toggle_signalling(%d)\n", ret);
return ret;
+ }
I915_WRITE(PORT_HDCP_CONF(port), HDCP_CONF_AUTH_AND_ENC);
@@ -684,8 +702,10 @@ static int intel_hdcp_auth(struct intel_connector *connector)
for (i = 0; i < tries; i++) {
ri.reg = 0;
ret = shim->read_ri_prime(intel_dig_port, ri.shim);
- if (ret)
+ if (ret) {
+ DRM_DEBUG_KMS("Faield at read_ri_prime(%d)\n", ret);
return ret;
+ }
I915_WRITE(PORT_HDCP_RPRIME(port), ri.reg);
/* Wait for Ri prime match */
@@ -1206,8 +1226,10 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
if (ret < 0)
return ret;
- if (msgs.send_cert.rx_caps[0] != HDCP_2_2_RX_CAPS_VERSION_VAL)
+ if (msgs.send_cert.rx_caps[0] != HDCP_2_2_RX_CAPS_VERSION_VAL) {
+ DRM_DEBUG_KMS("rx_caps dont support HDCP2.2\n");
return -EINVAL;
+ }
hdcp->is_repeater = HDCP_2_2_RX_REPEATER(msgs.send_cert.rx_caps[2]);
--
2.19.1
More information about the Intel-gfx-trybot
mailing list