diff options
Diffstat (limited to 'lib/igt_psr.c')
-rw-r--r-- | lib/igt_psr.c | 29 |
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); +} |