mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
ALSA: usb-audio: Add quirk for Focusrite Scarlett 18i6
Probing this device currently fails in snd_usb_audio_probe() because
the call to snd_usb_create_mixer() fails. This is due to unknown or
non-standard interface descriptor subtypes in parse_audio_unit():
usbaudio: unit 51: unexpected type 0x09
snd-usb-audio: probe of 1-8:1.0 failed with error -5
Some people are working around this by recompiling usb-audio with the
call to snd_usb_create_mixer() commented out. It would be nice to
avoid that.
While the best idea would be to look into the mixer creation failure,
a reasonable short-term solution is to use quirks to only probe the
trouble-free interfaces. This allows audio and MIDI interfaces to be
used without any obvious issues.
Interface 0 is the main one to ignore. It contains lots of
control-fu, including the unexpected interface descriptor subtypes.
Interface 5 is for firmware updates and I'm not sure how to get
support for this. Interface 3 is some sort of control interface that
I don't understand:
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 9
bInCollection 1
baInterfaceNr( 0) 1
Signed-off-by: Martin Schwenke <martin@meltin.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b7838c2b91
commit
1762a59d8e
|
|
@ -2955,6 +2955,58 @@ YAMAHA_DEVICE(0x7010, "UB99"),
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
/*
|
||||
* Focusrite Scarlett 18i6
|
||||
*
|
||||
* Avoid mixer creation, which otherwise fails because some of
|
||||
* the interface descriptor subtypes for interface 0 are
|
||||
* unknown. That should be fixed or worked-around but this at
|
||||
* least allows the device to be used successfully with a DAW
|
||||
* and an external mixer. See comments below about other
|
||||
* ignored interfaces.
|
||||
*/
|
||||
USB_DEVICE(0x1235, 0x8004),
|
||||
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
|
||||
.vendor_name = "Focusrite",
|
||||
.product_name = "Scarlett 18i6",
|
||||
.ifnum = QUIRK_ANY_INTERFACE,
|
||||
.type = QUIRK_COMPOSITE,
|
||||
.data = & (const struct snd_usb_audio_quirk[]) {
|
||||
{
|
||||
/* InterfaceSubClass 1 (Control Device) */
|
||||
.ifnum = 0,
|
||||
.type = QUIRK_IGNORE_INTERFACE
|
||||
},
|
||||
{
|
||||
.ifnum = 1,
|
||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
||||
},
|
||||
{
|
||||
.ifnum = 2,
|
||||
.type = QUIRK_AUDIO_STANDARD_INTERFACE
|
||||
},
|
||||
{
|
||||
/* InterfaceSubClass 1 (Control Device) */
|
||||
.ifnum = 3,
|
||||
.type = QUIRK_IGNORE_INTERFACE
|
||||
},
|
||||
{
|
||||
.ifnum = 4,
|
||||
.type = QUIRK_MIDI_STANDARD_INTERFACE
|
||||
},
|
||||
{
|
||||
/* InterfaceSubClass 1 (Device Firmware Update) */
|
||||
.ifnum = 5,
|
||||
.type = QUIRK_IGNORE_INTERFACE
|
||||
},
|
||||
{
|
||||
.ifnum = -1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
/*
|
||||
* Some USB MIDI devices don't have an audio control interface,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user