git: 08c1cf0b5221 - stable/14 - sound: Add *vchanrate and *vchanformat to sndstat nvlist

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Mon, 29 Jul 2024 15:35:12 UTC
The branch stable/14 has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=08c1cf0b5221a4d7581f7c3e0319c5e36300b49b

commit 08c1cf0b5221a4d7581f7c3e0319c5e36300b49b
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2024-07-27 11:54:21 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2024-07-29 15:34:54 +0000

    sound: Add *vchanrate and *vchanformat to sndstat nvlist
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      2 days
    Reviewed by:    dev_submerge.ch
    Differential Revision:  https://reviews.freebsd.org/D46164
    
    (cherry picked from commit a6283717577066b0ff6c62053145470ff4134051)
---
 share/man/man4/sndstat.4    | 12 ++++++++++++
 sys/dev/sound/pcm/sndstat.c |  8 ++++++++
 sys/sys/sndstat.h           |  4 ++++
 3 files changed, 24 insertions(+)

diff --git a/share/man/man4/sndstat.4 b/share/man/man4/sndstat.4
index 66c1b6e8402d..7c2813356dae 100644
--- a/share/man/man4/sndstat.4
+++ b/share/man/man4/sndstat.4
@@ -77,7 +77,11 @@ dsps (NVLIST ARRAY): 1
 		status (STRING): on hdaa0
 		bitperfect (BOOL): FALSE
 		pvchan (NUMBER): 1
+		pvchanrate (NUMBER): 48000
+		pvchanformat (NUMBER): 0x00000010
 		rvchan (NUMBER): 0
+		rvchanrate (NUMBER): 48000
+		rvchanformat (NUMBER): 0x00000010
 		channel_info (NVLIST_ARRAY): 1
 			name (STRING): pcm0:virtual_play:dsp0.vp0
 			parentchan (STRING): pcm0:play:dsp0.p0
@@ -177,8 +181,16 @@ Usually reports the driver the device is attached on.
 Whether the sound card has bit-perfect mode enabled.
 .It Dv pvchan
 Number of playback virtual channels.
+.It Dv pvchanrate
+Playback virtual channel sample rate.
+.It Dv pvchanformat
+Playback virtual channel format.
 .It Dv rvchan
 Number of recording virtual channels.
+.It Dv rvchanrate
+Recording virtual channel sample rate.
+.It Dv rvchanformat
+Recording virtual channel format.
 .It Dv channel_info
 Channel information.
 There are a number of name/value pairs inside this field:
diff --git a/sys/dev/sound/pcm/sndstat.c b/sys/dev/sound/pcm/sndstat.c
index fda7a2ad6d48..b0d2c5b6ca21 100644
--- a/sys/dev/sound/pcm/sndstat.c
+++ b/sys/dev/sound/pcm/sndstat.c
@@ -444,7 +444,15 @@ sndstat_build_sound4_nvlist(struct snddev_info *d, nvlist_t **dip)
 	nvlist_add_bool(
 	    sound4di, SNDST_DSPS_SOUND4_BITPERFECT, d->flags & SD_F_BITPERFECT);
 	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_PVCHAN, d->pvchancount);
+	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_PVCHANRATE,
+	    d->pvchanrate);
+	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_PVCHANFORMAT,
+	    d->pvchanformat);
 	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_RVCHAN, d->rvchancount);
+	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_RVCHANRATE,
+	    d->rvchanrate);
+	nvlist_add_number(sound4di, SNDST_DSPS_SOUND4_RVCHANFORMAT,
+	    d->rvchanformat);
 
 	nchan = 0;
 	CHN_FOREACH(c, d, channels.pcm) {
diff --git a/sys/sys/sndstat.h b/sys/sys/sndstat.h
index 2f2965bb3d05..f7d0b2f29bd5 100644
--- a/sys/sys/sndstat.h
+++ b/sys/sys/sndstat.h
@@ -73,7 +73,11 @@ struct sndstioc_nv_arg {
 #define SNDST_DSPS_SOUND4_STATUS		"status"
 #define SNDST_DSPS_SOUND4_BITPERFECT		"bitperfect"
 #define SNDST_DSPS_SOUND4_PVCHAN		"pvchan"
+#define SNDST_DSPS_SOUND4_PVCHANRATE		"pvchanrate"
+#define SNDST_DSPS_SOUND4_PVCHANFORMAT		"pvchanformat"
 #define SNDST_DSPS_SOUND4_RVCHAN		"rvchan"
+#define SNDST_DSPS_SOUND4_RVCHANRATE		"rvchanrate"
+#define SNDST_DSPS_SOUND4_RVCHANFORMAT		"rvchanformat"
 #define SNDST_DSPS_SOUND4_CHAN_INFO		"channel_info"
 #define SNDST_DSPS_SOUND4_CHAN_NAME		"name"
 #define SNDST_DSPS_SOUND4_CHAN_PARENTCHAN	"parentchan"