git: 33c8e68d3237 - stable/14 - snd_uaudio: Support Roland UA-33
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 13 Jun 2026 18:41:24 UTC
The branch stable/14 has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=33c8e68d3237af2f0540ff39eed8439a67b3f90a
commit 33c8e68d3237af2f0540ff39eed8439a67b3f90a
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-06-13 18:40:35 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-06-13 18:40:35 +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
(cherry picked from commit 549e740619873716b796a841a10f56fae3c3ad49)
---
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 8238629a2a51..986cab8a7a62 100644
--- a/sys/dev/sound/usb/uaudio.c
+++ b/sys/dev/sound/usb/uaudio.c
@@ -715,6 +715,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 */
@@ -870,6 +874,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);
@@ -6278,4 +6287,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 5920ffa934a0..dd319fde130d 100644
--- a/sys/dev/usb/quirk/usb_quirk.c
+++ b/sys/dev/usb/quirk/usb_quirk.c
@@ -619,6 +619,7 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = {
USB_QUIRK(CMEDIA, CM6206, 0x0000, 0xffff, UQ_AU_SET_SPDIF_CM6206),
USB_QUIRK(PLOYTEC, SPL_CRIMSON_1, 0x0000, 0xffff, UQ_CFG_INDEX_1),
USB_QUIRK(ROLAND, UA25EX_AD, 0x0000, 0xffff, UQ_AU_VENDOR_CLASS),
+ USB_QUIRK(ROLAND, UA33, 0x0000, 0xffff, UQ_AU_VENDOR_CLASS),
/*
* Quirks for manufacturers which USB devices does not respond
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
index fa201f448fd6..97cd80795e3c 100644
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -4201,6 +4201,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