summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-config/xconfig.sh
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/LinHES-config/xconfig.sh')
-rwxr-xr-xabs/core/LinHES-config/xconfig.sh363
1 files changed, 363 insertions, 0 deletions
diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh
new file mode 100755
index 0000000..2fad821
--- /dev/null
+++ b/abs/core/LinHES-config/xconfig.sh
@@ -0,0 +1,363 @@
+#!/bin/bash
+#SET DISPLAYCARD to force a cardtype
+#SET DISPLAYRES to force Xres, ENV takes precendent over cmdline
+#displayres=cmdline
+#NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident"
+NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel xf86-video-mga xf86-video-savage xf86-video-trident unichrome-dri xf86-video-openchrome"
+BASE=""
+. /etc/profile
+NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt"
+#TEMPLATES="/usr/share/templates"
+MYTHHOME=$BASE/home/mythtv
+
+function Xvalues {
+ CMDLINE=$(cat /proc/cmdline)
+ echo "$CMDLINE" | grep -q forceXvesa
+ if [ $? = 0 ]
+ then
+ VGACARDTYPE=vesa
+ Xcardtype=$VGACARDTYPE
+ else
+ VGACARDTYPE=`lspci | grep -i vga | sort -r | head -n 1 | cut -d: -f3 | cut -d" " -f2`
+ VGAPCIID=`lspci | grep -i vga | sort -r | head -n 1 | cut -d" " -f1`
+ CARDID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f2`
+ VENDORID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f1`
+ fi
+ #force VGACARDTYPE
+ if [ ! x$DISPLAYCARD = x ]
+ then
+ VGACARDTYPE=$DISPLAYCARD
+ Xcardtype=$VGACARDTYPE
+ fi
+ echo "Will use $VGACARDTYPE"
+ currentmode=`cat "$BASE/etc/X11/xorg.conf" | grep Modes | awk -Fs '{ print $2 }'`
+}
+
+function presetupX {
+ if [ -f /etc/sysconfig/IGNORE_X ]
+ then
+ echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X"
+ return 1
+ else
+ if [ "$XIgnoreConfig" = 1 ]
+ then
+ echo "Using User supplied X"
+ if [ -f "$MYTHHOME/templates/xorg.user" ]
+ then
+ cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF"
+ else
+ echo "Didn't find the file"
+ echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF"
+ fi
+ else
+ if [ "$XUseAdvanced" = 1 ]
+ then
+ setupAdvancedX
+ else
+ setupX
+ fi
+ fi
+ fi
+
+}
+
+function setupAdvancedX {
+ echo "#doing the advanced" > /tmp/options
+ Xcategory=`echo "$Xresadvanced" | cut -d_ -f1`
+ Xres=`echo "$Xresadvanced" | cut -d_ -f2`
+ echo "$Xcategory"
+ if [ "$Xcategory" = "nVidia Modeline" ]
+ then
+ Xres=""
+ if [ "$XnVidia1080p" = "1" ]
+ then
+ Xres="${Xres} \"1920x1080_60\""
+ fi
+ if [ "$XnVidia1080i" = "1" ]
+ then
+ Xres="${Xres} \"1920x1080_60i\""
+ fi
+ if [ "$XnVidia720p" = "1" ]
+ then
+ Xres="${Xres} \"1280x720_60\""
+ fi
+ if [ "$XnVidia480p" = "1" ]
+ then
+ Xres="${Xres} \"720x480_60\""
+ fi
+ ML="\t Modes ${Xres}"
+ else
+
+ ML="\t Modes \"${Xres}\""
+ fi
+# echo $ML
+ case $Xcardtype in
+ NVIDIA|nVidia|nvidia)
+ case $Xconnection in
+ DVI) ConnectedMonitor=DFP ;;
+ vga) ConnectedMonitor=CRT;;
+ Auto) ConnectedMonitor=Auto;;
+ TV) ConnectedMonitor=TV
+ echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options
+ echo "Option \"TVOutFormat\" \"$XTVconnection\"" >> /tmp/options
+ ;;
+ esac
+ if [ "$ConnectedMonitor" = Auto ]
+ then
+ echo "auto connection"
+ else
+ echo "Option \"ConnectedMonitor\" \"$ConnectedMonitor\"" >> /tmp/options
+ echo "Option \"FlatPanelProperties\" \"Scaling = centered, Dithering = enabled\"" >> /tmp/options
+ echo "Option \"DigitalVibrance\" \"0\"" >> /tmp/options
+ fi
+
+ if [ "$XignoreEDID" = 1 ]
+ then
+ EDIDvalue=true
+ EDIDFREQ=false
+ DS=" DisplaySize $XDisplaysize"
+ HS=" HorizSync $XHsync"
+ VR=" VertRefresh $XVrefresh"
+ else
+ EDIDvalue=false
+ EDIDFREQ=true
+ DS="# Display size edid used "
+ HS="# Hsync edid used "
+ VR="# Vertrefresh edid used "
+ fi
+ echo "Option \"UseEdidFreqs\" \"$EDIDFREQ\"" >> /tmp/options
+ echo "Option \"IgnoreEDID\" \"$EDIDvalue\"" >> /tmp/options
+
+
+ sed -e "s/^.*Modes.*$/${ML}/" \
+ -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \
+ -e "s/^.*DisplaySize.*$/ $DS/" \
+ -e "s/^#.*HorizSync.*$/ $HS/g" \
+ -e "s/^#.*VertRefresh.*$/ $VR/g" \
+ -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF"
+ ;;
+
+ ati|ATI)
+ case $Xconnection in
+ DVI) ConnectedMonitor="tmds1,nocrt1,notv";;
+ VGA) ConnectedMonitor="crt1,notmds1,notv" ;;
+ TV) ConnectedMonitor="tv,nocrt1,notmds1"
+ echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options
+ echo "Option \"TVFormat\" \"$XTVconnection\"" >> /tmp/options
+ ;;
+ esac
+ if [ "$XignoreEDID" = 1 ]
+ then
+ DS=" DisplaySize $XDisplaysize"
+ HS=" HorizSync $XHsync"
+ VR=" VertRefresh $XVrefresh"
+ else
+ DS="# Display size edid used "
+ HS="# Hsync edid used "
+ VR="# Vertrefresh edid used "
+ fi
+
+ echo "Option \"ForceMonitors\" \"$ConnectedMonitor\"" >> /tmp/options
+
+ sed -e "s/^.*Modes.*$/\t $ML/" \
+ -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \
+ -e "s/^.*DisplaySize.*$/ $DS/" \
+ -e "s/^#.*HorizSync.*$/ $HS/g" \
+ -e "s/^#.*VertRefresh.*$/ $VR/g" \
+ -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.ati" > "$XORG_CONF"
+ ;;
+
+ via|VIA|Via|S3)
+ # Need to add appropriate Modules, Device and DRI sections
+ # See the http://www.mythtv.org/wiki/XvMC wiki page
+ echo "no via here"
+ ;;
+
+ *)
+ echo "unknown card type"
+ ;;
+ esac
+}
+
+
+function setupX {
+ Xvalues
+ #echo "$currentmode ____ ${Xres}"
+ #if [ "${currentmode}" != \"${Xres}\" ]
+ if [ x = x ]
+ then
+ case $VGACARDTYPE in
+ nVidia)
+ if [ ${Xres} = Auto ]
+ then
+ sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF"
+ else
+ sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF"
+ fi
+ if [ "$TESTMODE" != "test" ]
+ then
+ #nvidia check right here
+ grep -qi "$CARDID" "$NVIDIA_96XX"
+ if [ $? = 0 ]
+ then
+ #install 96xx drivers
+ echo "installing nvidia 96xx drivers"
+ pacman --noconfirm -Rd libgl > /dev/null 2>&1
+ pacman --noconfirm -R $NVPKGS > /dev/null 2>&1
+ pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1
+ else
+ #install latest drivers
+ echo "installing current nvidia drivers"
+ pacman --noconfirm -Rd libgl > /dev/null 2>&1
+ pacman --noconfirm -R $NVPKGS > /dev/null 2>&1
+ pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1
+ fi
+ fi
+ echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG"
+ ;;
+
+ # VMware)
+ # sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF"
+ # ;;
+
+ VIA|S3)
+ # There are actually multiple options here
+ # xf86-video-openchrome
+ # xf86-video-unichrome
+ # There is also a seperate driver for the Unichrome Pro
+ if [ ${Xres} = Auto ]
+ then
+ sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF"
+ else
+ sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF"
+ fi
+ if [ "$TESTMODE" != "test" ]
+ then
+ if [ "$OPENCHROME" = "1" ]
+ then
+ pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1
+ pacman --noconfirm -S libgl unichrome-dri xf86-video-openchrome > /dev/null 2>&1
+ else
+ pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1
+ pacman --noconfirm -S libgl unichrome-dri xf86-video-unichrome > /dev/null 2>&1
+ fi
+ fi
+ # I'm making educated guesses here...
+ if lspci | grep "VGA" | grep -qi "Unichrome Pro"
+ then
+ if [ -f "/usr/lib/libchromeXvMCPro.so.1" ]
+ then
+ echo "/usr/lib/libchromeXvMCPro.so.1" > "$XVMC_CONFIG"
+ else
+ echo "/usr/lib/libviaXvMCPro.so.1" > "$XVMC_CONFIG"
+ fi
+ else
+ if [ -f "/usr/lib/libchromeXvMC.so.1" ]
+ then
+ echo "/usr/lib/libchromeXvMC.so.1" > "$XVMC_CONFIG"
+ else
+ echo "/usr/lib/libviaXvMC.so.1" > "$XVMC_CONFIG"
+ fi
+ fi
+ ;;
+
+ Intel|intel)
+ if [ ${Xres} = Auto ]
+ then
+ sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF"
+ else
+ sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF"
+ fi
+ if [ "$TESTMODE" != "test" ]
+ then
+ pacman --noconfirm -R nvidia-utils > /dev/null 2>&1
+ pacman --noconfirm -S libgl > /dev/null 2>&1
+ fi
+ echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG"
+ ;;
+
+ vesa|InnoTek)
+ if [ ${Xres} = Auto ]
+ then
+ sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF"
+ else
+ sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF"
+ fi
+ ;;
+
+ *)
+ XCONF=/root/xorg.conf.new
+ XCONFB=/etc/X11/xorg.conf.install
+ X -configure
+ if [ -f "$XCONF" ]
+ then
+ echo "Using $XCONF"
+ if [ ${Xres} = Auto ]
+ then
+ grep -v Modes "$XCONF" | sed -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF"
+ else
+ grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\"" -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF"
+ fi
+ elif [ -f "$XCONFB" ]
+ then
+ echo "Using $XCONFB"
+ if [ ${Xres} = Auto ]
+ then
+ sed -e "/^.*Modes.*$/d" "$XCONFB" > "$XORG_CONF"
+ else
+ sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF"
+ fi
+ else
+ echo "Xorg configuration failed"
+ fi
+ rm -f "$XCONF" 2>&1 > /dev/null
+ ;;
+ esac
+ fi
+
+}
+
+#MAIN
+TESTMODE="$1"
+if [ "$TESTMODE" = "test" ]
+then
+ XORG_CONF="/tmp/xorg.conf.test"
+ XVMC_CONFIG="/tmp/XvMCConfig.test"
+ XUseAdvanced="1"
+ XIgnoreConfig="${2}"
+ Xcardtype="${3}"
+ XIgnoreEDID="${4}"
+ Xconnection="${5}"
+ XHsync="${6}"
+ XVrefresh="${7}"
+ Xresadvanced="${8}"
+ XTVstandard="${9}"
+ XTVconnection="${10}"
+ XDisplaysize="${11}"
+else
+ if [ -f /etc/systemconfig ]
+ then
+ . /etc/systemconfig
+ else
+ Xres="800x600"
+ fi
+ CMDLINE=$(cat /proc/cmdline)
+ echo $CMDLINE | grep -q displayres
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*displayres=}
+ DSR=${TEMPVAR%% *}
+ fi
+ if [ ! x$DSR = x ]
+ then
+ Xres=$DSR
+ fi
+ if [ ! x$DISPLAYRES = x ]
+ then
+ Xres=$DISPLAYRES
+ fi
+
+ XORG_CONF="/etc/X11/xorg.conf"
+ XVMC_CONFIG="/etc/X11/XvMCConfig"
+fi
+presetupX