git: e9df33a044ec - stable/15 - sound: Retire SD_F_VPC and related settings
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 27 Jun 2026 09:55:56 UTC
The branch stable/15 has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=e9df33a044ecd34f4b007f70a1416b0d0544321e
commit e9df33a044ecd34f4b007f70a1416b0d0544321e
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-06-20 17:32:21 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-06-27 09:55:19 +0000
sound: Retire SD_F_VPC and related settings
VPC is enabled by default, and the only way to turn it off is through a
loader hint. That being said, there is no benefit to turning it off in
the first place, because VPC provides more fine-grained volume control,
as well as access to the SNDCTL_DSP_[SET|GET][REC|PLAY]VOL ioctls and
dsp_ioctl_channel().
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
(cherry picked from commit f70a687bb071cdee60dc7420d75fa1dd122af51a)
---
share/man/man4/pcm.4 | 22 +---------------------
sys/dev/sound/pcm/dsp.c | 2 +-
sys/dev/sound/pcm/feeder_chain.c | 4 ++--
sys/dev/sound/pcm/sound.c | 4 ----
sys/dev/sound/pcm/sound.h | 4 ++--
5 files changed, 6 insertions(+), 30 deletions(-)
diff --git a/share/man/man4/pcm.4 b/share/man/man4/pcm.4
index 14d7e52eed5d..7a0059f43f73 100644
--- a/share/man/man4/pcm.4
+++ b/share/man/man4/pcm.4
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd May 15, 2026
+.Dd June 20, 2026
.Dt SOUND 4
.Os
.Sh NAME
@@ -212,26 +212,6 @@ application, without touching the master
.Nm
volume.
This is sometimes referred to as Volume Per Channel (VPC).
-The VPC feature is enabled by default.
-.Ss Loader Tunables
-The following loader tunables are used to set driver configuration at the
-.Xr loader 8
-prompt before booting the kernel, or they can be stored in
-.Pa /boot/loader.conf
-in order to automatically set them before booting the kernel.
-It is also possible to use
-.Xr kenv 1
-to change these tunables before loading the
-.Nm
-driver.
-The following tunables can not be changed during runtime using
-.Xr sysctl 8 .
-.Bl -tag -width indent
-.It Va hint.pcm.%d.vpc
-Set to 1 or 0 to explicitly enable (1) or disable (0) the VPC feature.
-This tunable is undefined by default.
-VPC is however enabled by default.
-.El
.Ss Runtime Configuration
There are a number of
.Xr sysctl 8
diff --git a/sys/dev/sound/pcm/dsp.c b/sys/dev/sound/pcm/dsp.c
index 7e4b4ae2df24..0557b03484dc 100644
--- a/sys/dev/sound/pcm/dsp.c
+++ b/sys/dev/sound/pcm/dsp.c
@@ -542,7 +542,7 @@ dsp_ioctl_channel(struct dsp_cdevpriv *priv, struct pcm_channel *ch,
int j, left, right, center, mute;
d = priv->sc;
- if (!PCM_REGISTERED(d) || !(pcm_getflags(d->dev) & SD_F_VPC))
+ if (!PCM_REGISTERED(d))
return (-1);
PCM_UNLOCKASSERT(d);
diff --git a/sys/dev/sound/pcm/feeder_chain.c b/sys/dev/sound/pcm/feeder_chain.c
index 35bb12a062ec..1dbdf2fcc0e4 100644
--- a/sys/dev/sound/pcm/feeder_chain.c
+++ b/sys/dev/sound/pcm/feeder_chain.c
@@ -714,8 +714,8 @@ feeder_chain(struct pcm_channel *c)
cdesc.dummy = 1;
if ((softfmt & AFMT_CONVERTIBLE) &&
- (((d->flags & SD_F_VPC) && !(c->flags & CHN_F_HAS_VCHAN)) ||
- (!(d->flags & SD_F_VPC) && (d->flags & SD_F_SOFTPCMVOL) &&
+ (!(c->flags & CHN_F_HAS_VCHAN) ||
+ ((d->flags & SD_F_SOFTPCMVOL) &&
!(c->flags & CHN_F_VIRTUAL))))
cdesc.use_volume = 1;
diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c
index 235142eb5209..101b38367873 100644
--- a/sys/dev/sound/pcm/sound.c
+++ b/sys/dev/sound/pcm/sound.c
@@ -355,10 +355,6 @@ pcm_init(device_t dev, void *devinfo)
cv_init(&d->cv, device_get_nameunit(dev));
i = 0;
- if (resource_int_value(device_get_name(dev), device_get_unit(dev),
- "vpc", &i) != 0 || i != 0)
- d->flags |= SD_F_VPC;
-
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
"bitperfect", &i) == 0 && i != 0)
d->flags |= SD_F_BITPERFECT;
diff --git a/sys/dev/sound/pcm/sound.h b/sys/dev/sound/pcm/sound.h
index 06de95e461ec..becd787a456a 100644
--- a/sys/dev/sound/pcm/sound.h
+++ b/sys/dev/sound/pcm/sound.h
@@ -101,7 +101,7 @@ struct snd_mixer;
#define SD_F_MPSAFE 0x00000010
#define SD_F_REGISTERED 0x00000020
#define SD_F_BITPERFECT 0x00000040
-#define SD_F_VPC 0x00000080 /* volume-per-channel */
+/* unused 0x00000080 */
/* unused 0x00000100 */
#define SD_F_EQ_ENABLED 0x00000200 /* EQ enabled */
/* unused 0x00000400 */
@@ -117,7 +117,7 @@ struct snd_mixer;
"\005MPSAFE" \
"\006REGISTERED" \
"\007BITPERFECT" \
- "\010VPC" \
+ /* "\010 */ \
/* "\011 */ \
"\012EQ_ENABLED" \
/* "\013 */ \