Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 May 2026 15:33:33 +0000
From:      Christos Margiolis <christos@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 1e72608a3c6a - main - sound: Remove all remaining uses of mixer_get_lock()
Message-ID:  <6a170ecd.270ca.661b05a@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by christos:

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

commit 1e72608a3c6a60b76938c5ded2a290d0b9ff6456
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-04-16 12:41:13 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
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));
 	}
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a170ecd.270ca.661b05a>