this is my solution to the muting in ALSA:
this is for the suspend2 kernel patch, but solution will work for other scenarios. my sound card is snd-index8x0, with 22.214.171.124 kernel, fedora distro.
store this script in /bin as alsafix. if you need to add more channels to reset upon awakening, you can find them with alsamixer and amixer... just put the name of the channel, and the state to set it too, as shown.
here's the script:
if [ "$2" == "mute" ]; then
for state in $first $last; do
amixer sset "$1" "$state"
fix 'Master' unmute
fix 'PCM' unmute
fix 'External Amplifier' mute
save it to /bin/alsafix. then run chmod +x /bin/alsafix/
add this line to /etc/hibernate/hibernate.conf
onResume 20 alsafix
when your computer comes out of hibernate, it will reset your channels so the audio will work, without having to restart alsa or unload / load your module.