You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
4.0 KiB
156 lines
4.0 KiB
#!/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
|
|
|