blob: 3cd5ce28be99cc32c7e0ad07f7e576213e991052 [file] [log] [blame]
Nico Huber3b654a02017-07-15 22:27:14 +02001#!/bin/sh
2
3set -e
4
Nico Huber88f3c982017-08-28 13:31:38 +02005usage="Usage: $0 [<delay seconds> [(0|90|128|270)]]\n"
Nico Huber3b654a02017-07-15 22:27:14 +02006
7err_msgs=
8command -v chvt >/dev/null || err_msgs="${err_msgs}"'Need `chvt`\n'
9command -v openvt >/dev/null || err_msgs="${err_msgs}"'Need `openvt`\n'
10command -v fgconsole >/dev/null || err_msgs="${err_msgs}"'Need `fgconsole`\n'
11[ -n "$err_msgs" ] && err_msgs="${err_msgs}"'e.g. install the `kbd` package\n'
12
13[ -x build/gfx_test ] || \
14 err_msgs="${err_msgs}"'Please run from *libgfxinit* source dir and build `gfx_test` first.\n'
15
Nico Huber88f3c982017-08-28 13:31:38 +020016[ "$#" -gt 2 ] && err_msgs="${err_msgs}${usage}"
Nico Huber3b654a02017-07-15 22:27:14 +020017
18if [ -n "$err_msgs" ]; then
19 printf "$err_msgs"
20 exit 1
21fi
22
23if [ "$#" -lt 1 ]; then
24 # default duration of 5s
25 set 5
26fi
27
28reload_i915=0
29prepare_vt() {
30 # switch VT, we might be in X
31 orig_vt=`fgconsole`
32 openvt -s -- true
33
34 # poll until the VT switch is done
35 while [ `fgconsole` -eq $orig_vt ]; do :; done
36
37 # take i915 out of charge
Nico Huber76284932017-11-28 13:22:04 +010038 for vtcon in /sys/devices/virtual/vtconsole/vtcon*; do
39 if grep -q frame\ buffer $vtcon/name >/dev/null 2>&1; then
40 echo 0 >$vtcon/bind
41 break
42 fi
43 done
Nico Huber3b654a02017-07-15 22:27:14 +020044
45 # try unloading it
Nico Huber76284932017-11-28 13:22:04 +010046 if modprobe -r i915 >/dev/null 2>&1; then
Nico Huber3b654a02017-07-15 22:27:14 +020047 reload_i915=1
48 fi
49}
50
51restore_vt() {
52 # reload i915
53 if [ $reload_i915 -eq 1 ]; then
Nico Huber76284932017-11-28 13:22:04 +010054 modprobe i915 modeset=1
55 else
56 # put i915 back in charge
57 for vtcon in /sys/devices/virtual/vtconsole/vtcon*; do
58 if grep -q dummy $vtcon/name >/dev/null 2>&1; then
59 echo 0 >$vtcon/bind
60 break
61 fi
62 done
Nico Huber3b654a02017-07-15 22:27:14 +020063 fi
64
Nico Huber3b654a02017-07-15 22:27:14 +020065 # return to original VT
66 chvt $orig_vt
67}
68
69prepare_vt
70
71build/gfx_test "$@" || true
72
73restore_vt