Re: [PATCH 1/2] ALSA: usb-audio: Add quirk for RME Digiface USB
From: Takashi Iwai
Date: Mon Sep 02 2024 - 04:15:36 EST
On Mon, 02 Sep 2024 10:12:18 +0200,
Asahi Lina wrote:
>
>
>
> On 9/2/24 3:10 PM, Takashi Iwai wrote:
> > On Sun, 01 Sep 2024 23:31:50 +0200,
> > Asahi Lina wrote:
> >>
> >> From: Cyan Nyan <cyan.vtb@xxxxxxxxx>
> >>
> >> Add trivial support for audio streaming on the RME Digiface USB. Binds
> >> only to the first interface to allow userspace to directly drive the
> >> complex I/O and matrix mixer controls.
> >>
> >> Signed-off-by: Cyan Nyan <cyan.vtb@xxxxxxxxx>
> >> [Lina: Added 2x/4x sample rate support & boot/format quirks]
> >> Co-developed-by: Asahi Lina <lina@xxxxxxxxxxxxx>
> >> Signed-off-by: Asahi Lina <lina@xxxxxxxxxxxxx>
> >> ---
> >> sound/usb/quirks-table.h | 190 ++++++++++++++++++++++++++++++++++++++++++++++-
> >> sound/usb/quirks.c | 58 +++++++++++++++
> >> 2 files changed, 247 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
> >> index 73abc38a5400..47fd18791396 100644
> >> --- a/sound/usb/quirks-table.h
> >> +++ b/sound/usb/quirks-table.h
> >> @@ -4546,6 +4546,194 @@ YAMAHA_DEVICE(0x7010, "UB99"),
> >> }
> >> }
> >> },
> >> -
> >> +{
> >> + /* Only claim interface 0 */
> >> + .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
> >> + USB_DEVICE_ID_MATCH_PRODUCT |
> >> + USB_DEVICE_ID_MATCH_INT_CLASS |
> >> + USB_DEVICE_ID_MATCH_INT_NUMBER,
> >> + .idVendor = 0x2a39,
> >> + .idProduct = 0x3f8c,
> >> + .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
> >> + .bInterfaceNumber = 0,
> >> + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
> >> + .ifnum = QUIRK_ANY_INTERFACE,
> >> + .type = QUIRK_COMPOSITE,
> > (snip)
> >
> > Recently the quirk tables are rewritten with macros.
> > See the commit d79e13f8e8abb5cd3a2a0f9fc9bc3fc750c5b06f
> > ALSA: usb-audio: Replace complex quirk lines with macros
> > in for-next branch of sound.git tree.
> >
> > Could you try to apply to your new entries, too?
>
> Sure! Note that I open-coded the USB match because I need to add
> USB_DEVICE_ID_MATCH_INT_NUMBER (to stop the driver from binding to and
> claiming all interfaces, QUIRK_DATA_IGNORE() is not enough for that).
> Should I leave it like that (since it's the only case so far) or do you
> want me to introduce another macro for that case?
The open-code with match_flags is fine, you can keep that.
If we have other similar cases, we can introduce a macro for cleanup
later, too.
> I'll rewrite the quirk info stuff with the macros for v2. I'll also
> remove USB_ENDPOINT_USAGE_IMPLICIT_FB since I'm pretty sure that does
> nothing here (at first I thought I could get it to pick up the implicit
> FB with that but I ended up having to specify the sync/implicit_fb stuff
> explicitly).
Sounds good. Thanks!
Takashi