[PATCH i-g-t v3 2/3] lib/kms: Update force joiner helpers to accomodate ultrajoiner
Karthik B S
karthik.b.s at intel.com
Wed Sep 18 07:34:12 UTC 2024
v2: Split the lib updates to separate patch (Ankit)
v3: Use enum for joined pipes (Santhosh)
Signed-off-by: Karthik B S <karthik.b.s at intel.com>
---
lib/igt_kms.c | 33 +++++++++++++++++++++++++--------
lib/igt_kms.h | 16 +++++++++++++++-
tests/intel/kms_joiner.c | 2 +-
3 files changed, 41 insertions(+), 10 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index cf453dcfc..a39d1176f 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -1720,34 +1720,51 @@ bool kmstest_force_connector(int drm_fd, drmModeConnector *connector,
return true;
}
-static bool force_connector_bigjoiner(int drm_fd,
+static bool force_connector_joiner(int drm_fd,
drmModeConnector *connector,
const char *value)
{
return connector_attr_set_debugfs(drm_fd, connector,
- "i915_bigjoiner_force_enable",
+ "i915_joiner_force_enable",
value, "0");
}
/**
- * kmstest_force_connector_bigjoiner:
+ * kmstest_force_connector_joiner:
* @fd: drm file descriptor
* @connector: connector
*
- * Enable force bigjoiner state on the specified connector
+ * Enable force joiner state on the specified connector
* and install exit handler for resetting
*
* Returns: True on success
*/
-bool kmstest_force_connector_bigjoiner(int drm_fd, drmModeConnector *connector)
+bool kmstest_force_connector_joiner(int drm_fd, drmModeConnector *connector, int joined_pipes)
{
- const char *value = "1";
+ const char *value;
drmModeConnector *temp;
+ switch (joined_pipes) {
+ case JOINED_PIPES_DEFAULT:
+ value = "0";
+ break;
+ case JOINED_PIPES_NONE:
+ value = "1";
+ break;
+ case JOINED_PIPES_BIG_JOINER:
+ value = "2";
+ break;
+ case JOINED_PIPES_ULTRA_JOINER:
+ value = "4";
+ break;
+ default:
+ igt_assert(0);
+ }
+
if (!is_intel_device(drm_fd))
return false;
- if (!force_connector_bigjoiner(drm_fd, connector, value))
+ if (!force_connector_joiner(drm_fd, connector, value))
return false;
dump_connector_attrs();
@@ -6420,7 +6437,7 @@ bool igt_has_force_joiner_debugfs(int drmfd, char *conn_name)
if (debugfs_fd < 0)
return false;
- ret = igt_debugfs_simple_read(debugfs_fd, "i915_bigjoiner_force_enable", buf, sizeof(buf));
+ ret = igt_debugfs_simple_read(debugfs_fd, "i915_joiner_force_enable", buf, sizeof(buf));
close(debugfs_fd);
return ret >= 0;
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 4455632f4..2461fa47c 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -260,9 +260,23 @@ enum intel_broadcast_rgb_mode {
struct edid;
+/**
+ * joined_pipes:
+ * @JOINED_PIPES_DEFAULT: Default setting with no force joiner
+ * @JOINED_PIPES_NONE: Force to exactly one pipe
+ * @JOINED_PIPES_BIG_JOINER: Join two pipes big joiner
+ * @JOINED_PIPES_ULTRA_JOINER: Join four pipes for ultra joiner
+ */
+enum joined_pipes {
+ JOINED_PIPES_DEFAULT,
+ JOINED_PIPES_NONE,
+ JOINED_PIPES_BIG_JOINER,
+ JOINED_PIPES_ULTRA_JOINER = 4
+};
+
bool kmstest_force_connector(int fd, drmModeConnector *connector,
enum kmstest_force_connector_state state);
-bool kmstest_force_connector_bigjoiner(int drm_fd, drmModeConnector *connector);
+bool kmstest_force_connector_joiner(int drm_fd, drmModeConnector *connector, int joined_pipes);
void kmstest_force_edid(int drm_fd, drmModeConnector *connector,
const struct edid *edid);
diff --git a/tests/intel/kms_joiner.c b/tests/intel/kms_joiner.c
index 633bf51c7..e193f9071 100644
--- a/tests/intel/kms_joiner.c
+++ b/tests/intel/kms_joiner.c
@@ -106,7 +106,7 @@ static void enable_force_joiner_on_all_non_big_joiner_outputs(data_t *data)
for (i = 0; i < data->non_big_joiner_output_count; i++) {
output = data->non_big_joiner_output[i];
- status = kmstest_force_connector_bigjoiner(data->drm_fd, output->config.connector);
+ status = kmstest_force_connector_joiner(data->drm_fd, output->config.connector, JOINED_PIPES_BIG_JOINER);
igt_assert_f(status, "Failed to toggle force joiner\n");
}
}
--
2.39.1
More information about the igt-dev
mailing list