4 BITSPERPIXEL="$(fbset | grep geom | awk '{print $6}')"
5 YRES="$(fbset | grep geom | awk '{print $3}')"
9 rmmod bufferclass_ti 2>/dev/null
10 rmmod omaplfb 2>/dev/null
11 rmmod pvrsrvkm 2>/dev/null
16 if lsmod | grep -q omaplfb; then
17 echo "PVR driver is already loaded"
21 if test -f /etc/powervr-kmodver; then
22 version=`cat /etc/powervr-kmodver`
24 insmod /lib/modules/$(uname -r)/kernel/drivers/gpu/pvr/$version/pvrsrvkm.ko
25 insmod /lib/modules/$(uname -r)/kernel/drivers/gpu/pvr/$version/omaplfb.ko
26 bc_ko="/lib/modules/$(uname -r)/kernel/drivers/gpu/pvr/$version/bufferclass_ti.ko"
27 if test -f "$bc_ko"; then
31 if ! lsmod | grep -q pvrsrvkm; then
32 echo "pvrsrvkm failed to load"
36 test -e /dev/pvrsrvkm || sleep 1
37 if ! test -e /dev/pvrsrvkm; then
38 echo "pvrsrvkm dev file did not appear"
42 chmod 666 /dev/pvrsrvkm
45 # $1 - full pathname, like /usr/lib/ES5.0/libGLESv2.so.1.4.14.2616
49 baseso=`echo "$base" | sed -e 's:\(lib.*.so\).*:\1:;s/[[:blank:]]//g'`
50 test -z "${baseso}" && return
52 rm /usr/lib/${baseso}*
56 ln -fs $base ${baseso}
57 ln -fs $base ${baseso}.1
61 if [ "$1" = "" ]; then
62 echo PVR-INIT: Please use start, stop, or restart.
66 if [ "$1" = "stop" -o "$1" = "restart" ]; then
71 if [ "$1" = "stop" ]; then
75 # Set RGBA ordering to something the drivers like
76 if [ "$BITSPERPIXEL" = "32" ] ; then
77 fbset -rgba 8/16,8/8,8/0,8/24
80 # Try to enable triple buffering when there's enough VRAM
81 fbset -vyres $(expr $YRES \* 3)
85 touch /etc/powervr-esrev
86 SAVED_ESREVISION="$(cat /etc/powervr-esrev)"
88 devmem2 0x48004B48 w 0x2 > /dev/null
89 devmem2 0x48004B10 w 0x1 > /dev/null
90 devmem2 0x48004B00 w 0x2 > /dev/null
92 ES_REVISION="$(devmem2 0x50000014 | sed -e s:0x10205:5: -e s:0x10201:3: -e s:0x10003:2: | tail -n1 | awk -F': ' '{print $2}')"
94 # enable hardware supervised domain power state transition - makes suspend work
95 devmem2 0x48004B48 w 0x3 > /dev/null
97 if [ "${ES_REVISION}" != "${SAVED_ESREVISION}" -o ! -e /etc/powervr-kmodver ] ; then
98 sdkver=`echo /usr/lib/ES${ES_REVISION}.0/libGLESv2.so.1.* | sed -e 's:.*lib.*.so.\(.*\).*:\1:'`
99 echo -n "Performing SGX fixup for"
100 echo " ES${ES_REVISION}.x (${sdkver})"
101 for lib in /usr/lib/ES${ES_REVISION}.0/*.so*; do
104 cp -a /usr/bin/ES${ES_REVISION}.0/* /usr/bin/
105 echo "${ES_REVISION}" > /etc/powervr-esrev
107 # if /etc/powervr-kmodver is available, trust it, else figure out something
108 if ! test -e /etc/powervr-kmodver; then
109 touch /etc/powervr-kmodver
110 # for 1.4.14.2616 there are 2 incompatible modules,
111 # assume the default one, which is selected by empty powervr-kmodver
112 if [ "${sdkver}" != "1.4.14.2616" ]; then
113 echo "Switching driver to ${sdkver}"
114 echo "${sdkver}" > /etc/powervr-kmodver
120 # set up optional armhf libs if needed
121 if test -d /usr/lib/arm-linux-gnueabihf/ES${ES_REVISION}.0; then
122 touch /etc/powervr-esrev-armhf
123 SAVED_ESREVISION_HF="$(cat /etc/powervr-esrev-armhf)"
125 if [ "${ES_REVISION}" != "${SAVED_ESREVISION_HF}" ] ; then
126 echo -n "Performing SGX armhf fixup for"
127 echo " ES${ES_REVISION}.x"
128 for lib in /usr/lib/arm-linux-gnueabihf/ES${ES_REVISION}.0/*.so*; do
129 cp -a $lib /usr/lib/arm-linux-gnueabihf/
131 echo "${ES_REVISION}" > /etc/powervr-esrev-armhf
137 if test -x /usr/bin/pvrsrvinit; then
139 elif test -x /usr/bin/pvrsrvctl; then
140 /usr/bin/pvrsrvctl --start --no-module
142 echo "Error: missing /usr/bin/pvrsrv* or bad permissions"