[PATCH i-g-t 1/3] lib/igt_kms: Add lib changes to check joiner is enabled

Jeevan B jeevan.b at intel.com
Tue Feb 4 18:27:32 UTC 2025


Added a library change where we if joiner is enabled or not.

v2: Update function name and logic to check joiner
    enabled for exact pipe. (Karthik)

Signed-off-by: Jeevan B <jeevan.b at intel.com>
---
 lib/igt_kms.c | 31 +++++++++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 32 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 90f44b4d3..d4980d2ac 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6406,6 +6406,37 @@ bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
 	return found;
 }
 
+/**
+ * igt_is_joiner_enabled:
+ * @drmfd: A drm file descriptor
+ * @pipe: display pipe
+ *
+ * Returns: True if joiner is enabled, false otherwise.
+ */
+bool igt_is_joiner_enabled(int drmfd, enum pipe pipe)
+{
+	char buf[16384], master_str[64], slave_str[64];
+	int dir, res;
+	int initial_number = 0b11;
+
+
+	dir = igt_debugfs_dir(drmfd);
+	igt_assert(dir >= 0);
+
+	res = igt_debugfs_simple_read(dir, "i915_display_info",
+					    buf, sizeof(buf));
+	close(dir);
+	igt_assert(res >= 0);
+	initial_number <<= pipe;
+
+	snprintf(master_str, sizeof(master_str),
+		 "Linked to 0x%X pipes as a master", initial_number);
+	snprintf(slave_str, sizeof(slave_str),
+		 "Linked to 0x%X pipes as a slave", initial_number);
+
+	return (strstr(buf, master_str) && strstr(buf, slave_str));
+}
+
 /**
  * igt_ultrajoiner_possible:
  * @mode: libdrm mode
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 8810123fb..7df53ec9c 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -1245,6 +1245,7 @@ int igt_get_max_dotclock(int fd);
 bool igt_bigjoiner_possible(int drm_fd, drmModeModeInfo *mode, int max_dotclock);
 bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
 			  int max_dotclock, drmModeModeInfo *mode);
+bool igt_is_joiner_enabled(int drmfd, enum pipe pipe);
 bool igt_ultrajoiner_possible(drmModeModeInfo *mode, int max_dotclock);
 bool ultrajoiner_mode_found(int drm_fd, drmModeConnector *connector,
 			  int max_dotclock, drmModeModeInfo *mode);
-- 
2.25.1



More information about the igt-dev mailing list