summaryrefslogtreecommitdiffstats
path: root/move/tree/sound.initscript
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2003-12-05 16:07:43 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2003-12-05 16:07:43 +0000
commit690c0c5602db9bf3ff954a9846a6766aa3a8e8cf (patch)
treeb8f5b3ba1da87a25b1e8cd2f9c13ea1803890a99 /move/tree/sound.initscript
parentd7635f540b77d89d1e0f98b438445b60a78b38fd (diff)
downloaddrakx-690c0c5602db9bf3ff954a9846a6766aa3a8e8cf.tar
drakx-690c0c5602db9bf3ff954a9846a6766aa3a8e8cf.tar.gz
drakx-690c0c5602db9bf3ff954a9846a6766aa3a8e8cf.tar.bz2
drakx-690c0c5602db9bf3ff954a9846a6766aa3a8e8cf.tar.xz
drakx-690c0c5602db9bf3ff954a9846a6766aa3a8e8cf.zip
titi fixes sound initscript for some alsa devices
Diffstat (limited to 'move/tree/sound.initscript')
-rwxr-xr-xmove/tree/sound.initscript116
1 files changed, 116 insertions, 0 deletions
diff --git a/move/tree/sound.initscript b/move/tree/sound.initscript
new file mode 100755
index 000000000..756f22398
--- /dev/null
+++ b/move/tree/sound.initscript
@@ -0,0 +1,116 @@
+#!/bin/sh
+# (c) MandrakeSoft, Chmouel Boudjnah <chmouel@mandrakesoft.com>
+# $Id$
+#
+# sound: This shell script launch the sound on your system.
+#
+# chkconfig: 2345 18 69
+# description: This shell script launch the sound on your system.
+
+. /etc/rc.d/init.d/functions
+
+PKLVL=$(cut -f1 /proc/sys/kernel/printk)
+sysctl -n -w kernel.printk=0
+
+function start_mixer () {
+ # ALSA
+ if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ]; then
+ # is ALSA already configured ?
+ if [[ ! -r /etc/asound.state ]]; then
+ # provide decent default sound level for alsa drivers
+ if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
+ MIXER_SETTINGS=/root/tmp/asound.state_tmp
+ alsactl -f $MIXER_SETTINGS store
+ # set sensible defaults:
+ perl -pi /usr/bin/alsa_default.pl $MIXER_SETTINGS
+ action "Setting mixer settings" alsactl -f $MIXER_SETTINGS restore
+ rm -f $MIXER_SETTINGS
+ return 0
+ fi
+ # if we've not alsa-utils, we'll fallback on OSS initialization below
+ else
+ # Not first boot:
+ # Done by alsa service but only if sound service is not
+ # enabled (hance this code path).
+ # We'll merge in back aksa service once mdk9.2 is released.
+ # [but we'll still handle both aumix & alsactl in order
+ # to manage packages removing / driver switch]
+ action "Loading mixer settings" /usr/sbin/alsactl restore
+ return 0
+ fi
+ fi
+ # OSS
+ if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && \
+ [ "$retval" -eq 0 ] && [ -x /usr/bin/aumix ];then
+ if [ ! -r /etc/.aumixrc ];then
+ action "Setting mixer settings" /usr/bin/aumix -v80 -w80 -c80
+ else
+ action "Loading mixer settings" /usr/bin/aumix -f /etc/.aumixrc -L
+ fi
+ fi
+}
+
+function stop_mixer () {
+ if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
+ # done by alsa service (to merge back after mdk9.2 release)
+ #action "Saving mixer settings" /usr/sbin/alsactl store
+ return 0;
+ fi
+ if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && [ -x /usr/bin/aumix ];then
+ action "Saving mixer settings" /usr/bin/aumix -f /etc/.aumixrc -S
+ fi
+}
+
+function module () {
+ opt=""
+ phrase=$1
+ alias=$2
+ [ -n "$3" ] && opt="-r"
+ module=`/sbin/modprobe -c | egrep -s "^alias( |\t)+"$alias"( |\t)+" | awk '{ print $3 }'`
+ if [ -n "$module" ] && [ "$module" != "off" ];then
+ action "$phrase ($module)" modprobe "$opt" $module
+ return $?
+ fi
+}
+
+case $1 in
+ start)
+ retval=0
+ if [ ! -d /proc/asound ];then
+ module "Loading sound module" sound || retval=1
+ /sbin/modprobe -c | awk '/^((alias)|(probe)) +sound-slot-[0-9]/ {print $2}' | ( \
+ while read line; do
+ [[ $line = snd-card-* ]] && continue #we do it via alsa script
+ module "Loading sound module" $line || retval=1
+ done
+ )
+ module "Loading midi module" midi
+ fi
+ start_mixer;
+ touch /var/lock/subsys/sound
+ ;;
+ stop)
+ # i should have the same semantic of alsa script than oss script,
+ # but i do not :-(, patches welcome.
+ stop_mixer;
+ rm -f /var/lock/subsys/sound
+ ;;
+ status)
+ if egrep -q '(sparcaudio|sound)' /proc/devices;then
+ gprintf "Sound loaded"
+ echo
+ fi
+ ;;
+ reload)
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: %s\n" "$(basename $0) {start|stop|restart|status}"
+ exit 0
+esac
+
+sysctl -n -w kernel.printk=$PKLVL
+exit 0