[PATCH i-g-t 6/6] tests/intel/kms_cdclk: Add get_max_cdclk_freq()
Swati Sharma
swati2.sharma at intel.com
Mon Dec 30 19:03:15 UTC 2024
Replace hardcoded max cdclk freq with one computed from debugfs.
Also, add same condition for all_outputs subtest.
Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
---
tests/intel/kms_cdclk.c | 34 +++++++++++++++++++++++++++++++---
1 file changed, 31 insertions(+), 3 deletions(-)
diff --git a/tests/intel/kms_cdclk.c b/tests/intel/kms_cdclk.c
index fcbfa3f37..2ea805b94 100644
--- a/tests/intel/kms_cdclk.c
+++ b/tests/intel/kms_cdclk.c
@@ -53,7 +53,6 @@ IGT_TEST_DESCRIPTION("Test cdclk features : crawling and squashing");
#define HDISPLAY_4K 3840
#define VDISPLAY_4K 2160
#define VREFRESH 60
-#define MAX_CDCLK_4K 307200
/* Test flags */
enum {
@@ -104,6 +103,34 @@ static int get_current_cdclk_freq(int debugfs_fd)
return cdclk_freq_current;
}
+static int get_max_cdclk_freq(int debugfs_fd)
+{
+ int cdclk_freq_max;
+ char buf[1024];
+ char *start_loc;
+ int res;
+
+ /*
+ * Display specific clock frequency info is moved to i915_cdclk_info,
+ * On older kernels if this debugfs is not found, fallback to read from
+ * i915_frequency_info.
+ *
+ * FIXME: As of now, XE debugfs is still using i915 namespace, once the
+ * Kernel changes are landed, update this to use the XE specific debugfs.
+ */
+ res = igt_debugfs_simple_read(debugfs_fd, "i915_cdclk_info",
+ buf, sizeof(buf));
+ if (res <= 0)
+ res = igt_debugfs_simple_read(debugfs_fd, "i915_frequency_info",
+ buf, sizeof(buf));
+ igt_require(res > 0);
+
+ igt_assert(start_loc = strstr(buf, "Max CD clock frequency: "));
+ igt_assert_eq(sscanf(start_loc, "Max CD clock frequency: %d", &cdclk_freq_max), 1);
+
+ return cdclk_freq_max;
+}
+
static __u64 get_mode_data_rate(drmModeModeInfo *mode)
{
__u64 data_rate = (__u64)mode->hdisplay * (__u64)mode->vdisplay * (__u64)mode->vrefresh;
@@ -250,7 +277,7 @@ static void test_mode_transition(data_t *data, enum pipe pipe, igt_output_t *out
igt_info("CD clock frequency %d -> %d\n", cdclk_ref, cdclk_new);
/* cdclk should bump */
- if (cdclk_new != MAX_CDCLK_4K)
+ if (cdclk_new != get_max_cdclk_freq(debugfs_fd))
igt_assert_lt(cdclk_ref, cdclk_new);
/* cleanup */
@@ -348,7 +375,8 @@ static void test_mode_transition_on_all_outputs(data_t *data)
igt_info("CD clock frequency %d -> %d\n", cdclk_ref, cdclk_new);
/* cdclk should bump */
- igt_assert_lt(cdclk_ref, cdclk_new);
+ if (cdclk_new != get_max_cdclk_freq(debugfs_fd))
+ igt_assert_lt(cdclk_ref, cdclk_new);
do_cleanup_display(display);
igt_remove_fb(data->drm_fd, &fb);
--
2.25.1
More information about the igt-dev
mailing list