summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_psr.c29
-rw-r--r--lib/igt_psr.h2
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index 2b73e809..a2d88031 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -330,3 +330,32 @@ void i915_psr2_sel_fetch_restore(int drm_fd)
psr_set(drm_fd, debugfs_fd, PSR_MODE_2_SEL_FETCH);
close(debugfs_fd);
}
+
+/**
+ * psr_get_mode
+ *
+ * Return the current PSR mode.
+ */
+enum psr_mode psr_get_mode(int debugfs_fd)
+{
+ char buf[PSR_STATUS_MAX_LEN];
+ int ret;
+
+
+ ret = igt_debugfs_simple_read(debugfs_fd, "i915_edp_psr_status", buf,
+ sizeof(buf));
+ if (ret < 0) {
+ igt_info("Could not read i915_edp_psr_status: %s\n",
+ strerror(-ret));
+ return PSR_DISABLED;
+ }
+
+ if (strstr(buf, "PSR2 selective fetch: enabled"))
+ return PSR_MODE_2_SEL_FETCH;
+ else if (strstr(buf, "PSR2 enabled"))
+ return PSR_MODE_2;
+ else if (strstr(buf, "PSR1 enabled"))
+ return PSR_MODE_1;
+
+ return PSR_DISABLED;
+}
diff --git a/lib/igt_psr.h b/lib/igt_psr.h
index 76cd26c6..12ffc9d6 100644
--- a/lib/igt_psr.h
+++ b/lib/igt_psr.h
@@ -34,6 +34,7 @@ enum psr_mode {
PSR_MODE_1,
PSR_MODE_2,
PSR_MODE_2_SEL_FETCH,
+ PSR_DISABLED,
};
bool psr_disabled_check(int debugfs_fd);
@@ -46,6 +47,7 @@ bool psr_disable(int device, int debugfs_fd);
bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode);
bool psr2_wait_su(int debugfs_fd, uint16_t *num_su_blocks);
void psr_print_debugfs(int debugfs_fd);
+enum psr_mode psr_get_mode(int debugfs_fd);
bool i915_psr2_selective_fetch_check(int drm_fd);