The branch main has been updated by christos:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=1e72608a3c6a60b76938c5ded2a290d0b9ff6456

commit 1e72608a3c6a60b76938c5ded2a290d0b9ff6456
Author:     Christos Margiolis <[email protected]>
AuthorDate: 2026-04-16 12:41:13 +0000
Commit:     Christos Margiolis <[email protected]>
CommitDate: 2026-05-27 15:32:12 +0000

    sound: Remove all remaining uses of mixer_get_lock()
    
    These functions are called from sound(4) through MIXER_SET() in
    mixer_set(), but nothing mixer-related is used or needs to be locked in
    these cases.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Pull Request:   https://ron-dev.freebsd.org/FreeBSD/src/pulls/18
---
 sys/arm/allwinner/a64/sun50i_a64_acodec.c | 14 --------------
 sys/arm64/rockchip/rk3328_codec.c         | 14 --------------
 sys/dev/sound/macio/onyx.c                | 17 -----------------
 sys/dev/sound/macio/snapper.c             | 17 -----------------
 sys/dev/sound/macio/tumbler.c             | 17 -----------------
 5 files changed, 79 deletions(-)

diff --git a/sys/arm/allwinner/a64/sun50i_a64_acodec.c 
b/sys/arm/allwinner/a64/sun50i_a64_acodec.c
index 12c9a86cf361..93b0328e99e0 100644
--- a/sys/arm/allwinner/a64/sun50i_a64_acodec.c
+++ b/sys/arm/allwinner/a64/sun50i_a64_acodec.c
@@ -339,19 +339,9 @@ static int
 a64codec_mixer_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned 
right)
 {
        struct a64codec_softc *sc;
-       struct mtx *mixer_lock;
-       uint8_t do_unlock;
        u_int val;
 
        sc = device_get_softc(mix_getdevinfo(m));
-       mixer_lock = mixer_get_lock(m);
-
-       if (mtx_owned(mixer_lock)) {
-               do_unlock = 0;
-       } else {
-               do_unlock = 1;
-               mtx_lock(mixer_lock);
-       }
 
        right = left;
 
@@ -375,10 +365,6 @@ a64codec_mixer_set(struct snd_mixer *m, unsigned dev, 
unsigned left, unsigned ri
        }
        A64CODEC_UNLOCK(sc);
 
-       if (do_unlock) {
-               mtx_unlock(mixer_lock);
-       }
-
        return (left | (right << 8));
 }
 
diff --git a/sys/arm64/rockchip/rk3328_codec.c 
b/sys/arm64/rockchip/rk3328_codec.c
index 22e3cde9093e..a019cab27cc9 100644
--- a/sys/arm64/rockchip/rk3328_codec.c
+++ b/sys/arm64/rockchip/rk3328_codec.c
@@ -416,18 +416,8 @@ static int
 rkcodec_mixer_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned 
right)
 {
        struct rkcodec_softc *sc;
-       struct mtx *mixer_lock;
-       uint8_t do_unlock;
 
        sc = device_get_softc(mix_getdevinfo(m));
-       mixer_lock = mixer_get_lock(m);
-
-       if (mtx_owned(mixer_lock)) {
-               do_unlock = 0;
-       } else {
-               do_unlock = 1;
-               mtx_lock(mixer_lock);
-       }
 
        right = left;
 
@@ -443,10 +433,6 @@ rkcodec_mixer_set(struct snd_mixer *m, unsigned dev, 
unsigned left, unsigned rig
        }
        RKCODEC_UNLOCK(sc);
 
-       if (do_unlock) {
-               mtx_unlock(mixer_lock);
-       }
-
        return (left | (right << 8));
 }
 
diff --git a/sys/dev/sound/macio/onyx.c b/sys/dev/sound/macio/onyx.c
index f4f825a705cc..5ba22dd7c495 100644
--- a/sys/dev/sound/macio/onyx.c
+++ b/sys/dev/sound/macio/onyx.c
@@ -268,38 +268,21 @@ static int
 onyx_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 {
        struct onyx_softc *sc;
-       struct mtx *mixer_lock;
-       int locked;
        uint8_t l, r;
 
        sc = device_get_softc(mix_getdevinfo(m));
-       mixer_lock = mixer_get_lock(m);
-       locked = mtx_owned(mixer_lock);
 
        switch (dev) {
        case SOUND_MIXER_VOLUME:
-
-               /*
-                * We need to unlock the mixer lock because iicbus_transfer()
-                * may sleep. The mixer lock itself is unnecessary here
-                * because it is meant to serialize hardware access, which
-                * is taken care of by the I2C layer, so this is safe.
-                */
                if (left > 100 || right > 100)
                        return (0);
 
                l = left + 128;
                r = right + 128;
 
-               if (locked)
-                       mtx_unlock(mixer_lock);
-
                onyx_write(sc, PCM3052_REG_LEFT_ATTN, l);
                onyx_write(sc, PCM3052_REG_RIGHT_ATTN, r);
 
-               if (locked)
-                       mtx_lock(mixer_lock);
-
                return (left | (right << 8));
        }
 
diff --git a/sys/dev/sound/macio/snapper.c b/sys/dev/sound/macio/snapper.c
index f14009f447a8..ed83990d563b 100644
--- a/sys/dev/sound/macio/snapper.c
+++ b/sys/dev/sound/macio/snapper.c
@@ -436,14 +436,10 @@ static int
 snapper_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 {
        struct snapper_softc *sc;
-       struct mtx *mixer_lock;
-       int locked;
        u_int l, r;
        u_char reg[6];
 
        sc = device_get_softc(mix_getdevinfo(m));
-       mixer_lock = mixer_get_lock(m);
-       locked = mtx_owned(mixer_lock);
 
        if (left > 100 || right > 100)
                return (0);
@@ -460,21 +456,8 @@ snapper_set(struct snd_mixer *m, unsigned dev, unsigned 
left, unsigned right)
                reg[4] = (r & 0x00ff00) >> 8;
                reg[5] = r & 0x0000ff;
 
-               /*
-                * We need to unlock the mixer lock because iicbus_transfer()
-                * may sleep. The mixer lock itself is unnecessary here
-                * because it is meant to serialize hardware access, which
-                * is taken care of by the I2C layer, so this is safe.
-                */
-
-               if (locked)
-                       mtx_unlock(mixer_lock);
-
                snapper_write(sc, SNAPPER_VOLUME, reg);
 
-               if (locked)
-                       mtx_lock(mixer_lock);
-
                return (left | (right << 8));
        }
 
diff --git a/sys/dev/sound/macio/tumbler.c b/sys/dev/sound/macio/tumbler.c
index bd40ea6b4f6b..89af4434e7fe 100644
--- a/sys/dev/sound/macio/tumbler.c
+++ b/sys/dev/sound/macio/tumbler.c
@@ -383,14 +383,10 @@ static int
 tumbler_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 {
        struct tumbler_softc *sc;
-       struct mtx *mixer_lock;
-       int locked;
        u_int l, r;
        u_char reg[6];
 
        sc = device_get_softc(mix_getdevinfo(m));
-       mixer_lock = mixer_get_lock(m);
-       locked = mtx_owned(mixer_lock);
 
        switch (dev) {
        case SOUND_MIXER_VOLUME:
@@ -407,21 +403,8 @@ tumbler_set(struct snd_mixer *m, unsigned dev, unsigned 
left, unsigned right)
                reg[4] = (r & 0x00ff00) >> 8;
                reg[5] = r & 0x0000ff;
 
-               /*
-                * We need to unlock the mixer lock because iicbus_transfer()
-                * may sleep. The mixer lock itself is unnecessary here
-                * because it is meant to serialize hardware access, which
-                * is taken care of by the I2C layer, so this is safe.
-                */
-
-               if (locked)
-                       mtx_unlock(mixer_lock);
-
                tumbler_write(sc, TUMBLER_VOLUME, reg);
 
-               if (locked)
-                       mtx_lock(mixer_lock);
-
                return (left | (right << 8));
        }
 

Reply via email to