git: 815dc35b7b5e - main - sound: Pass format and speed as arguments to sndbuf_create()

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Wed, 08 Jul 2026 18:19:50 UTC
The branch main has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=815dc35b7b5ed694fc1986d054149e375b8a17bd

commit 815dc35b7b5ed694fc1986d054149e375b8a17bd
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-07-08 18:18:49 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-07-08 18:18:49 +0000

    sound: Pass format and speed as arguments to sndbuf_create()
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
---
 sys/dev/sound/pcm/buffer.c  | 5 ++++-
 sys/dev/sound/pcm/buffer.h  | 2 +-
 sys/dev/sound/pcm/channel.c | 8 ++------
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/sys/dev/sound/pcm/buffer.c b/sys/dev/sound/pcm/buffer.c
index 86278a46a731..73f75716a198 100644
--- a/sys/dev/sound/pcm/buffer.c
+++ b/sys/dev/sound/pcm/buffer.c
@@ -46,7 +46,8 @@
 #include "snd_fxdiv_gen.h"
 
 struct snd_dbuf *
-sndbuf_create(struct pcm_channel *channel, const char *desc)
+sndbuf_create(struct pcm_channel *channel, u_int32_t fmt, u_int32_t spd,
+    const char *desc)
 {
 	struct snd_dbuf *b;
 
@@ -54,6 +55,8 @@ sndbuf_create(struct pcm_channel *channel, const char *desc)
 	refcount_init(&b->refcount, 1);
 	snprintf(b->name, SNDBUF_NAMELEN, "%s:%s", channel->name, desc);
 	b->channel = channel;
+	sndbuf_setfmt(b, fmt);
+	sndbuf_setspd(b, spd);
 
 	return b;
 }
diff --git a/sys/dev/sound/pcm/buffer.h b/sys/dev/sound/pcm/buffer.h
index fee41db2ff82..34f885db6609 100644
--- a/sys/dev/sound/pcm/buffer.h
+++ b/sys/dev/sound/pcm/buffer.h
@@ -60,7 +60,7 @@ struct snd_dbuf {
 	char name[SNDBUF_NAMELEN];
 };
 
-struct snd_dbuf *sndbuf_create(struct pcm_channel *channel, const char *desc);
+struct snd_dbuf *sndbuf_create(struct pcm_channel *channel, u_int32_t fmt, u_int32_t spd, const char *desc);
 void sndbuf_destroy(struct snd_dbuf *b);
 void sndbuf_ref(struct snd_dbuf *b);
 void sndbuf_rele(struct snd_dbuf *b);
diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c
index 40a08d48fb21..ff7620c772c3 100644
--- a/sys/dev/sound/pcm/channel.c
+++ b/sys/dev/sound/pcm/channel.c
@@ -1223,8 +1223,8 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls,
 	chn_vpc_reset(c, SND_VOL_C_PCM, 1);
 	CHN_UNLOCK(c);
 
-	b = sndbuf_create(c, "primary");
-	bs = sndbuf_create(c, "secondary");
+	b = sndbuf_create(c, c->format, c->speed, "primary");
+	bs = sndbuf_create(c, c->format, c->speed, "secondary");
 	if (b == NULL || bs == NULL) {
 		device_printf(d->dev, "%s(): failed to create %s buffer\n",
 		    __func__, b == NULL ? "hardware" : "software");
@@ -1246,10 +1246,6 @@ chn_init(struct snddev_info *d, struct pcm_channel *parent, kobj_class_t cls,
 		goto fail;
 	}
 
-	sndbuf_setfmt(b, c->format);
-	sndbuf_setspd(b, c->speed);
-	sndbuf_setfmt(bs, c->format);
-	sndbuf_setspd(bs, c->speed);
 	sndbuf_setup(bs, NULL, 0);
 
 	/**