summaryrefslogtreecommitdiff
path: root/lib/igt_psr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/igt_psr.c')
-rw-r--r--lib/igt_psr.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index 6ad2c522..b5847bfd 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -178,3 +178,32 @@ bool psr_sink_support(int debugfs_fd, enum psr_mode mode)
*/
return strstr(buf, "Sink support: yes [0x03]");
}
+
+#define PSR2_SU_BLOCK_STR_LOOKUP "PSR2 SU blocks:\n0\t"
+
+static bool
+psr2_read_last_num_su_blocks_val(int debugfs_fd, uint16_t *num_su_blocks)
+{
+ char buf[PSR_STATUS_MAX_LEN];
+ char *str;
+ int ret;
+
+ ret = igt_debugfs_simple_read(debugfs_fd, "i915_edp_psr_status", buf,
+ sizeof(buf));
+ if (ret < 0)
+ return false;
+
+ str = strstr(buf, PSR2_SU_BLOCK_STR_LOOKUP);
+ if (!str)
+ return false;
+
+ str = &str[strlen(PSR2_SU_BLOCK_STR_LOOKUP)];
+ *num_su_blocks = (uint16_t)strtol(str, NULL, 10);
+
+ return true;
+}
+
+bool psr2_wait_su(int debugfs_fd, uint16_t *num_su_blocks)
+{
+ return igt_wait(psr2_read_last_num_su_blocks_val(debugfs_fd, num_su_blocks), 40, 1);
+}