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
 }