summaryrefslogtreecommitdiff
path: root/lib/igt_aux.c
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2014-10-21 11:45:59 -0200
committerPaulo Zanoni <paulo.r.zanoni@intel.com>2014-10-22 16:23:42 -0200
commitac2079596c0a8119f77d58ae3d5e3f8e13e5b96d (patch)
tree7848a36e59b21d85319e6dede1ce040a5d011316 /lib/igt_aux.c
parenta06071c0cf66f1a077563fb3ffa15856a57db18d (diff)
lib/igt_aux: move audio RPM code to igt_setup_runtime_pm()
If we don't enable audio runtime PM, the audio driver won't release its reference, the refcount won't ever become zero, so we will never actually runtime suspend. So move this code from pm_rpm.c to igt_aux.c, so kms_flip - and any other IGT test case using RPM - can benefit from it. Previously, if you ran pm_rpm before running the other tests - or if you just didn't have snd_hda_intel loaded - you wouldn't notice this bug. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78893 Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Diffstat (limited to 'lib/igt_aux.c')
-rw-r--r--lib/igt_aux.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 01654f00..0e1eeea4 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -431,6 +431,20 @@ bool igt_setup_runtime_pm(void)
if (pm_status_fd >= 0)
return true;
+ /* The Audio driver can get runtime PM references, so we need to make
+ * sure its runtime PM is enabled, so it can release the refs and
+ * actually enable us to runtime suspend. */
+ fd = open("/sys/module/snd_hda_intel/parameters/power_save", O_WRONLY);
+ if (fd >= 0) {
+ igt_assert(write(fd, "1\n", 2) == 2);
+ close(fd);
+ }
+ fd = open("/sys/bus/pci/devices/0000:00:03.0/power/control", O_WRONLY);
+ if (fd >= 0) {
+ igt_assert(write(fd, "auto\n", 5) == 5);
+ close(fd);
+ }
+
/* Our implementation uses autosuspend. Try to set it to 0ms so the test
* suite goes faster and we have a higher probability of triggering race
* conditions. */