freebsd-ports/audio/aureal-kmod/files/aureal.sh
Maxim Sobolev c08cfc3dc9 - Unbreak on -stable;
- extend a start-up script with a workaround for Via Apollo KX133 chipset.

Submitted by:	maintainer
2002-05-15 18:16:23 +00:00

82 lines
2.2 KiB
Bash

#!/bin/sh
#---------------------------------------------------------------------
#
# I. Auto-detection of your Aureal Vortex sound card
#
# If for some reason this script fails to guess the type of your
# Aureal card correctly, you can manually override it here.
# Set this to 8810 (Vortex Advantage), 8820 (Vortex 1) or 8830
# (Vortex 2):
#
#CARD=8830
#
# II. VIA Apollo KX133 lock-up issue workaround
#
# If your AMD Athlon system is based on a VIA Apollo KX133 motherboard
# chipset, your system will most certainly lock up shortly after
# you start a playback. To work around this issue please uncomment
# this line:
#
#VIAKX133FIX=yes
#---------------------------------------------------------------------
PCICONF="/usr/sbin/pciconf"
if [ -z "${CARD}" -a -x ${PCICONF} ]; then
if [ "`${PCICONF} -l 2>&- | grep 0x000312eb`" ]; then
CARD=8810
elif [ "`${PCICONF} -l 2>&- | grep 0x000112eb`" ]; then
CARD=8820
elif [ "`${PCICONF} -l 2>&- | grep 0x000212eb`" ]; then
CARD=8830
fi
fi
if [ -z "${CARD}" ]; then
echo "Unable to determine your Aureal card type -" \
"override it manually in $0" >&2
exit 255
fi
PREFIX=%%PREFIX%%
LIBDIR=${PREFIX}/lib/au88x0
DRIVERFILE=snd_au${CARD}.ko
case "$1" in
start)
if [ ! -f ${LIBDIR}/${DRIVERFILE} ]; then
echo ""
echo "${LIBDIR}/${DRIVERFILE} for ${CARD} not found!"
echo ""
exit 64
fi
/sbin/kldload ${LIBDIR}/${DRIVERFILE}
echo -n " aureal-kmod"
# Increase PCI timeout for broken VIA Apollo KX133 chipsets
# NOTE: This assumes your Aureal card is the pcm0 device
if [ "$VIAKX133FIX" ]; then
pcisel=`${PCICONF} -l 2>&- | grep ^pcm0 | awk -F: '{ gsub("^[^@]*@", ""); print $1":"$2":"$3 }'`
if [ -z "$pcisel" ]; then
echo " (WARNING: Soundcard PCI selector undetermined. Unable to install VIA KX133 workaround. Starting a playback will likely to lock-up your system!)"
exit 64
fi
oldvalue=`${PCICONF} -r -b $pcisel 0x40 2>&- | sed 's/ *$//'`
echo -n " (with VIA KX133 workaround: ${pcisel},0x40: ${oldvalue} -> "
${PCICONF} -w -b $pcisel 0x40 0xff
echo -n "`${PCICONF} -r -b $pcisel 0x40 2>&- | sed 's/ *$//'`)"
fi
;;
stop)
/sbin/kldunload ${DRIVERFILE}
echo -n " aureal-kmod"
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac