gfx_test: Update i915 binding in wrapper script
Always load i915 even if it wasn't loaded before. Also, force
`modeset=1` as that's our use case and we might have booted with
`i915.modeset=0`. Last but not least, search for the correct
vtcon* entry in sysfs instead of guessing, and always unbind it
(i.e. unbind the dummy driver when we want to switch back to
i915).
Change-Id: Ib62a05a3621aef2992372a6d3acad1196a363a95
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/22715
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
diff --git a/gfxtest/gfx_test.sh b/gfxtest/gfx_test.sh
index 0115443..3cd5ce2 100755
--- a/gfxtest/gfx_test.sh
+++ b/gfxtest/gfx_test.sh
@@ -35,10 +35,15 @@
while [ `fgconsole` -eq $orig_vt ]; do :; done
# take i915 out of charge
- echo 0 >/sys/devices/virtual/vtconsole/vtcon1/bind
+ for vtcon in /sys/devices/virtual/vtconsole/vtcon*; do
+ if grep -q frame\ buffer $vtcon/name >/dev/null 2>&1; then
+ echo 0 >$vtcon/bind
+ break
+ fi
+ done
# try unloading it
- if lsmod | grep -q i915 && modprobe -r i915 >/dev/null 2>&1; then
+ if modprobe -r i915 >/dev/null 2>&1; then
reload_i915=1
fi
}
@@ -46,12 +51,17 @@
restore_vt() {
# reload i915
if [ $reload_i915 -eq 1 ]; then
- modprobe i915
+ modprobe i915 modeset=1
+ else
+ # put i915 back in charge
+ for vtcon in /sys/devices/virtual/vtconsole/vtcon*; do
+ if grep -q dummy $vtcon/name >/dev/null 2>&1; then
+ echo 0 >$vtcon/bind
+ break
+ fi
+ done
fi
- # put i915 back in charge
- echo 1 >/sys/devices/virtual/vtconsole/vtcon1/bind
-
# return to original VT
chvt $orig_vt
}