|
|
|
#!/bin/bash
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
|
|
#
|
|
|
|
# Filename: package/.../xorg-server/xcfgt2.sh
|
|
|
|
# Copyright (C) 2008 The OpenSDE Project
|
|
|
|
# Copyright (C) 2005-2006 The T2 SDE Project
|
|
|
|
# Copyright (C) 2005-2006 Rene Rebe
|
|
|
|
#
|
|
|
|
# More information can be found in the files COPYING and README.
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation; version 2 of the License. A copy of the
|
|
|
|
# GNU General Public License can be found in the file COPYING.
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
|
|
|
|
# Quick T2 live X driver matching ...
|
|
|
|
|
|
|
|
tmp=`mktemp`
|
|
|
|
|
|
|
|
card="`lspci | sed -n 's/.*VGA .*: //p'`"
|
|
|
|
[ "$card" ] || card="`cat /sys/class/graphics/fb0/name`"
|
|
|
|
|
|
|
|
echo "Video card: $card"
|
|
|
|
|
|
|
|
# defaults
|
|
|
|
# no driver? fallback to either vesa or fbdev ...
|
|
|
|
case `uname -m` in
|
|
|
|
i*86*|x86*64) xdrv=vesa ;;
|
|
|
|
*) xdrv=fbdev ;;
|
|
|
|
esac
|
|
|
|
depth=16
|
|
|
|
modules=
|
|
|
|
|
|
|
|
case `echo "$card" | tr A-Z a-z` in
|
|
|
|
*radeon*) xdrv=radeon ;;
|
|
|
|
*geforce*) xdrv=nv ;;
|
|
|
|
*cirrus*) xdrv=cirrus ;;
|
|
|
|
*savage*) xdrv=savage ;;
|
|
|
|
*unichrome*|*castlerock*) xdrv=via ;;
|
|
|
|
*virge*) xdrv=s3virge ;;
|
|
|
|
*s3*) xdrv=s3 ;;
|
|
|
|
|
|
|
|
*intel*7*) xdrv=i740 ;;
|
|
|
|
*intel*8*|*intel*9*|*intel*mobile*) xdrv=i810 ;;
|
|
|
|
|
|
|
|
*trident*) xdrv=trident ;;
|
|
|
|
*rendition*) xdrv=rendition ;;
|
|
|
|
*neo*) xdrv=neomagic ;;
|
|
|
|
*tseng*) xdrv=tseng ;;
|
|
|
|
|
|
|
|
*parhelia*) xdrv=mtx ;;
|
|
|
|
*matrox*) xdrv=mga ;;
|
|
|
|
|
|
|
|
*cyrix*) xdrv=cyrix ;;
|
|
|
|
*silicon\ motion*) xdrv=siliconmotion ;;
|
|
|
|
*chips*) xdrv=chips ;;
|
|
|
|
|
|
|
|
*3dfx*) xdrv="tdfx" ;;
|
|
|
|
*permedia*|*glint*) xdrv="glint" ;;
|
|
|
|
|
|
|
|
*vmware*) xdrv="vmware" ;;
|
|
|
|
|
|
|
|
*ark\ logic*) xdrv="ark" ;;
|
|
|
|
*dec*tga*) xdrv="tga" ;;
|
|
|
|
|
|
|
|
*national\ semi*|*amd*) xdrv=nsc ;;
|
|
|
|
|
|
|
|
*ati\ *) xdrv=ati ;;
|
|
|
|
*sis*|*xgi*) xdrv=sis ;;
|
|
|
|
|
|
|
|
creator\ 3d|elite\ 3d) xdrv=sunffb ; depth=24 ;;
|
|
|
|
|
|
|
|
# must be last so *nv* does not match one of the above
|
|
|
|
*nv*) xdrv=nv ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# use the nvidia binary only driver - if available ...
|
|
|
|
if [ "$xdrv" = nv -a -f /usr/X11/lib/xorg/modules/drivers/nvidia_drv.o ]; then
|
|
|
|
xdrv=nvidia
|
|
|
|
|
|
|
|
echo "Installing nvidia GL libraries and headers ..."
|
|
|
|
rm -rf /usr/X11/lib/libGL.*
|
|
|
|
cp -arv /usr/src/nvidia/lib/* /usr/X11/lib/
|
|
|
|
cp -arv /usr/src/nvidia/X11R6/lib/* /usr/X11/lib/
|
|
|
|
cp -arv /usr/src/nvidia/include/* /usr/X11/lib/GL/
|
|
|
|
ln -sf /usr/X11/lib/xorg/modules/extensions/{libglx.so.1.0.*,libglx.so}
|
|
|
|
|
|
|
|
echo "Updating dynamic library database ..."
|
|
|
|
ldconfig /usr/X11/lib
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "X Driver: $xdrv"
|
|
|
|
|
|
|
|
horiz_sync=
|
|
|
|
vert_refresh=
|
|
|
|
modes=
|
|
|
|
|
|
|
|
if [[ `uname -m` = i*86 ]]; then
|
|
|
|
ddcprobe > $tmp
|
|
|
|
|
|
|
|
if grep -q failed $tmp ; then
|
|
|
|
echo "DDC read failed"
|
|
|
|
else
|
|
|
|
grep "Standard timing" $tmp
|
|
|
|
defx=`grep "Horizontal blank time" $tmp | cut -d : -f 2 |
|
|
|
|
sort -nu | tail -n 1`
|
|
|
|
defy=`grep "Vertical blank time" $tmp | cut -d : -f 2 |
|
|
|
|
sort -nu | tail -n 1`
|
|
|
|
|
|
|
|
defx=${defx:-0}
|
|
|
|
defy=${defy:-0}
|
|
|
|
|
|
|
|
while read m ; do
|
|
|
|
x=${m/x*/}
|
|
|
|
y=${m/*x/}
|
|
|
|
if [ $defx -eq 0 -o $x -le $defx ] &&
|
|
|
|
[ $defy -eq 0 -o $y -le $defy ]; then
|
|
|
|
echo "mode $x $y ok"
|
|
|
|
modes="$modes \"${x}x${y}\""
|
|
|
|
else
|
|
|
|
echo "mode $x $y skipped"
|
|
|
|
fi
|
|
|
|
done < <( grep -A 1000 '^Established' $tmp |
|
|
|
|
grep -B 1000 '^Standard\|^Detailed' |
|
|
|
|
sed -e 's/[\t ]*\([^ ]*\).*/\1/' -e '/^[A-Z]/d' |
|
|
|
|
sort -rn | uniq )
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$modes" ]; then
|
|
|
|
modes="`sed -n 's/.:\(.*x.*\)-[[:digit:]]\+/"\1"/p ; q' /sys/class/graphics/fb0/modes`"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$modes" ]; then
|
|
|
|
echo "No modes from DDC or FB detection, using defaults!"
|
|
|
|
modes='"1024x768" "800x600" "640x480"'
|
|
|
|
horiz_sync="HorizSync 24.0 - 65.0"
|
|
|
|
vert_refresh="VertRefresh 50 - 75"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Using modes: $modes"
|
|
|
|
echo " @ depth: $depth"
|
|
|
|
[ "$hoiz_sync" -o "$vert_refresh" ] &&
|
|
|
|
echo " horiz: $horiz_sync" &&
|
|
|
|
echo " vert: $vert_refresh"
|
|
|
|
|
|
|
|
[ -f /etc/X11/xorg.conf ] && cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
|
|
|
|
|
|
|
|
sed -e "s/\$xdrv/$xdrv/g" -e "s/\$modes/$modes/g" -e "s/\$depth/$depth/g" \
|
|
|
|
-e "s/\$horiz_sync/$horiz_sync/g" \
|
|
|
|
-e "s/\$vert_refresh/$vert_refresh/g" \
|
|
|
|
/etc/X11/xorg.conf.template > /etc/X11/xorg.conf
|
|
|
|
|
|
|
|
rm $tmp
|