mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-13 03:03:15 +00:00
c08cfc3dc9
- extend a start-up script with a workaround for Via Apollo KX133 chipset. Submitted by: maintainer
83 lines
2.2 KiB
Bash
83 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
|
|
|