diff -urN linux-devel-virgin/drivers/sound/sb.h linux/drivers/sound/sb.h --- linux-devel-virgin/drivers/sound/sb.h Tue Mar 7 13:40:24 2000 +++ linux/drivers/sound/sb.h Sat Mar 18 14:47:10 2000 @@ -151,6 +151,7 @@ int sb_dsp_init (struct address_info *hw_config); void sb_dsp_unload(struct address_info *hw_config, int sbmpu); int sb_mixer_init(sb_devc *devc); +int sb_mixer_unload(sb_devc *devc); void sb_mixer_set_stereo (sb_devc *devc, int mode); void smw_mixer_init(sb_devc *devc); void sb_dsp_midi_init (sb_devc *devc); diff -urN linux-devel-virgin/drivers/sound/sb_common.c linux/drivers/sound/sb_common.c --- linux-devel-virgin/drivers/sound/sb_common.c Sat Mar 18 02:23:30 2000 +++ linux/drivers/sound/sb_common.c Sat Mar 18 14:46:20 2000 @@ -908,13 +908,10 @@ } if (!(devc->caps & SB_NO_AUDIO && devc->caps & SB_NO_MIDI)) { - extern int sbmixnum; - if (devc->irq > 0) free_irq(devc->irq, devc); - sound_unload_mixerdev(devc->my_mixerdev); - sbmixnum--; + sb_mixer_unload(devc); /* We don't have to do this bit any more the UART401 is its own master -- Krzysztof Halasa */ /* But we have to do it, if UART401 is not detected */ diff -urN linux-devel-virgin/drivers/sound/sb_mixer.c linux/drivers/sound/sb_mixer.c --- linux-devel-virgin/drivers/sound/sb_mixer.c Mon Feb 28 07:18:20 2000 +++ linux/drivers/sound/sb_mixer.c Sat Mar 18 14:45:26 2000 @@ -740,3 +740,9 @@ sb_mixer_reset(devc); return 1; } + +void sb_mixer_unload(sb_devc *devc) +{ + sound_unload_mixerdev(devc->my_mixerdev); + sbmixnum--; +}