Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Apr 2026 15:18:45 +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: 549e74061987 - main - snd_uaudio: Support Roland UA-33
Message-ID:  <69f372d5.1869d.464b27ad@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=549e740619873716b796a841a10f56fae3c3ad49

commit 549e740619873716b796a841a10f56fae3c3ad49
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-04-28 16:39:45 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-04-30 15:18:30 +0000

    snd_uaudio: Support Roland UA-33
    
    Apply the appropriate quirk. Also, introduce a new uaudio_vendor_audio
    table, similar to uaudio_vendor_midi, which includes non-standard USB
    audio devices. The Roland UA-33 needs this, bceause it comes with
    bInterfaceClass = 0xff (vendor-specific), so snd_uaudio(4) doesn't
    detect it.
    
    PR:             294814
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Reviewed by:    emaste
    Pull Request:   https://ron-dev.freebsd.org/FreeBSD/src/pulls/24
---
 sys/dev/sound/usb/uaudio.c    | 10 ++++++++++
 sys/dev/usb/quirk/usb_quirk.c |  1 +
 sys/dev/usb/usbdevs           |  1 +
 3 files changed, 12 insertions(+)

diff --git a/sys/dev/sound/usb/uaudio.c b/sys/dev/sound/usb/uaudio.c
index 65976ced8a75..f477eb768fde 100644
--- a/sys/dev/sound/usb/uaudio.c
+++ b/sys/dev/sound/usb/uaudio.c
@@ -713,6 +713,10 @@ static driver_t uaudio_driver = {
 	.size = sizeof(struct uaudio_softc),
 };
 
+static const STRUCT_USB_HOST_ID uaudio_vendor_audio[] = {
+	{ USB_VPI(USB_VENDOR_ROLAND, 0x0132, 0) }, /* UA-33 */
+};
+
 /* The following table is derived from Linux's quirks-table.h */ 
 static const STRUCT_USB_HOST_ID uaudio_vendor_midi[] = {
 	{ USB_VPI(USB_VENDOR_YAMAHA, 0x1000, 0) }, /* UX256 */
@@ -868,6 +872,11 @@ uaudio_probe(device_t dev)
 
 	/* lookup non-standard device(s) */
 
+	if (usbd_lookup_id_by_uaa(uaudio_vendor_audio,
+	    sizeof(uaudio_vendor_audio), uaa) == 0) {
+		return (BUS_PROBE_SPECIFIC);
+	}
+
 	if (usbd_lookup_id_by_uaa(uaudio_vendor_midi,
 	    sizeof(uaudio_vendor_midi), uaa) == 0) {
 		return (BUS_PROBE_SPECIFIC);
@@ -6258,4 +6267,5 @@ MODULE_DEPEND(snd_uaudio, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);
 MODULE_DEPEND(snd_uaudio, hid, 1, 1, 1);
 MODULE_VERSION(snd_uaudio, 1);
 USB_PNP_HOST_INFO(uaudio_devs);
+USB_PNP_HOST_INFO(uaudio_vendor_audio);
 USB_PNP_HOST_INFO(uaudio_vendor_midi);
diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c
index 303f76f37fb0..c1976a59acbe 100644
--- a/sys/dev/usb/quirk/usb_quirk.c
+++ b/sys/dev/usb/quirk/usb_quirk.c
@@ -565,6 +565,7 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
 	USB_QUIRK(CMEDIA, CM6206, UQ_AU_SET_SPDIF_CM6206),
 	USB_QUIRK(PLOYTEC, SPL_CRIMSON_1, UQ_CFG_INDEX_1),
 	USB_QUIRK(ROLAND, UA25EX_AD, UQ_AU_VENDOR_CLASS),
+	USB_QUIRK(ROLAND, UA33, UQ_AU_VENDOR_CLASS),
 
 	/* DYMO LabelManager Pnp */
 	USB_QUIRK(DYMO, LABELMANAGERPNP, UQ_MSC_DYMO_EJECT),
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index e1394e903cb3..594afafbb07f 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -4208,6 +4208,7 @@ product ROLAND UA700		0x002b	UA-700 Audio I/F
 product ROLAND PCR300		0x0033  EDIROL PCR-300 MIDI I/F
 product ROLAND UA25EX_AD	0x00e6  EDIROL UA-25EX (Advanced Driver)
 product ROLAND UA25EX_CC	0x00e7  EDIROL UA-25EX (Class Compliant)
+product ROLAND UA33		0x0132  UA-33 Audio I/F
 
 /* Rockfire products */
 product ROCKFIRE GAMEPAD	0x2033	gamepad 203USB


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f372d5.1869d.464b27ad>