diff options
| author | Don Lewis <truckman@FreeBSD.org> | 2004-05-13 11:32:54 +0000 |
|---|---|---|
| committer | Don Lewis <truckman@FreeBSD.org> | 2004-05-13 11:32:54 +0000 |
| commit | 9d2820eaac40684b434212abe02d0cb344dbc08a (patch) | |
| tree | 89cc28bc9f80dee94d8c608e4f6414e1b5f01466 | |
| parent | ea4ac135ff6e5e1881e3ebe0e730bcf1223cfbe7 (diff) | |
Notes
| -rw-r--r-- | sys/dev/sound/isa/sb.h | 1 | ||||
| -rw-r--r-- | sys/dev/sound/isa/sb16.c | 15 | ||||
| -rw-r--r-- | sys/dev/sound/isa/sbc.c | 6 |
3 files changed, 19 insertions, 3 deletions
diff --git a/sys/dev/sound/isa/sb.h b/sys/dev/sound/isa/sb.h index ff09ef275a5e..ddcb863f5de6 100644 --- a/sys/dev/sound/isa/sb.h +++ b/sys/dev/sound/isa/sb.h @@ -8,6 +8,7 @@ struct sbc_softc; void sbc_lock(struct sbc_softc *); +void sbc_lockassert(struct sbc_softc *); void sbc_unlock(struct sbc_softc *); /* diff --git a/sys/dev/sound/isa/sb16.c b/sys/dev/sound/isa/sb16.c index 87683ce6431b..66fe1228c8d6 100644 --- a/sys/dev/sound/isa/sb16.c +++ b/sys/dev/sound/isa/sb16.c @@ -124,6 +124,12 @@ sb_lock(struct sb_info *sb) { } static void +sb_lockassert(struct sb_info *sb) { + + sbc_lockassert(device_get_softc(sb->parent_dev)); +} + +static void sb_unlock(struct sb_info *sb) { sbc_unlock(device_get_softc(sb->parent_dev)); @@ -266,12 +272,11 @@ sb_reset_dsp(struct sb_info *sb) { u_char b; - sb_lock(sb); + sb_lockassert(sb); sb_wr(sb, SBDSP_RST, 3); DELAY(100); sb_wr(sb, SBDSP_RST, 0); b = sb_get_byte(sb); - sb_unlock(sb); if (b != 0xAA) { DEB(printf("sb_reset_dsp 0x%lx failed\n", rman_get_start(sb->io_base))); @@ -799,8 +804,12 @@ sb16_attach(device_t dev) if (sb16_alloc_resources(sb, dev)) goto no; - if (sb_reset_dsp(sb)) + sb_lock(sb); + if (sb_reset_dsp(sb)) { + sb_unlock(sb); goto no; + } + sb_unlock(sb); if (mixer_init(dev, &sb16mix_mixer_class, sb)) goto no; if (snd_setup_intr(dev, sb->irq, 0, sb_intr, sb, &sb->ih)) diff --git a/sys/dev/sound/isa/sbc.c b/sys/dev/sound/isa/sbc.c index 3badd6579e7e..bd06b69455b5 100644 --- a/sys/dev/sound/isa/sbc.c +++ b/sys/dev/sound/isa/sbc.c @@ -132,6 +132,12 @@ sbc_lock(struct sbc_softc *scp) } void +sbc_lockassert(struct sbc_softc *scp) +{ + snd_mtxassert(scp->lock); +} + +void sbc_unlock(struct sbc_softc *scp) { snd_mtxunlock(scp->lock); |
