[PATCH i-g-t v5 3/3] tools/intel_hdcp: Display hdcp status in connector info

Santhosh Reddy Guddati santhosh.reddy.guddati at intel.com
Fri Aug 1 06:47:01 UTC 2025


Add new function to read the current hdcp status for a given connector.
Improve formatting of the connector in the info for better readability.

Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati at intel.com>
---
 tools/intel_hdcp.c | 46 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 43 insertions(+), 3 deletions(-)

diff --git a/tools/intel_hdcp.c b/tools/intel_hdcp.c
index d9496050a..65895fbed 100644
--- a/tools/intel_hdcp.c
+++ b/tools/intel_hdcp.c
@@ -98,6 +98,41 @@ static void set_hdcp(data_t *data, int connector_id, bool enable)
 	igt_output_set_hdcp(data, output, enable);
 }
 
+static const char *get_hdcp_status(data_t *data, uint32_t connector_id)
+{
+	igt_output_t *output;
+	drmModeConnector connector, *drm_connector;
+	uint64_t prop_value;
+
+	connector.connector_id = connector_id;
+	output = igt_output_from_connector(&data->display, &connector);
+	if (!output)
+		return "Unknown";
+
+	drm_connector = drmModeGetConnectorCurrent(data->fd, connector_id);
+	if (!drm_connector || drm_connector->connection != DRM_MODE_CONNECTED ||
+	    drm_connector->encoder_id == 0) {
+		if (drm_connector)
+			drmModeFreeConnector(drm_connector);
+		return "N/A";
+	}
+
+	drmModeFreeConnector(drm_connector);
+
+	prop_value = igt_output_get_prop(output, IGT_CONNECTOR_CONTENT_PROTECTION);
+
+	switch (prop_value) {
+	case CP_UNDESIRED:
+		return "Disabled";
+	case CP_DESIRED:
+		return "Desired";
+	case CP_ENABLED:
+		return "Enabled";
+	default:
+		return "Unknown";
+	}
+}
+
 static const char *get_hdcp_version(int fd, char *connector_name)
 {
 	char buf[MAX_HDCP_BUF_LEN];
@@ -136,7 +171,10 @@ static void get_hdcp_info(data_t *data)
 	}
 
 	fprintf(stderr, "Connectors:\n");
-	fprintf(stderr, "id\tencoder\tstatus\t\ttype\tHDCP\n");
+	fprintf(stderr, "%-4s %-8s %-12s %-8s %-20s %-12s\n",
+		"ID", "Encoder", "Status", "Type", "HDCP Support", "HDCP Status");
+	fprintf(stderr, "---- -------- ------------ -------- -------------------- ------------\n");
+
 	for (int i = 0; i < res->count_connectors; i++) {
 		drmModeConnector *connector;
 
@@ -149,12 +187,14 @@ static void get_hdcp_info(data_t *data)
 			 kmstest_connector_type_str(connector->connector_type),
 			 connector->connector_type_id);
 
-		fprintf(stderr, "%d\t%d\t%s\t%s\t%s\n",
+		fprintf(stderr, "%-4d %-8d %-12s %-8s %-20s %-12s\n",
 			connector->connector_id, connector->encoder_id,
 			kmstest_connector_status_str(connector->connection),
 			kmstest_connector_type_str(connector->connector_type),
-			get_hdcp_version(data->fd, output_name));
+			get_hdcp_version(data->fd, output_name),
+			get_hdcp_status(data, connector->connector_id));
 
+		free(output_name);
 		drmModeFreeConnector(connector);
 	}
 
-- 
2.34.1



More information about the igt-dev mailing list