--- rc.afb- 2004-05-27 17:59:23.549406000 +0000 +++ rc.afb 2004-05-27 18:32:34.709406000 +0000 @@ -10,25 +10,44 @@ exit 0 fi -if [ `/bin/dmesg | /bin/grep -c "Elite 3D"` -eq 0 ] +# The microcode loader binary and the microcode +# itself must exist. +if [ ! -x /usr/sbin/afbinit -o ! -f /usr/lib/afb.ucode ] then exit 0 fi -# The microcode loader binary and the microcode -# itself must exist. -if [ ! -x /usr/sbin/afbinit -o ! -f /usr/lib/afb.ucode ] +# Make FB device list, depending on which kind of kernel we have. +# First, try kernel 2.4.x + +if [ `/bin/dmesg | /bin/grep -c "Elite 3D"` -gt 0 ] then + + afb_devs=`/bin/dmesg | /bin/egrep -i "Elite 3D" | /bin/sed 's/\:.*//'` + + # Load microcode onto each card. + for AFB in ${afb_devs} + do + echo -n "${AFB}: Loading Elite3D microcode... " + /usr/sbin/afbinit /dev/${AFB} /usr/lib/afb.ucode + echo "done." + done exit 0 fi +## +# OK, we're not kernel 2.4.x +# try kernel 2.6.x -# Make FB device list. -afb_devs=`/bin/dmesg | /bin/egrep -i "Elite 3D" | /bin/sed 's/\:.*//'` +if [ `/bin/dmesg | /bin/grep -c "ffb: AFB"` -gt 0 ] +then -# Load microcode onto each card. -for AFB in ${afb_devs} -do - echo -n "${AFB}: Loading Elite3D microcode... " - /usr/sbin/afbinit /dev/${AFB} /usr/lib/afb.ucode - echo "done." -done + afb_devs=`/bin/more -s /proc/fb | /bin/egrep -i "Elite 3D" | /bin/sed 's/\ .*//'` + # Load microcode onto each card. + for AFB in ${afb_devs} + do + echo -n "/dev/fb/${AFB}: Loading Elite3D microcode... " + /usr/sbin/afbinit /dev/fb/${AFB} /usr/lib/afb.ucode + echo "done." + done + exit 0 +fi