git: 9e7e15b539a6 - main - snd_hdspe(4): AO4S/AI4S support.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 04 Oct 2024 18:41:17 UTC
The branch main has been updated by br:
URL: https://cgit.FreeBSD.org/src/commit/?id=9e7e15b539a6f3ef98854a47ee346c9100875c8a
commit 9e7e15b539a6f3ef98854a47ee346c9100875c8a
Author: Ruslan Bukin <br@FreeBSD.org>
AuthorDate: 2024-10-04 18:33:36 +0000
Commit: Ruslan Bukin <br@FreeBSD.org>
CommitDate: 2024-10-04 18:36:06 +0000
snd_hdspe(4): AO4S/AI4S support.
Add support for RME AO4S/AI4S extension cards. They are designed as a bracket
with 4 stereo TRS jacks each.
https://archiv.rme-audio.de/download/ao4s192_e.pdf
https://archiv.rme-audio.de/download/ai4s192_e.pdf
Reviewed by: Florian Walpen <dev@submerge.ch>
Differential Revision: https://reviews.freebsd.org/D46409
---
sys/dev/sound/pci/hdspe-pcm.c | 4 ++++
sys/dev/sound/pci/hdspe.c | 1 +
sys/dev/sound/pci/hdspe.h | 22 ++++++++++++----------
3 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/sys/dev/sound/pci/hdspe-pcm.c b/sys/dev/sound/pci/hdspe-pcm.c
index 79bfcbea3406..322fd69723c0 100644
--- a/sys/dev/sound/pci/hdspe-pcm.c
+++ b/sys/dev/sound/pci/hdspe-pcm.c
@@ -136,6 +136,8 @@ hdspe_channel_count(uint32_t ports, uint32_t adat_width)
/* AIO ports. */
if (ports & HDSPE_CHAN_AIO_LINE)
count += 2;
+ if (ports & HDSPE_CHAN_AIO_EXT)
+ count += 4;
if (ports & HDSPE_CHAN_AIO_PHONE)
count += 2;
if (ports & HDSPE_CHAN_AIO_AES)
@@ -189,6 +191,8 @@ hdspe_port_slot_offset(uint32_t port, unsigned int adat_width)
/* AIO ports */
case HDSPE_CHAN_AIO_LINE:
return (0);
+ case HDSPE_CHAN_AIO_EXT:
+ return (2);
case HDSPE_CHAN_AIO_PHONE:
return (6);
case HDSPE_CHAN_AIO_AES:
diff --git a/sys/dev/sound/pci/hdspe.c b/sys/dev/sound/pci/hdspe.c
index 66f5bc5c5d7a..0e25e9599328 100644
--- a/sys/dev/sound/pci/hdspe.c
+++ b/sys/dev/sound/pci/hdspe.c
@@ -78,6 +78,7 @@ static struct hdspe_clock_source hdspe_clock_source_table_aio[] = {
static struct hdspe_channel chan_map_aio[] = {
{ HDSPE_CHAN_AIO_LINE, "line" },
+ { HDSPE_CHAN_AIO_EXT, "ext" },
{ HDSPE_CHAN_AIO_PHONE, "phone" },
{ HDSPE_CHAN_AIO_AES, "aes" },
{ HDSPE_CHAN_AIO_SPDIF, "s/pdif" },
diff --git a/sys/dev/sound/pci/hdspe.h b/sys/dev/sound/pci/hdspe.h
index daffeb4ddebc..2f0bdddd930f 100644
--- a/sys/dev/sound/pci/hdspe.h
+++ b/sys/dev/sound/pci/hdspe.h
@@ -119,23 +119,25 @@
#define HDSPE_DMASEGSIZE (HDSPE_CHANBUF_SIZE * HDSPE_MAX_SLOTS)
#define HDSPE_CHAN_AIO_LINE (1 << 0)
-#define HDSPE_CHAN_AIO_PHONE (1 << 1)
-#define HDSPE_CHAN_AIO_AES (1 << 2)
-#define HDSPE_CHAN_AIO_SPDIF (1 << 3)
-#define HDSPE_CHAN_AIO_ADAT (1 << 4)
+#define HDSPE_CHAN_AIO_EXT (1 << 1)
+#define HDSPE_CHAN_AIO_PHONE (1 << 2)
+#define HDSPE_CHAN_AIO_AES (1 << 3)
+#define HDSPE_CHAN_AIO_SPDIF (1 << 4)
+#define HDSPE_CHAN_AIO_ADAT (1 << 5)
#define HDSPE_CHAN_AIO_ALL_REC (HDSPE_CHAN_AIO_LINE | \
+ HDSPE_CHAN_AIO_EXT | \
HDSPE_CHAN_AIO_AES | \
HDSPE_CHAN_AIO_SPDIF | \
HDSPE_CHAN_AIO_ADAT)
#define HDSPE_CHAN_AIO_ALL (HDSPE_CHAN_AIO_ALL_REC | \
HDSPE_CHAN_AIO_PHONE) \
-#define HDSPE_CHAN_RAY_AES (1 << 5)
-#define HDSPE_CHAN_RAY_SPDIF (1 << 6)
-#define HDSPE_CHAN_RAY_ADAT1 (1 << 7)
-#define HDSPE_CHAN_RAY_ADAT2 (1 << 8)
-#define HDSPE_CHAN_RAY_ADAT3 (1 << 9)
-#define HDSPE_CHAN_RAY_ADAT4 (1 << 10)
+#define HDSPE_CHAN_RAY_AES (1 << 6)
+#define HDSPE_CHAN_RAY_SPDIF (1 << 7)
+#define HDSPE_CHAN_RAY_ADAT1 (1 << 8)
+#define HDSPE_CHAN_RAY_ADAT2 (1 << 9)
+#define HDSPE_CHAN_RAY_ADAT3 (1 << 10)
+#define HDSPE_CHAN_RAY_ADAT4 (1 << 11)
#define HDSPE_CHAN_RAY_ALL (HDSPE_CHAN_RAY_AES | \
HDSPE_CHAN_RAY_SPDIF | \
HDSPE_CHAN_RAY_ADAT1 | \