[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