The branch main has been updated by christos:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=9d18115ca0ab0ef3f34173d4e2bdabec916d0b60

commit 9d18115ca0ab0ef3f34173d4e2bdabec916d0b60
Author:     Christos Margiolis <[email protected]>
AuthorDate: 2025-11-21 16:14:33 +0000
Commit:     Christos Margiolis <[email protected]>
CommitDate: 2025-11-21 16:14:47 +0000

    sound: Retire snd_mtx* wrappers
    
    Do not create mutexes with snd_mtxcreate(). It doesn't provide any
    value, plus it first allocates the mutex with malloc(9). Allocate
    mutexes in the stack and use mtx_* functions directly instead of the
    snd_mtx* wrappers.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Reviewed by:    kib, markj
    Differential Revision:  https://reviews.freebsd.org/D53855
---
 sys/arm/allwinner/a10_codec.c        |  10 ++--
 sys/arm/freescale/imx/imx6_ssi.c     |  20 +++----
 sys/arm/freescale/vybrid/vf_sai.c    |  20 +++----
 sys/dev/sound/dummy.c                |  29 +++++-----
 sys/dev/sound/pci/als4000.c          |  50 ++++++++---------
 sys/dev/sound/pci/atiixp.c           |  18 +++---
 sys/dev/sound/pci/cmi.c              |  54 +++++++++---------
 sys/dev/sound/pci/emu10k1.c          |  57 +++++++++----------
 sys/dev/sound/pci/emu10kx-pcm.c      |  47 ++++++++--------
 sys/dev/sound/pci/envy24.c           |  68 +++++++++++------------
 sys/dev/sound/pci/envy24ht.c         |  69 ++++++++++++-----------
 sys/dev/sound/pci/es137x.c           |  16 +++---
 sys/dev/sound/pci/hda/hdaa.c         |   6 +-
 sys/dev/sound/pci/hda/hdac.c         |  15 ++---
 sys/dev/sound/pci/hda/hdac_private.h |   2 +-
 sys/dev/sound/pci/hda/hdacc.c        |   6 +-
 sys/dev/sound/pci/hdsp-pcm.c         |  28 +++++-----
 sys/dev/sound/pci/hdsp.c             |  35 ++++++------
 sys/dev/sound/pci/hdsp.h             |   2 +-
 sys/dev/sound/pci/hdspe-pcm.c        |  28 +++++-----
 sys/dev/sound/pci/hdspe.c            |  35 ++++++------
 sys/dev/sound/pci/hdspe.h            |   2 +-
 sys/dev/sound/pci/ich.c              |  16 +++---
 sys/dev/sound/pci/maestro3.c         |  17 +++---
 sys/dev/sound/pci/solo.c             |  18 +++---
 sys/dev/sound/pci/spicds.c           |  34 ++++++------
 sys/dev/sound/pci/t4dwave.c          |  29 +++++-----
 sys/dev/sound/pci/via8233.c          | 101 +++++++++++++++++----------------
 sys/dev/sound/pci/via82c686.c        |  36 ++++++------
 sys/dev/sound/pcm/ac97.c             |  52 ++++++++---------
 sys/dev/sound/pcm/channel.c          |  16 +++---
 sys/dev/sound/pcm/channel.h          |  14 ++---
 sys/dev/sound/pcm/dsp.c              |   4 +-
 sys/dev/sound/pcm/mixer.c            | 105 +++++++++++++++++------------------
 sys/dev/sound/pcm/sound.c            |  33 +----------
 sys/dev/sound/pcm/sound.h            |  24 +++-----
 sys/dev/sound/usb/uaudio.c           |   2 +-
 37 files changed, 537 insertions(+), 581 deletions(-)

diff --git a/sys/arm/allwinner/a10_codec.c b/sys/arm/allwinner/a10_codec.c
index 0a4ba7aa31b2..d3920eddc1f1 100644
--- a/sys/arm/allwinner/a10_codec.c
+++ b/sys/arm/allwinner/a10_codec.c
@@ -159,7 +159,7 @@ struct a10codec_chinfo {
 struct a10codec_info {
        device_t                dev;
        struct resource         *res[2];
-       struct mtx              *lock;
+       struct mtx              lock;
        bus_dma_tag_t           dmat;
        unsigned                dmasize;
        void                    *ih;
@@ -949,7 +949,7 @@ a10codec_chan_trigger(kobj_t obj, void *data, int go)
        if (!PCMTRIG_COMMON(go))
                return (0);
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        switch (go) {
        case PCMTRIG_START:
                ch->run = 1;
@@ -964,7 +964,7 @@ a10codec_chan_trigger(kobj_t obj, void *data, int go)
        default:
                break;
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -1075,7 +1075,7 @@ a10codec_attach(device_t dev)
        sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
        sc->cfg = (void *)ofw_bus_search_compatible(dev, compat_data)->ocd_data;
        sc->dev = dev;
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "a10codec softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "a10codec_softc", 
MTX_DEF);
 
        if (bus_alloc_resources(dev, a10codec_spec, sc->res)) {
                device_printf(dev, "cannot allocate resources for device\n");
@@ -1180,7 +1180,7 @@ a10codec_attach(device_t dev)
 
 fail:
        bus_release_resources(dev, a10codec_spec, sc->res);
-       snd_mtxfree(sc->lock);
+       mtx_destroy(&sc->lock);
        free(sc, M_DEVBUF);
 
        return (ENXIO);
diff --git a/sys/arm/freescale/imx/imx6_ssi.c b/sys/arm/freescale/imx/imx6_ssi.c
index 5a0e671f15a2..76870cfb29c9 100644
--- a/sys/arm/freescale/imx/imx6_ssi.c
+++ b/sys/arm/freescale/imx/imx6_ssi.c
@@ -173,7 +173,7 @@ struct sc_info {
        bus_space_tag_t         bst;
        bus_space_handle_t      bsh;
        device_t                dev;
-       struct mtx              *lock;
+       struct mtx              lock;
        void                    *ih;
        int                     pos;
        int                     dma_size;
@@ -242,10 +242,10 @@ ssimixer_init(struct snd_mixer *m)
        mask = SOUND_MASK_PCM;
        mask |= SOUND_MASK_VOLUME;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        pcm_setflags(scp->dev, pcm_getflags(scp->dev) | SD_F_SOFTPCMVOL);
        mix_setdevs(m, mask);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -290,14 +290,14 @@ ssichan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
        scp = (struct sc_pcminfo *)devinfo;
        sc = scp->sc;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        ch = &scp->chan[0];
        ch->dir = dir;
        ch->run = 0;
        ch->buffer = b;
        ch->channel = c;
        ch->parent = scp;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        if (sndbuf_setup(ch->buffer, sc->buf_base, sc->dma_size) != 0) {
                device_printf(scp->dev, "Can't setup sndbuf.\n");
@@ -318,9 +318,9 @@ ssichan_free(kobj_t obj, void *data)
        device_printf(scp->dev, "ssichan_free()\n");
 #endif
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        /* TODO: free channel buffer */
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -565,7 +565,7 @@ ssichan_trigger(kobj_t obj, void *data, int go)
        scp = ch->parent;
        sc = scp->sc;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
 
        switch (go) {
        case PCMTRIG_START:
@@ -590,7 +590,7 @@ ssichan_trigger(kobj_t obj, void *data, int go)
                break;
        }
 
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -736,7 +736,7 @@ ssi_attach(device_t dev)
        sc->pos = 0;
        sc->conf = malloc(sizeof(struct sdma_conf), M_DEVBUF, M_WAITOK | 
M_ZERO);
 
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "ssi softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "ssi softc");
        if (sc->lock == NULL) {
                device_printf(dev, "Can't create mtx\n");
                return (ENXIO);
diff --git a/sys/arm/freescale/vybrid/vf_sai.c 
b/sys/arm/freescale/vybrid/vf_sai.c
index 9c0125768fee..6ccfcae2bc2e 100644
--- a/sys/arm/freescale/vybrid/vf_sai.c
+++ b/sys/arm/freescale/vybrid/vf_sai.c
@@ -138,7 +138,7 @@ struct sc_info {
        bus_space_tag_t         bst;
        bus_space_handle_t      bsh;
        device_t                dev;
-       struct mtx              *lock;
+       struct mtx              lock;
        uint32_t                speed;
        uint32_t                period;
        void                    *ih;
@@ -206,10 +206,10 @@ saimixer_init(struct snd_mixer *m)
 
        mask = SOUND_MASK_PCM;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        pcm_setflags(scp->dev, pcm_getflags(scp->dev) | SD_F_SOFTPCMVOL);
        mix_setdevs(m, mask);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -252,14 +252,14 @@ saichan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
        scp = (struct sc_pcminfo *)devinfo;
        sc = scp->sc;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        ch = &scp->chan[0];
        ch->dir = dir;
        ch->run = 0;
        ch->buffer = b;
        ch->channel = c;
        ch->parent = scp;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        if (sndbuf_setup(ch->buffer, sc->buf_base, sc->dma_size) != 0) {
                device_printf(scp->dev, "Can't setup sndbuf.\n");
@@ -280,9 +280,9 @@ saichan_free(kobj_t obj, void *data)
        device_printf(scp->dev, "saichan_free()\n");
 #endif
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        /* TODO: free channel buffer */
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -513,7 +513,7 @@ saichan_trigger(kobj_t obj, void *data, int go)
        struct sc_pcminfo *scp = ch->parent;
        struct sc_info *sc = scp->sc;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
 
        switch (go) {
        case PCMTRIG_START:
@@ -532,7 +532,7 @@ saichan_trigger(kobj_t obj, void *data, int go)
                break;
        }
 
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -691,7 +691,7 @@ sai_attach(device_t dev)
        sc->sr = &rate_map[0];
        sc->pos = 0;
 
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "sai softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "sai softc");
        if (sc->lock == NULL) {
                device_printf(dev, "Cant create mtx\n");
                return (ENXIO);
diff --git a/sys/dev/sound/dummy.c b/sys/dev/sound/dummy.c
index 0a2717ec418c..74ca1d0c924c 100644
--- a/sys/dev/sound/dummy.c
+++ b/sys/dev/sound/dummy.c
@@ -64,7 +64,7 @@ struct dummy_softc {
        int chnum;
        struct dummy_chan chans[DUMMY_NCHAN];
        struct callout callout;
-       struct mtx *lock;
+       struct mtx lock;
        bool stopped;
 };
 
@@ -74,7 +74,7 @@ dummy_active(struct dummy_softc *sc)
        struct dummy_chan *ch;
        int i;
 
-       snd_mtxassert(sc->lock);
+       mtx_assert(&sc->lock, MA_OWNED);
 
        for (i = 0; i < sc->chnum; i++) {
                ch = &sc->chans[i];
@@ -109,9 +109,9 @@ dummy_chan_io(void *arg)
                        ch->ptr %= ch->buf->bufsize;
                } else
                        sndbuf_fillsilence(ch->buf);
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                chn_intr(ch->chan);
-               snd_mtxlock(sc->lock);
+               mtx_lock(&sc->lock);
        }
        if (!sc->stopped)
                callout_schedule(&sc->callout, 1);
@@ -141,7 +141,7 @@ dummy_chan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
 
        sc = devinfo;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
 
        ch = &sc->chans[sc->chnum++];
        ch->sc = sc;
@@ -150,7 +150,7 @@ dummy_chan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
        ch->buf = b;
        ch->caps = &sc->caps;
 
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        bufsz = pcm_getbuffersize(sc->dev, 2048, 2048, 65536);
        buf = malloc(bufsz, M_DEVBUF, M_WAITOK | M_ZERO);
@@ -199,10 +199,10 @@ dummy_chan_trigger(kobj_t obj, void *data, int go)
        struct dummy_chan *ch = data;
        struct dummy_softc *sc = ch->sc;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
 
        if (sc->stopped) {
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                return (0);
        }
 
@@ -222,7 +222,7 @@ dummy_chan_trigger(kobj_t obj, void *data, int go)
                break;
        }
 
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return (0);
 }
@@ -320,8 +320,9 @@ dummy_attach(device_t dev)
 
        sc = device_get_softc(dev);
        sc->dev = dev;
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_dummy softc");
-       callout_init_mtx(&sc->callout, sc->lock, 0);
+       mtx_init(&sc->lock, device_get_nameunit(dev), "snd_dummy softc",
+           MTX_DEF);
+       callout_init_mtx(&sc->callout, &sc->lock, 0);
 
        sc->cap_fmts[0] = SND_FORMAT(AFMT_S32_LE, 2, 0);
        sc->cap_fmts[1] = SND_FORMAT(AFMT_S24_LE, 2, 0);
@@ -362,12 +363,12 @@ dummy_detach(device_t dev)
        struct dummy_softc *sc = device_get_softc(dev);
        int err;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        sc->stopped = true;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        callout_drain(&sc->callout);
        err = pcm_unregister(dev);
-       snd_mtxfree(sc->lock);
+       mtx_destroy(&sc->lock);
 
        return (err);
 }
diff --git a/sys/dev/sound/pci/als4000.c b/sys/dev/sound/pci/als4000.c
index a8c3303af74f..aea7cc6d3a64 100644
--- a/sys/dev/sound/pci/als4000.c
+++ b/sys/dev/sound/pci/als4000.c
@@ -79,7 +79,7 @@ struct sc_info {
        struct resource         *reg, *irq;
        int                     regid, irqid;
        void                    *ih;
-       struct mtx              *lock;
+       struct mtx              lock;
 
        unsigned int            bufsz;
        struct sc_chinfo        pch, rch;
@@ -208,7 +208,7 @@ alschan_init(kobj_t obj, void *devinfo,
        struct  sc_info *sc = devinfo;
        struct  sc_chinfo *ch;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (dir == PCMDIR_PLAY) {
                ch = &sc->pch;
                ch->gcr_fifo_status = ALS_GCR_FIFO0_STATUS;
@@ -223,7 +223,7 @@ alschan_init(kobj_t obj, void *devinfo,
        ch->format = SND_FORMAT(AFMT_U8, 1, 0);
        ch->speed = 8000;
        ch->buffer = b;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        if (sndbuf_alloc(ch->buffer, sc->parent_dmat, 0, sc->bufsz) != 0)
                return NULL;
@@ -278,9 +278,9 @@ alschan_getptr(kobj_t obj, void *data)
        struct sc_info *sc = ch->parent;
        int32_t pos, sz;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        pos = als_gcr_rd(ch->parent, ch->gcr_fifo_status) & 0xffff;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        sz  = ch->buffer->bufsize;
        return (2 * sz - pos - 1) % sz;
 }
@@ -397,7 +397,7 @@ alspchan_trigger(kobj_t obj, void *data, int go)
        if (!PCMTRIG_COMMON(go))
                return 0;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        switch(go) {
        case PCMTRIG_START:
                als_playback_start(ch);
@@ -409,7 +409,7 @@ alspchan_trigger(kobj_t obj, void *data, int go)
        default:
                break;
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -493,7 +493,7 @@ alsrchan_trigger(kobj_t obj, void *data, int go)
        struct  sc_chinfo *ch = data;
        struct sc_info *sc = ch->parent;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        switch(go) {
        case PCMTRIG_START:
                als_capture_start(ch);
@@ -503,7 +503,7 @@ alsrchan_trigger(kobj_t obj, void *data, int go)
                als_capture_stop(ch);
                break;
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -637,19 +637,19 @@ als_intr(void *p)
        struct sc_info *sc = (struct sc_info *)p;
        u_int8_t intr, sb_status;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        intr = als_intr_rd(sc);
 
        if (intr & 0x80) {
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                chn_intr(sc->pch.channel);
-               snd_mtxlock(sc->lock);
+               mtx_lock(&sc->lock);
        }
 
        if (intr & 0x40) {
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                chn_intr(sc->rch.channel);
-               snd_mtxlock(sc->lock);
+               mtx_lock(&sc->lock);
        }
 
        /* ACK interrupt in PCI core */
@@ -667,7 +667,7 @@ als_intr(void *p)
        if (sb_status & ALS_IRQ_CR1E)
                als_ack_read(sc, ALS_CR1E_ACK_PORT);
 
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return;
 }
 
@@ -749,10 +749,7 @@ als_resource_free(device_t dev, struct sc_info *sc)
                bus_dma_tag_destroy(sc->parent_dmat);
                sc->parent_dmat = 0;
        }
-       if (sc->lock) {
-               snd_mtxfree(sc->lock);
-               sc->lock = NULL;
-       }
+       mtx_destroy(&sc->lock);
 }
 
 static int
@@ -808,7 +805,8 @@ als_pci_attach(device_t dev)
        char status[SND_STATUSLEN];
 
        sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_als4000 softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "snd_als4000 softc",
+           MTX_DEF);
        sc->dev = dev;
 
        pci_enable_busmaster(dev);
@@ -882,11 +880,11 @@ als_pci_suspend(device_t dev)
 {
        struct sc_info *sc = pcm_getdevinfo(dev);
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        sc->pch.dma_was_active = als_playback_stop(&sc->pch);
        sc->rch.dma_was_active = als_capture_stop(&sc->rch);
        als_uninit(sc);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -895,16 +893,16 @@ als_pci_resume(device_t dev)
 {
        struct sc_info *sc = pcm_getdevinfo(dev);
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (als_init(sc) != 0) {
                device_printf(dev, "unable to reinitialize the card\n");
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                return ENXIO;
        }
 
        if (mixer_reinit(dev) != 0) {
                device_printf(dev, "unable to reinitialize the mixer\n");
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                return ENXIO;
        }
 
@@ -915,7 +913,7 @@ als_pci_resume(device_t dev)
        if (sc->rch.dma_was_active) {
                als_capture_start(&sc->rch);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return 0;
 }
diff --git a/sys/dev/sound/pci/atiixp.c b/sys/dev/sound/pci/atiixp.c
index 30f061fd9388..12906ecc6253 100644
--- a/sys/dev/sound/pci/atiixp.c
+++ b/sys/dev/sound/pci/atiixp.c
@@ -129,7 +129,7 @@ struct atiixp_info {
        uint32_t blkcnt;
        int registered_channels;
 
-       struct mtx *lock;
+       struct mtx lock;
        struct callout poll_timer;
        int poll_ticks, polling;
 };
@@ -139,9 +139,9 @@ struct atiixp_info {
 #define atiixp_wr(_sc, _reg, _val)     \
                bus_space_write_4((_sc)->st, (_sc)->sh, _reg, _val)
 
-#define atiixp_lock(_sc)       snd_mtxlock((_sc)->lock)
-#define atiixp_unlock(_sc)     snd_mtxunlock((_sc)->lock)
-#define atiixp_assert(_sc)     snd_mtxassert((_sc)->lock)
+#define atiixp_lock(_sc)       mtx_lock(&(_sc)->lock)
+#define atiixp_unlock(_sc)     mtx_unlock(&(_sc)->lock)
+#define atiixp_assert(_sc)     mtx_assert(&(_sc)->lock, MA_OWNED)
 
 static uint32_t atiixp_fmt_32bit[] = {
        SND_FORMAT(AFMT_S16_LE, 2, 0),
@@ -1019,7 +1019,7 @@ atiixp_chip_post_init(void *arg)
        if (sc->codec_not_ready_bits == 0) {
                /* wait for the interrupts to happen */
                do {
-                       msleep(sc, sc->lock, PWAIT, "ixpslp", max(hz / 10, 1));
+                       msleep(sc, &sc->lock, PWAIT, "ixpslp", max(hz / 10, 1));
                        if (sc->codec_not_ready_bits != 0)
                                break;
                } while (--timeout);
@@ -1157,10 +1157,7 @@ atiixp_release_resource(struct atiixp_info *sc)
                bus_dma_tag_destroy(sc->sgd_dmat);
                sc->sgd_dmat = NULL;
        }
-       if (sc->lock) {
-               snd_mtxfree(sc->lock);
-               sc->lock = NULL;
-       }
+       mtx_destroy(&sc->lock);
        free(sc, M_DEVBUF);
 }
 
@@ -1190,7 +1187,8 @@ atiixp_pci_attach(device_t dev)
        int i;
 
        sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_atiixp softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "snd_atiixp softc",
+           MTX_DEF);
        sc->dev = dev;
 
        callout_init(&sc->poll_timer, 1);
diff --git a/sys/dev/sound/pci/cmi.c b/sys/dev/sound/pci/cmi.c
index 28427d449c8d..99925d236c08 100644
--- a/sys/dev/sound/pci/cmi.c
+++ b/sys/dev/sound/pci/cmi.c
@@ -116,7 +116,7 @@ struct sc_info {
        struct resource         *reg, *irq;
        int                     regid, irqid;
        void                    *ih;
-       struct mtx              *lock;
+       struct mtx              lock;
 
        int                     spdif_enabled;
        unsigned int            bufsz;
@@ -361,13 +361,13 @@ cmichan_init(kobj_t obj, void *devinfo,
        }
 
        ch->dir = dir;
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (ch->dir == PCMDIR_PLAY) {
                cmi_dma_prog(sc, ch, CMPCI_REG_DMA0_BASE);
        } else {
                cmi_dma_prog(sc, ch, CMPCI_REG_DMA1_BASE);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return ch;
 }
@@ -394,7 +394,7 @@ cmichan_setformat(kobj_t obj, void *data, u_int32_t format)
                f |= CMPCI_REG_FORMAT_MONO;
        }
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (ch->dir == PCMDIR_PLAY) {
                cmi_partial_wr4(ch->parent,
                                CMPCI_REG_CHANNEL_FORMAT,
@@ -408,7 +408,7 @@ cmichan_setformat(kobj_t obj, void *data, u_int32_t format)
                                CMPCI_REG_CH1_FORMAT_MASK,
                                f);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        ch->fmt = format;
 
        return 0;
@@ -422,7 +422,7 @@ cmichan_setspeed(kobj_t obj, void *data, u_int32_t speed)
        u_int32_t r, rsp __unused;
 
        r = cmpci_rate_to_regvalue(speed);
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (ch->dir == PCMDIR_PLAY) {
                if (speed < 44100) {
                        /* disable if req before rate change */
@@ -450,7 +450,7 @@ cmichan_setspeed(kobj_t obj, void *data, u_int32_t speed)
                rsp >>= CMPCI_REG_ADC_FS_SHIFT;
                rsp &=  CMPCI_REG_ADC_FS_MASK;
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        ch->spd = cmpci_regvalue_to_rate(r);
 
        DEB(printf("cmichan_setspeed (%s) %d -> %d (%d)\n",
@@ -484,7 +484,7 @@ cmichan_trigger(kobj_t obj, void *data, int go)
        if (!PCMTRIG_COMMON(go))
                return 0;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (ch->dir == PCMDIR_PLAY) {
                switch(go) {
                case PCMTRIG_START:
@@ -506,7 +506,7 @@ cmichan_trigger(kobj_t obj, void *data, int go)
                        break;
                }
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -517,13 +517,13 @@ cmichan_getptr(kobj_t obj, void *data)
        struct sc_info          *sc = ch->parent;
        u_int32_t physptr, bufptr, sz;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (ch->dir == PCMDIR_PLAY) {
                physptr = cmi_rd(sc, CMPCI_REG_DMA0_BASE, 4);
        } else {
                physptr = cmi_rd(sc, CMPCI_REG_DMA1_BASE, 4);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        sz = ch->buffer->bufsize;
        bufptr = (physptr - ch->phys_buf + sz - ch->bps) % sz;
@@ -538,7 +538,7 @@ cmi_intr(void *data)
        u_int32_t intrstat;
        u_int32_t toclear;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        intrstat = cmi_rd(sc, CMPCI_REG_INTR_STATUS, 4);
        if ((intrstat & CMPCI_REG_ANY_INTR) != 0) {
                toclear = 0;
@@ -554,7 +554,7 @@ cmi_intr(void *data)
 
                if (toclear) {
                        cmi_clr4(sc, CMPCI_REG_INTR_CTRL, toclear);
-                       snd_mtxunlock(sc->lock);
+                       mtx_unlock(&sc->lock);
 
                        /* Signal interrupts to channel */
                        if (intrstat & CMPCI_REG_CH0_INTR) {
@@ -565,14 +565,14 @@ cmi_intr(void *data)
                                chn_intr(sc->rch.channel);
                        }
 
-                       snd_mtxlock(sc->lock);
+                       mtx_lock(&sc->lock);
                        cmi_set4(sc, CMPCI_REG_INTR_CTRL, toclear);
                }
        }
        if(sc->mpu_intr) {
                (sc->mpu_intr)(sc->mpu);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return;
 }
 
@@ -799,10 +799,10 @@ cmi_muninit(struct mpu401 *arg, void *cookie)
 {
        struct sc_info *sc = cookie;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        sc->mpu_intr = NULL;
        sc->mpu = NULL;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return 0;
 }
@@ -933,7 +933,8 @@ cmi_attach(device_t dev)
        char                    status[SND_STATUSLEN];
 
        sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
-       sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_cmi softc");
+       mtx_init(&sc->lock, device_get_nameunit(dev), "snd_cmi softc",
+           MTX_DEF);
        pci_enable_busmaster(dev);
 
        sc->dev = dev;
@@ -1007,8 +1008,7 @@ cmi_attach(device_t dev)
                bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
        if (sc->reg)
                bus_release_resource(dev, SYS_RES_IOPORT, sc->regid, sc->reg);
-       if (sc->lock)
-               snd_mtxfree(sc->lock);
+       mtx_destroy(&sc->lock);
        if (sc)
                free(sc, M_DEVBUF);
 
@@ -1037,7 +1037,7 @@ cmi_detach(device_t dev)
        if (sc->mpu_reg)
            bus_release_resource(dev, SYS_RES_IOPORT, sc->mpu_regid, 
sc->mpu_reg);
 
-       snd_mtxfree(sc->lock);
+       mtx_destroy(&sc->lock);
        free(sc, M_DEVBUF);
 
        return 0;
@@ -1048,11 +1048,11 @@ cmi_suspend(device_t dev)
 {
        struct sc_info *sc = pcm_getdevinfo(dev);
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        sc->pch.dma_was_active = cmi_ch0_stop(sc, &sc->pch);
        sc->rch.dma_was_active = cmi_ch1_stop(sc, &sc->rch);
        cmi_power(sc, 3);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -1061,17 +1061,17 @@ cmi_resume(device_t dev)
 {
        struct sc_info *sc = pcm_getdevinfo(dev);
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        cmi_power(sc, 0);
        if (cmi_init(sc) != 0) {
                device_printf(dev, "unable to reinitialize the card\n");
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                return ENXIO;
        }
 
        if (mixer_reinit(dev) == -1) {
                device_printf(dev, "unable to reinitialize the mixer\n");
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                 return ENXIO;
         }
 
@@ -1086,7 +1086,7 @@ cmi_resume(device_t dev)
                cmichan_setformat(NULL, &sc->rch, sc->rch.fmt);
                cmi_ch1_start(sc, &sc->rch);
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
diff --git a/sys/dev/sound/pci/emu10k1.c b/sys/dev/sound/pci/emu10k1.c
index a85031977f4b..da2ddc99f5a1 100644
--- a/sys/dev/sound/pci/emu10k1.c
+++ b/sys/dev/sound/pci/emu10k1.c
@@ -218,7 +218,7 @@ struct sc_info {
 
        struct resource *reg, *irq;
        void            *ih;
-       struct mtx      *lock;
+       struct mtx      lock;
 
        unsigned int bufsz;
        int timer, timerinterval;
@@ -820,10 +820,10 @@ emupchan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
        ch->blksz = sc->bufsz / 2;
        ch->fmt = SND_FORMAT(AFMT_U8, 1, 0);
        ch->spd = 8000;
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        ch->master = emu_valloc(sc);
        ch->slave = emu_valloc(sc);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        r = (emu_vinit(sc, ch->master, ch->slave, sc->bufsz, ch->buffer))
            ? NULL : ch;
 
@@ -837,9 +837,9 @@ emupchan_free(kobj_t obj, void *data)
        struct sc_info *sc = ch->parent;
        int r;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        r = emu_memfree(sc, ch->buffer->buf);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return r;
 }
@@ -869,9 +869,9 @@ emupchan_setblocksize(kobj_t obj, void *data, u_int32_t 
blocksize)
        struct sc_info *sc = ch->parent;
 
        ch->blksz = blocksize;
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        emu_settimer(sc);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return blocksize;
 }
 
@@ -884,7 +884,7 @@ emupchan_trigger(kobj_t obj, void *data, int go)
        if (!PCMTRIG_COMMON(go))
                return 0;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        if (go == PCMTRIG_START) {
                emu_vsetup(ch);
                emu_vwrite(sc, ch->master);
@@ -901,7 +901,7 @@ emupchan_trigger(kobj_t obj, void *data, int go)
        }
        ch->run = (go == PCMTRIG_START) ? 1 : 0;
        emu_vtrigger(sc, ch->master, ch->run);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return 0;
 }
 
@@ -912,9 +912,9 @@ emupchan_getptr(kobj_t obj, void *data)
        struct sc_info *sc = ch->parent;
        int r;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        r = emu_vpos(sc, ch->master);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return r;
 }
@@ -984,10 +984,10 @@ emurchan_init(kobj_t obj, void *devinfo, struct snd_dbuf 
*b,
        if (sndbuf_alloc(ch->buffer, sc->parent_dmat, 0, sc->bufsz) != 0)
                return NULL;
        else {
-               snd_mtxlock(sc->lock);
+               mtx_lock(&sc->lock);
                emu_wrptr(sc, 0, ch->basereg, ch->buffer->buf_addr);
                emu_wrptr(sc, 0, ch->sizereg, 0); /* off */
-               snd_mtxunlock(sc->lock);
+               mtx_unlock(&sc->lock);
                return ch;
        }
 }
@@ -1027,9 +1027,9 @@ emurchan_setblocksize(kobj_t obj, void *data, u_int32_t 
blocksize)
        struct sc_info *sc = ch->parent;
 
        ch->blksz = blocksize;
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        emu_settimer(sc);
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
        return blocksize;
 }
 
@@ -1069,7 +1069,7 @@ emurchan_trigger(kobj_t obj, void *data, int go)
                sz = EMU_RECBS_BUFSIZE_4096;
        }
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        switch(go) {
        case PCMTRIG_START:
                ch->run = 1;
@@ -1111,7 +1111,7 @@ emurchan_trigger(kobj_t obj, void *data, int go)
        default:
                break;
        }
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return 0;
 }
@@ -1123,9 +1123,9 @@ emurchan_getptr(kobj_t obj, void *data)
        struct sc_info *sc = ch->parent;
        int r;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        r = emu_rdptr(sc, 0, ch->idxreg) & 0x0000ffff;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return r;
 }
@@ -1171,9 +1171,9 @@ emu_muninit(struct mpu401 *arg, void *cookie)
 {
        struct sc_info *sc = cookie;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        sc->mpu_intr = NULL;
-       snd_mtxunlock(sc->lock);
+       mtx_unlock(&sc->lock);
 
        return 0;
 }
@@ -1216,7 +1216,7 @@ emu_intr(void *data)
        struct sc_info *sc = data;
        u_int32_t stat, ack, i, x;
 
-       snd_mtxlock(sc->lock);
+       mtx_lock(&sc->lock);
        while (1) {
                stat = emu_rd(sc, EMU_IPR, 4);
                if (stat == 0)
*** 3073 LINES SKIPPED ***

Reply via email to