#!/bin/sh
#
# Start pvr services...
#


sgxprepare () {
	modprobe pvrsrvkm

	pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3`
	bc_maj=`grep "bc" /proc/devices | cut -b1,2,3`

	if [ -e /dev/pvrsrvkm ] ; then 
		rm -f /dev/pvrsrvkm
	fi

	mknod /dev/pvrsrvkm c $pvr_maj 0 
	chmod 666 /dev/pvrsrvkm

	modprobe omaplfb
	modprobe bufferclass_ti
	
	touch /etc/powervr-esrev

	SAVED_ESREVISION="$(cat /etc/powervr-esrev)"
}

sgxfinish () {
	if [ -e /etc/sgx_check ]; then
		SAVED_ESREVISION=xxxx
	fi

	if [ "${ES_REVISION}" != "${SAVED_ESREVISION}" ] ; then
		echo -n "Starting SGX fixup for"
		echo " ES${ES_REVISION}.x"
		cp -a /usr/lib/ES${ES_REVISION}.x/* /usr/lib
# 		cp -a /usr/bin/ES${ES_REVISION}.x/* /usr/bin
		echo "${ES_REVISION}" > /etc/powervr-esrev
	fi
	/usr/bin/ES${ES_REVISION}.x/pvrsrvctl --start --no-module
}

case "$1" in
  start)
	echo "Loading SGX drivers..."
# fbset -g 640 480 640 1440 16
	if ! [ -e /proc/pvr ]; then
		sgxprepare
		# OpenGl stuff.
# 		insmod /nesis/kmodules/pvrsrvkm.ko
# 		# Delete the device for PVR services and recreate with the correct major number.
# 		pvr_maj=$(grep "pvrsrvkm$" /proc/devices | cut -b1,2,3)
# 		rm -f /dev/pvrsrvkm
# 		mknod /dev/pvrsrvkm c $pvr_maj 0
# 		chmod 666 /dev/pvrsrvkm
# 		# init pvr
# 		/usr/bin/pvrsrvinit
		
# 		devmem2 0x48180F04 w 0x0 > /dev/null
# 		devmem2 0x48180900 w 0x2 > /dev/null
# 		devmem2 0x48180920 w 0x2 > /dev/null
# 
# 		ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:6: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')"

		MACH=$(uname -r | cut -d'-' -f2)
		if [ "$MACH" = "igep+" ]; then
			ES_REVISION=5
		else
			ES_REVISION=3
		fi

		sgxfinish
		
# 		# load additional drivers
# 		insmod /nesis/kmodules/omaplfb.ko
# 		sleep 0.05
# 		insmod /nesis/kmodules/bufferclass_ti.ko
# 		sleep 0.05
	fi
	;;
  stop)
	;;
  restart|reload)
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac

exit $?
