diff options
author | Garrett D'Amore <gdamore@opensolaris.org> | 2009-10-25 21:17:26 -0700 |
---|---|---|
committer | Garrett D'Amore <gdamore@opensolaris.org> | 2009-10-25 21:17:26 -0700 |
commit | 4a20ca87c19352fb04bb75918ba0231663faa6a8 (patch) | |
tree | 065f90d9c6177a7517313ab0a545c2b3303457c3 /usr/src | |
parent | e2b0eee61c017ae644a21eb00048a7e27050b265 (diff) | |
download | illumos-joyent-4a20ca87c19352fb04bb75918ba0231663faa6a8.tar.gz |
6894986 assertion() failure in audiols
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/io/audio/drv/audiols/audiols.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/usr/src/uts/common/io/audio/drv/audiols/audiols.c b/usr/src/uts/common/io/audio/drv/audiols/audiols.c index e25f81719a..f167507dcb 100644 --- a/usr/src/uts/common/io/audio/drv/audiols/audiols.c +++ b/usr/src/uts/common/io/audio/drv/audiols/audiols.c @@ -743,6 +743,17 @@ audigyls_setup_intrs(audigyls_dev_t *dev) } void +audigyls_del_controls(audigyls_dev_t *dev) +{ + for (int i = 0; i < CTL_NUM; i++) { + if (dev->controls[i].ctrl) { + audio_dev_del_control(dev->controls[i].ctrl); + dev->controls[i].ctrl = NULL; + } + } +} + +void audigyls_destroy(audigyls_dev_t *dev) { if (dev->ih != NULL) { @@ -780,6 +791,9 @@ audigyls_destroy(audigyls_dev_t *dev) if (dev->ac97 != NULL) { ac97_free(dev->ac97); } + + audigyls_del_controls(dev); + if (dev->adev != NULL) { audio_dev_free(dev->adev); } @@ -959,8 +973,6 @@ audigyls_configure_mixer(audigyls_dev_t *dev) { unsigned int r, v1, v2; - ASSERT(mutex_owned(&dev->mutex)); - /* output items */ /* front */ r = 0xffff - audigyls_stereo_scale(dev->controls[CTL_FRONT].val, 8); |