#!/bin/bash
KERNELVERSION=`uname -r`
XDRIVERDIR=/usr/lib/xorg/modules/drivers
DRMDRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/gpu/drm/via
DRIDRIVERDIR=/usr/lib/dri
LIBGLDIR=/usr/lib
XCONFIGFILE=/etc/X11/xorg.conf


get_chipname()
{
	CHIPID=`lspci -nn | awk /VGA/ | sed -n 's/.*1106:\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)].*/\1\2\3\4/gp'`

	case "$CHIPID" in
		3108)
		DRIDRIVERNAME=via_unichrome;;
		3344)
		DRIDRIVERNAME=via_unichrome;;
		3157)
		DRIDRIVERNAME=via_unichrome;;
		3371)
		DRIDRIVERNAME=via_chrome9;;
		1122)
		DRIDRIVERNAME=via_chrome9;;
		3230)
		DRIDRIVERNAME=via_chrome9;;
                5122)
                DRIDRIVERNAME=via_chrome9;;
                *) DRIDRIVERNAME="Invalid";;
        esac

        if [ "$DRIDRIVERNAME" = "Invalid" ]; then
                echo "Error! Cannot find VIA ChipSet on your system!"
                exit
        fi
}


uninstall_driver()
{
	echo "uninstall the via driver!"

	#uninstall the X driver
	rm -f $XDRIVERDIR/via_drv.so
	if [ -e $XDRIVERDIR/via_drv.so.viabak ];then
		mv $XDRIVERDIR/via_drv.so.viabak $XDRIVERDIR/via_drv.so
	fi
	echo -n "..."

	#uninstall the 3D driver
	rm -f $LIBGLDIR/libGL.so.1.2.${DRIDRIVERNAME}
	ln -sf $LIBGLDIR/libGL.so.1.2 $LIBGLDIR/libGL.so.1
	ldconfig -X

	rm -f $DRIDRIVERDIR/${DRIDRIVERNAME}_dri.so
	echo -n "..."

	#uninstall the DRM module
	if [ $DRIDRIVERNAME == "via_unichrome" ];then
		DRMDRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/gpu/drm/via
		rm -f $DRMDRIVERDIR/via.ko

		if [ -e $DRMDRIVERDIR/via.ko.viabak ];then
			mv $DRMDRIVERDIR/via.ko.viabak  $DRMDRIVERDIR/via.ko
		fi
	fi

	if [ $DRIDRIVERNAME == "via_chrome9" ];then
		DRMDRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/gpu/drm/via_chrome9
		rm -f $DRMDRIVERDIR/via_chrome9.ko

			if [ -e $DRMDRIVERDIR/via_chrome9.ko.viabak ];then
				mv $DRMDRIVERDIR/via_chrome9.ko.viabak  $DRMDRIVERDIR/via_chrome9.ko
			fi
	fi
	depmod -a
}

recover_config_file()
{
	#recover the X config file
	if [ -f $XCONFIGFILE.viabak ];then
		mv -f $XCONFIGFILE.viabak $XCONFIGFILE
		if [ -f $XCONFIGFILE.viabak.old ];then
			mv -f $XCONFIGFILE.viabak.old $XCONFIGFILE.viabak
		fi
	fi

	if [ -f /etc/bash.bashrc.viabak ];then
		mv /etc/bash.bashrc.viabak /etc/bash.bashrc
	fi
}

notes()
{
	echo "...done!"
	echo -e "Caution!! Need reboot the system"
}

##########################################################
# Uninstall start from here
#########################################################
get_chipname
uninstall_driver
recover_config_file
notes
