core/alsa-utils/alsa

63 lines
1.6 KiB
Plaintext
Raw Normal View History

2010-05-22 06:07:29 +08:00
#!/bin/bash
. /etc/rc.conf
. /etc/conf.d/alsa
. /etc/rc.d/functions
case "$1" in
start)
stat_busy "Restoring ALSA Levels"
if [[ ! -e /var/lib/alsa/asound.state ]]; then
/usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
fi
if /usr/sbin/alsactl $ALSA_ARGS restore; then
2010-05-22 06:07:29 +08:00
stat_done
add_daemon alsa
else
stat_fail
exit 1
2010-05-22 06:07:29 +08:00
fi
POWERSAVE=${POWERSAVE:-0}
if [[ -e /sys/module/snd_ac97_codec/parameters/power_save ]] \
&& (( $POWERSAVE )); then
2010-05-22 06:07:29 +08:00
echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save
[[ -c /dev/dsp ]] && echo 1 > /dev/dsp
2010-05-22 06:07:29 +08:00
fi
if [[ -e /sys/module/snd_hda_intel/parameters/power_save ]] \
&& (( $POWERSAVE )); then
2010-05-22 06:07:29 +08:00
echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save
[[ -c /dev/dsp ]] && echo 1 > /dev/dsp
2010-05-22 06:07:29 +08:00
fi
;;
stop)
SAVE_VOLUME=${SAVE_VOLUME:-yes}
if [[ "$SAVE_VOLUME" = "yes" ]]; then
2010-05-22 06:07:29 +08:00
stat_busy "Saving ALSA Levels"
/usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
2010-05-22 06:07:29 +08:00
else
stat_busy "Stopping ALSA"
fi
if [ "$MUTE_VOLUME" == "yes" ]; then
/usr/bin/amixer -q set Master 0 mute || { stat_fail; exit 1; }
2010-05-22 06:07:29 +08:00
fi
stat_done
rm_daemon alsa
2010-05-22 06:07:29 +08:00
;;
restart)
$0 stop
sleep 1
$0 start
;;
force-restart)
stat_busy "Trying to TERM or KILL processes that are blocking ALSA..."
FILES="$(ls -1 /dev/snd/* | grep -vi control)"
fuser -k -SIGTERM $FILES
fuser -k $FILES
stat_done
$0 restart
;;
2010-05-22 06:07:29 +08:00
*)
echo "usage: $0 {start|stop|restart|force-restart}"
2010-05-22 06:07:29 +08:00
esac