summaryrefslogtreecommitdiff
path: root/lib/igt_aux.c
diff options
context:
space:
mode:
authorRodrigo Vivi <rodrigo.vivi@intel.com>2022-08-01 17:51:44 +0000
committerRodrigo Vivi <rodrigo.vivi@intel.com>2022-08-03 12:01:07 -0400
commitfba96418acea17a3ceeb769926284fb3e0e30d64 (patch)
treee1e361e63397459465d578480212d2feae3b3643 /lib/igt_aux.c
parentbdd93227e236cf9973d0260e8801de6763e890f9 (diff)
lib/igt_aux: Check suspend state support directly.
Let's simplify the suspend state check directly by using its name instead of using a mask style. This will allow us to introduce a new state cleanly. v2: remove accidental fprintf Cc: Anshuman Gupta <anshuman.gupta@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Anshuman Gupta <anshuman.gupta@intel.com>
Diffstat (limited to 'lib/igt_aux.c')
-rw-r--r--lib/igt_aux.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 6cdda077e..805550d12 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -815,29 +815,21 @@ static void suspend_via_sysfs(int power_dir, enum igt_suspend_state state)
suspend_state_name[state]));
}
-static uint32_t get_supported_suspend_states(int power_dir)
+static bool is_state_supported(int power_dir, enum igt_suspend_state state)
{
+ const char *str;
char *states;
- char *state_name;
- uint32_t state_mask;
igt_assert((states = igt_sysfs_get(power_dir, "state")));
- state_mask = 0;
- for (state_name = strtok(states, " "); state_name;
- state_name = strtok(NULL, " ")) {
- enum igt_suspend_state state;
-
- for (state = SUSPEND_STATE_FREEZE; state < SUSPEND_STATE_NUM;
- state++)
- if (strcmp(state_name, suspend_state_name[state]) == 0)
- break;
- igt_assert(state < SUSPEND_STATE_NUM);
- state_mask |= 1 << state;
- }
- free(states);
+ str = strstr(states, suspend_state_name[state]);
- return state_mask;
+ if (!str)
+ igt_info("State %s not supported.\nSupported States: %s\n",
+ suspend_state_name[state], states);
+
+ free(states);
+ return str;
}
/**
@@ -868,7 +860,7 @@ void igt_system_suspend_autoresume(enum igt_suspend_state state,
enum igt_suspend_test orig_test;
igt_require((power_dir = open("/sys/power", O_RDONLY)) >= 0);
- igt_require(get_supported_suspend_states(power_dir) & (1 << state));
+ igt_require(is_state_supported(power_dir, state));
igt_require(test == SUSPEND_TEST_NONE ||
faccessat(power_dir, "pm_test", R_OK | W_OK, 0) == 0);