~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/usb/quirks-table.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /sound/usb/quirks-table.h (Architecture i386) and /sound/usb/quirks-table.h (Architecture alpha)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *      1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*                                                  2 /*
  3  * ALSA USB Audio Driver                            3  * ALSA USB Audio Driver
  4  *                                                  4  *
  5  * Copyright (c) 2002 by Takashi Iwai <tiwai@s      5  * Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>,
  6  *                       Clemens Ladisch <clem      6  *                       Clemens Ladisch <clemens@ladisch.de>
  7  */                                                 7  */
  8                                                     8 
  9 /*                                                  9 /*
 10  * The contents of this file are part of the d     10  * The contents of this file are part of the driver's id_table.
 11  *                                                 11  *
 12  * In a perfect world, this file would be empt     12  * In a perfect world, this file would be empty.
 13  */                                                13  */
 14                                                    14 
 15 /*                                                 15 /*
 16  * Use this for devices where other interfaces     16  * Use this for devices where other interfaces are standard compliant,
 17  * to prevent the quirk being applied to those     17  * to prevent the quirk being applied to those interfaces. (To work with
 18  * hotplugging, bDeviceClass must be set to US     18  * hotplugging, bDeviceClass must be set to USB_CLASS_PER_INTERFACE.)
 19  */                                                19  */
 20 #define USB_DEVICE_VENDOR_SPEC(vend, prod) \       20 #define USB_DEVICE_VENDOR_SPEC(vend, prod) \
 21         .match_flags = USB_DEVICE_ID_MATCH_VEN     21         .match_flags = USB_DEVICE_ID_MATCH_VENDOR | \
 22                        USB_DEVICE_ID_MATCH_PRO     22                        USB_DEVICE_ID_MATCH_PRODUCT | \
 23                        USB_DEVICE_ID_MATCH_INT     23                        USB_DEVICE_ID_MATCH_INT_CLASS, \
 24         .idVendor = vend, \                        24         .idVendor = vend, \
 25         .idProduct = prod, \                       25         .idProduct = prod, \
 26         .bInterfaceClass = USB_CLASS_VENDOR_SP     26         .bInterfaceClass = USB_CLASS_VENDOR_SPEC
 27                                                    27 
 28 /* A standard entry matching with vid/pid and      28 /* A standard entry matching with vid/pid and the audio class/subclass */
 29 #define USB_AUDIO_DEVICE(vend, prod) \             29 #define USB_AUDIO_DEVICE(vend, prod) \
 30         .match_flags = USB_DEVICE_ID_MATCH_DEV     30         .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
 31                        USB_DEVICE_ID_MATCH_INT     31                        USB_DEVICE_ID_MATCH_INT_CLASS | \
 32                        USB_DEVICE_ID_MATCH_INT     32                        USB_DEVICE_ID_MATCH_INT_SUBCLASS, \
 33         .idVendor = vend, \                        33         .idVendor = vend, \
 34         .idProduct = prod, \                       34         .idProduct = prod, \
 35         .bInterfaceClass = USB_CLASS_AUDIO, \      35         .bInterfaceClass = USB_CLASS_AUDIO, \
 36         .bInterfaceSubClass = USB_SUBCLASS_AUD     36         .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
 37                                                    37 
 38 /* Quirk .driver_info, followed by the definit     38 /* Quirk .driver_info, followed by the definition of the quirk entry;
 39  * put like QUIRK_DRIVER_INFO { ... } in each      39  * put like QUIRK_DRIVER_INFO { ... } in each entry of the quirk table
 40  */                                                40  */
 41 #define QUIRK_DRIVER_INFO \                        41 #define QUIRK_DRIVER_INFO \
 42         .driver_info = (unsigned long)&(const      42         .driver_info = (unsigned long)&(const struct snd_usb_audio_quirk)
 43                                                    43 
 44 /*                                                 44 /*
 45  * Macros for quirk data entries                   45  * Macros for quirk data entries
 46  */                                                46  */
 47                                                    47 
 48 /* Quirk data entry for ignoring the interface     48 /* Quirk data entry for ignoring the interface */
 49 #define QUIRK_DATA_IGNORE(_ifno) \                 49 #define QUIRK_DATA_IGNORE(_ifno) \
 50         .ifnum = (_ifno), .type = QUIRK_IGNORE     50         .ifnum = (_ifno), .type = QUIRK_IGNORE_INTERFACE
 51 /* Quirk data entry for a standard audio inter     51 /* Quirk data entry for a standard audio interface */
 52 #define QUIRK_DATA_STANDARD_AUDIO(_ifno) \         52 #define QUIRK_DATA_STANDARD_AUDIO(_ifno) \
 53         .ifnum = (_ifno), .type = QUIRK_AUDIO_     53         .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_INTERFACE
 54 /* Quirk data entry for a standard MIDI interf     54 /* Quirk data entry for a standard MIDI interface */
 55 #define QUIRK_DATA_STANDARD_MIDI(_ifno) \          55 #define QUIRK_DATA_STANDARD_MIDI(_ifno) \
 56         .ifnum = (_ifno), .type = QUIRK_MIDI_S     56         .ifnum = (_ifno), .type = QUIRK_MIDI_STANDARD_INTERFACE
 57 /* Quirk data entry for a standard mixer inter     57 /* Quirk data entry for a standard mixer interface */
 58 #define QUIRK_DATA_STANDARD_MIXER(_ifno) \         58 #define QUIRK_DATA_STANDARD_MIXER(_ifno) \
 59         .ifnum = (_ifno), .type = QUIRK_AUDIO_     59         .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_MIXER
 60                                                    60 
 61 /* Quirk data entry for Yamaha MIDI */             61 /* Quirk data entry for Yamaha MIDI */
 62 #define QUIRK_DATA_MIDI_YAMAHA(_ifno) \            62 #define QUIRK_DATA_MIDI_YAMAHA(_ifno) \
 63         .ifnum = (_ifno), .type = QUIRK_MIDI_Y     63         .ifnum = (_ifno), .type = QUIRK_MIDI_YAMAHA
 64 /* Quirk data entry for Edirol UAxx */             64 /* Quirk data entry for Edirol UAxx */
 65 #define QUIRK_DATA_EDIROL_UAXX(_ifno) \            65 #define QUIRK_DATA_EDIROL_UAXX(_ifno) \
 66         .ifnum = (_ifno), .type = QUIRK_AUDIO_     66         .ifnum = (_ifno), .type = QUIRK_AUDIO_EDIROL_UAXX
 67 /* Quirk data entry for raw bytes interface */     67 /* Quirk data entry for raw bytes interface */
 68 #define QUIRK_DATA_RAW_BYTES(_ifno) \              68 #define QUIRK_DATA_RAW_BYTES(_ifno) \
 69         .ifnum = (_ifno), .type = QUIRK_MIDI_R     69         .ifnum = (_ifno), .type = QUIRK_MIDI_RAW_BYTES
 70                                                    70 
 71 /* Quirk composite array terminator */             71 /* Quirk composite array terminator */
 72 #define QUIRK_COMPOSITE_END     { .ifnum = -1      72 #define QUIRK_COMPOSITE_END     { .ifnum = -1 }
 73                                                    73 
 74 /* Quirk data entry for composite quirks;          74 /* Quirk data entry for composite quirks;
 75  * followed by the quirk array that is termina     75  * followed by the quirk array that is terminated with QUIRK_COMPOSITE_END
 76  * e.g. QUIRK_DATA_COMPOSITE { { quirk1 }, { q     76  * e.g. QUIRK_DATA_COMPOSITE { { quirk1 }, { quirk2 },..., QUIRK_COMPOSITE_END }
 77  */                                                77  */
 78 #define QUIRK_DATA_COMPOSITE \                     78 #define QUIRK_DATA_COMPOSITE \
 79         .ifnum = QUIRK_ANY_INTERFACE, \            79         .ifnum = QUIRK_ANY_INTERFACE, \
 80         .type = QUIRK_COMPOSITE, \                 80         .type = QUIRK_COMPOSITE, \
 81         .data = &(const struct snd_usb_audio_q     81         .data = &(const struct snd_usb_audio_quirk[])
 82                                                    82 
 83 /* Quirk data entry for a fixed audio endpoint     83 /* Quirk data entry for a fixed audio endpoint;
 84  * followed by audioformat definition              84  * followed by audioformat definition
 85  * e.g. QUIRK_DATA_AUDIOFORMAT(n) { .formats =     85  * e.g. QUIRK_DATA_AUDIOFORMAT(n) { .formats = xxx, ... }
 86  */                                                86  */
 87 #define QUIRK_DATA_AUDIOFORMAT(_ifno)       \      87 #define QUIRK_DATA_AUDIOFORMAT(_ifno)       \
 88         .ifnum = (_ifno),                   \      88         .ifnum = (_ifno),                   \
 89         .type = QUIRK_AUDIO_FIXED_ENDPOINT, \      89         .type = QUIRK_AUDIO_FIXED_ENDPOINT, \
 90         .data = &(const struct audioformat)        90         .data = &(const struct audioformat)
 91                                                    91 
 92 /* Quirk data entry for a fixed MIDI endpoint;     92 /* Quirk data entry for a fixed MIDI endpoint;
 93  * followed by snd_usb_midi_endpoint_info defi     93  * followed by snd_usb_midi_endpoint_info definition
 94  * e.g. QUIRK_DATA_MIDI_FIXED_ENDPOINT(n) { .o     94  * e.g. QUIRK_DATA_MIDI_FIXED_ENDPOINT(n) { .out_cables = x, .in_cables = y }
 95  */                                                95  */
 96 #define QUIRK_DATA_MIDI_FIXED_ENDPOINT(_ifno)      96 #define QUIRK_DATA_MIDI_FIXED_ENDPOINT(_ifno) \
 97         .ifnum = (_ifno),                          97         .ifnum = (_ifno),                     \
 98         .type = QUIRK_MIDI_FIXED_ENDPOINT,         98         .type = QUIRK_MIDI_FIXED_ENDPOINT,    \
 99         .data = &(const struct snd_usb_midi_en     99         .data = &(const struct snd_usb_midi_endpoint_info)
100 /* Quirk data entry for a MIDIMAN MIDI endpoin    100 /* Quirk data entry for a MIDIMAN MIDI endpoint */
101 #define QUIRK_DATA_MIDI_MIDIMAN(_ifno) \          101 #define QUIRK_DATA_MIDI_MIDIMAN(_ifno) \
102         .ifnum = (_ifno),              \          102         .ifnum = (_ifno),              \
103         .type = QUIRK_MIDI_MIDIMAN,    \          103         .type = QUIRK_MIDI_MIDIMAN,    \
104         .data = &(const struct snd_usb_midi_en    104         .data = &(const struct snd_usb_midi_endpoint_info)
105 /* Quirk data entry for a EMAGIC MIDI endpoint    105 /* Quirk data entry for a EMAGIC MIDI endpoint */
106 #define QUIRK_DATA_MIDI_EMAGIC(_ifno) \           106 #define QUIRK_DATA_MIDI_EMAGIC(_ifno) \
107         .ifnum = (_ifno),             \           107         .ifnum = (_ifno),             \
108         .type = QUIRK_MIDI_EMAGIC,    \           108         .type = QUIRK_MIDI_EMAGIC,    \
109         .data = &(const struct snd_usb_midi_en    109         .data = &(const struct snd_usb_midi_endpoint_info)
110                                                   110 
111 /*                                                111 /*
112  * Here we go... the quirk table definition be    112  * Here we go... the quirk table definition begins:
113  */                                               113  */
114                                                   114 
115 /* FTDI devices */                                115 /* FTDI devices */
116 {                                                 116 {
117         USB_DEVICE(0x0403, 0xb8d8),               117         USB_DEVICE(0x0403, 0xb8d8),
118         QUIRK_DRIVER_INFO {                       118         QUIRK_DRIVER_INFO {
119                 /* .vendor_name = "STARR LABS"    119                 /* .vendor_name = "STARR LABS", */
120                 /* .product_name = "Starr Labs    120                 /* .product_name = "Starr Labs MIDI USB device", */
121                 .ifnum = 0,                       121                 .ifnum = 0,
122                 .type = QUIRK_MIDI_FTDI           122                 .type = QUIRK_MIDI_FTDI
123         }                                         123         }
124 },                                                124 },
125                                                   125 
126 {                                                 126 {
127         /* Creative BT-D1 */                      127         /* Creative BT-D1 */
128         USB_DEVICE(0x041e, 0x0005),               128         USB_DEVICE(0x041e, 0x0005),
129         QUIRK_DRIVER_INFO {                       129         QUIRK_DRIVER_INFO {
130                 QUIRK_DATA_AUDIOFORMAT(1) {       130                 QUIRK_DATA_AUDIOFORMAT(1) {
131                         .formats = SNDRV_PCM_F    131                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
132                         .channels = 2,            132                         .channels = 2,
133                         .iface = 1,               133                         .iface = 1,
134                         .altsetting = 1,          134                         .altsetting = 1,
135                         .altset_idx = 1,          135                         .altset_idx = 1,
136                         .endpoint = 0x03,         136                         .endpoint = 0x03,
137                         .ep_attr = USB_ENDPOIN    137                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
138                         .attributes = 0,          138                         .attributes = 0,
139                         .rates = SNDRV_PCM_RAT    139                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
140                         .rate_min = 48000,        140                         .rate_min = 48000,
141                         .rate_max = 48000,        141                         .rate_max = 48000,
142                 }                                 142                 }
143         }                                         143         }
144 },                                                144 },
145                                                   145 
146 /* E-Mu 0202 USB */                               146 /* E-Mu 0202 USB */
147 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) },       147 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) },
148 /* E-Mu 0404 USB */                               148 /* E-Mu 0404 USB */
149 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) },       149 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) },
150 /* E-Mu Tracker Pre */                            150 /* E-Mu Tracker Pre */
151 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) },       151 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) },
152 /* E-Mu 0204 USB */                               152 /* E-Mu 0204 USB */
153 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) },       153 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) },
154 /* Ktmicro Usb_audio device */                    154 /* Ktmicro Usb_audio device */
155 { USB_DEVICE_VENDOR_SPEC(0x31b2, 0x0011) },       155 { USB_DEVICE_VENDOR_SPEC(0x31b2, 0x0011) },
156                                                   156 
157 /*                                                157 /*
158  * Creative Technology, Ltd Live! Cam Sync HD     158  * Creative Technology, Ltd Live! Cam Sync HD [VF0770]
159  * The device advertises 8 formats, but only a    159  * The device advertises 8 formats, but only a rate of 48kHz is honored by the
160  * hardware and 24 bits give chopped audio, so    160  * hardware and 24 bits give chopped audio, so only report the one working
161  * combination.                                   161  * combination.
162  */                                               162  */
163 {                                                 163 {
164         USB_AUDIO_DEVICE(0x041e, 0x4095),         164         USB_AUDIO_DEVICE(0x041e, 0x4095),
165         QUIRK_DRIVER_INFO {                       165         QUIRK_DRIVER_INFO {
166                 QUIRK_DATA_COMPOSITE {            166                 QUIRK_DATA_COMPOSITE {
167                         { QUIRK_DATA_STANDARD_    167                         { QUIRK_DATA_STANDARD_MIXER(2) },
168                         {                         168                         {
169                                 QUIRK_DATA_AUD    169                                 QUIRK_DATA_AUDIOFORMAT(3) {
170                                         .forma    170                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
171                                         .chann    171                                         .channels = 2,
172                                         .fmt_b    172                                         .fmt_bits = 16,
173                                         .iface    173                                         .iface = 3,
174                                         .altse    174                                         .altsetting = 4,
175                                         .altse    175                                         .altset_idx = 4,
176                                         .endpo    176                                         .endpoint = 0x82,
177                                         .ep_at    177                                         .ep_attr = 0x05,
178                                         .rates    178                                         .rates = SNDRV_PCM_RATE_48000,
179                                         .rate_    179                                         .rate_min = 48000,
180                                         .rate_    180                                         .rate_max = 48000,
181                                         .nr_ra    181                                         .nr_rates = 1,
182                                         .rate_    182                                         .rate_table = (unsigned int[]) { 48000 },
183                                 },                183                                 },
184                         },                        184                         },
185                         QUIRK_COMPOSITE_END       185                         QUIRK_COMPOSITE_END
186                 },                                186                 },
187         },                                        187         },
188 },                                                188 },
189                                                   189 
190 /*                                                190 /*
191  * HP Wireless Audio                              191  * HP Wireless Audio
192  * When not ignored, causes instability issues    192  * When not ignored, causes instability issues for some users, forcing them to
193  * skip the entire module.                        193  * skip the entire module.
194  */                                               194  */
195 {                                                 195 {
196         USB_DEVICE(0x0424, 0xb832),               196         USB_DEVICE(0x0424, 0xb832),
197         QUIRK_DRIVER_INFO {                       197         QUIRK_DRIVER_INFO {
198                 .vendor_name = "Standard Micro    198                 .vendor_name = "Standard Microsystems Corp.",
199                 .product_name = "HP Wireless A    199                 .product_name = "HP Wireless Audio",
200                 QUIRK_DATA_COMPOSITE {            200                 QUIRK_DATA_COMPOSITE {
201                         /* Mixer */               201                         /* Mixer */
202                         { QUIRK_DATA_IGNORE(0)    202                         { QUIRK_DATA_IGNORE(0) },
203                         /* Playback */            203                         /* Playback */
204                         { QUIRK_DATA_IGNORE(1)    204                         { QUIRK_DATA_IGNORE(1) },
205                         /* Capture */             205                         /* Capture */
206                         { QUIRK_DATA_IGNORE(2)    206                         { QUIRK_DATA_IGNORE(2) },
207                         /* HID Device, .ifnum     207                         /* HID Device, .ifnum = 3 */
208                         QUIRK_COMPOSITE_END       208                         QUIRK_COMPOSITE_END
209                 }                                 209                 }
210         }                                         210         }
211 },                                                211 },
212                                                   212 
213 /*                                                213 /*
214  * Logitech QuickCam: bDeviceClass is vendor-s    214  * Logitech QuickCam: bDeviceClass is vendor-specific, so generic interface
215  * class matches do not take effect without an    215  * class matches do not take effect without an explicit ID match.
216  */                                               216  */
217 { USB_AUDIO_DEVICE(0x046d, 0x0850) },             217 { USB_AUDIO_DEVICE(0x046d, 0x0850) },
218 { USB_AUDIO_DEVICE(0x046d, 0x08ae) },             218 { USB_AUDIO_DEVICE(0x046d, 0x08ae) },
219 { USB_AUDIO_DEVICE(0x046d, 0x08c6) },             219 { USB_AUDIO_DEVICE(0x046d, 0x08c6) },
220 { USB_AUDIO_DEVICE(0x046d, 0x08f0) },             220 { USB_AUDIO_DEVICE(0x046d, 0x08f0) },
221 { USB_AUDIO_DEVICE(0x046d, 0x08f5) },             221 { USB_AUDIO_DEVICE(0x046d, 0x08f5) },
222 { USB_AUDIO_DEVICE(0x046d, 0x08f6) },             222 { USB_AUDIO_DEVICE(0x046d, 0x08f6) },
223 { USB_AUDIO_DEVICE(0x046d, 0x0990) },             223 { USB_AUDIO_DEVICE(0x046d, 0x0990) },
224                                                   224 
225 /*                                                225 /*
226  * Yamaha devices                                 226  * Yamaha devices
227  */                                               227  */
228                                                   228 
229 #define YAMAHA_DEVICE(id, name) { \               229 #define YAMAHA_DEVICE(id, name) { \
230         USB_DEVICE(0x0499, id), \                 230         USB_DEVICE(0x0499, id), \
231         QUIRK_DRIVER_INFO { \                     231         QUIRK_DRIVER_INFO { \
232                 .vendor_name = "Yamaha", \        232                 .vendor_name = "Yamaha", \
233                 .product_name = name, \           233                 .product_name = name, \
234                 QUIRK_DATA_MIDI_YAMAHA(QUIRK_A    234                 QUIRK_DATA_MIDI_YAMAHA(QUIRK_ANY_INTERFACE) \
235         } \                                       235         } \
236 }                                                 236 }
237 #define YAMAHA_INTERFACE(id, intf, name) { \      237 #define YAMAHA_INTERFACE(id, intf, name) { \
238         USB_DEVICE_VENDOR_SPEC(0x0499, id), \     238         USB_DEVICE_VENDOR_SPEC(0x0499, id), \
239         QUIRK_DRIVER_INFO { \                     239         QUIRK_DRIVER_INFO { \
240                 .vendor_name = "Yamaha", \        240                 .vendor_name = "Yamaha", \
241                 .product_name = name, \           241                 .product_name = name, \
242                 QUIRK_DATA_MIDI_YAMAHA(intf) \    242                 QUIRK_DATA_MIDI_YAMAHA(intf) \
243         } \                                       243         } \
244 }                                                 244 }
245 YAMAHA_DEVICE(0x1000, "UX256"),                   245 YAMAHA_DEVICE(0x1000, "UX256"),
246 YAMAHA_DEVICE(0x1001, "MU1000"),                  246 YAMAHA_DEVICE(0x1001, "MU1000"),
247 YAMAHA_DEVICE(0x1002, "MU2000"),                  247 YAMAHA_DEVICE(0x1002, "MU2000"),
248 YAMAHA_DEVICE(0x1003, "MU500"),                   248 YAMAHA_DEVICE(0x1003, "MU500"),
249 YAMAHA_INTERFACE(0x1004, 3, "UW500"),             249 YAMAHA_INTERFACE(0x1004, 3, "UW500"),
250 YAMAHA_DEVICE(0x1005, "MOTIF6"),                  250 YAMAHA_DEVICE(0x1005, "MOTIF6"),
251 YAMAHA_DEVICE(0x1006, "MOTIF7"),                  251 YAMAHA_DEVICE(0x1006, "MOTIF7"),
252 YAMAHA_DEVICE(0x1007, "MOTIF8"),                  252 YAMAHA_DEVICE(0x1007, "MOTIF8"),
253 YAMAHA_DEVICE(0x1008, "UX96"),                    253 YAMAHA_DEVICE(0x1008, "UX96"),
254 YAMAHA_DEVICE(0x1009, "UX16"),                    254 YAMAHA_DEVICE(0x1009, "UX16"),
255 YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),            255 YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),
256 YAMAHA_DEVICE(0x100c, "UC-MX"),                   256 YAMAHA_DEVICE(0x100c, "UC-MX"),
257 YAMAHA_DEVICE(0x100d, "UC-KX"),                   257 YAMAHA_DEVICE(0x100d, "UC-KX"),
258 YAMAHA_DEVICE(0x100e, "S08"),                     258 YAMAHA_DEVICE(0x100e, "S08"),
259 YAMAHA_DEVICE(0x100f, "CLP-150"),                 259 YAMAHA_DEVICE(0x100f, "CLP-150"),
260 YAMAHA_DEVICE(0x1010, "CLP-170"),                 260 YAMAHA_DEVICE(0x1010, "CLP-170"),
261 YAMAHA_DEVICE(0x1011, "P-250"),                   261 YAMAHA_DEVICE(0x1011, "P-250"),
262 YAMAHA_DEVICE(0x1012, "TYROS"),                   262 YAMAHA_DEVICE(0x1012, "TYROS"),
263 YAMAHA_DEVICE(0x1013, "PF-500"),                  263 YAMAHA_DEVICE(0x1013, "PF-500"),
264 YAMAHA_DEVICE(0x1014, "S90"),                     264 YAMAHA_DEVICE(0x1014, "S90"),
265 YAMAHA_DEVICE(0x1015, "MOTIF-R"),                 265 YAMAHA_DEVICE(0x1015, "MOTIF-R"),
266 YAMAHA_DEVICE(0x1016, "MDP-5"),                   266 YAMAHA_DEVICE(0x1016, "MDP-5"),
267 YAMAHA_DEVICE(0x1017, "CVP-204"),                 267 YAMAHA_DEVICE(0x1017, "CVP-204"),
268 YAMAHA_DEVICE(0x1018, "CVP-206"),                 268 YAMAHA_DEVICE(0x1018, "CVP-206"),
269 YAMAHA_DEVICE(0x1019, "CVP-208"),                 269 YAMAHA_DEVICE(0x1019, "CVP-208"),
270 YAMAHA_DEVICE(0x101a, "CVP-210"),                 270 YAMAHA_DEVICE(0x101a, "CVP-210"),
271 YAMAHA_DEVICE(0x101b, "PSR-1100"),                271 YAMAHA_DEVICE(0x101b, "PSR-1100"),
272 YAMAHA_DEVICE(0x101c, "PSR-2100"),                272 YAMAHA_DEVICE(0x101c, "PSR-2100"),
273 YAMAHA_DEVICE(0x101d, "CLP-175"),                 273 YAMAHA_DEVICE(0x101d, "CLP-175"),
274 YAMAHA_DEVICE(0x101e, "PSR-K1"),                  274 YAMAHA_DEVICE(0x101e, "PSR-K1"),
275 YAMAHA_DEVICE(0x101f, "EZ-J24"),                  275 YAMAHA_DEVICE(0x101f, "EZ-J24"),
276 YAMAHA_DEVICE(0x1020, "EZ-250i"),                 276 YAMAHA_DEVICE(0x1020, "EZ-250i"),
277 YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),              277 YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),
278 YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),              278 YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),
279 YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),              279 YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),
280 YAMAHA_DEVICE(0x1024, "CVP-301"),                 280 YAMAHA_DEVICE(0x1024, "CVP-301"),
281 YAMAHA_DEVICE(0x1025, "CVP-303"),                 281 YAMAHA_DEVICE(0x1025, "CVP-303"),
282 YAMAHA_DEVICE(0x1026, "CVP-305"),                 282 YAMAHA_DEVICE(0x1026, "CVP-305"),
283 YAMAHA_DEVICE(0x1027, "CVP-307"),                 283 YAMAHA_DEVICE(0x1027, "CVP-307"),
284 YAMAHA_DEVICE(0x1028, "CVP-309"),                 284 YAMAHA_DEVICE(0x1028, "CVP-309"),
285 YAMAHA_DEVICE(0x1029, "CVP-309GP"),               285 YAMAHA_DEVICE(0x1029, "CVP-309GP"),
286 YAMAHA_DEVICE(0x102a, "PSR-1500"),                286 YAMAHA_DEVICE(0x102a, "PSR-1500"),
287 YAMAHA_DEVICE(0x102b, "PSR-3000"),                287 YAMAHA_DEVICE(0x102b, "PSR-3000"),
288 YAMAHA_DEVICE(0x102e, "ELS-01/01C"),              288 YAMAHA_DEVICE(0x102e, "ELS-01/01C"),
289 YAMAHA_DEVICE(0x1030, "PSR-295/293"),             289 YAMAHA_DEVICE(0x1030, "PSR-295/293"),
290 YAMAHA_DEVICE(0x1031, "DGX-205/203"),             290 YAMAHA_DEVICE(0x1031, "DGX-205/203"),
291 YAMAHA_DEVICE(0x1032, "DGX-305"),                 291 YAMAHA_DEVICE(0x1032, "DGX-305"),
292 YAMAHA_DEVICE(0x1033, "DGX-505"),                 292 YAMAHA_DEVICE(0x1033, "DGX-505"),
293 YAMAHA_DEVICE(0x1034, NULL),                      293 YAMAHA_DEVICE(0x1034, NULL),
294 YAMAHA_DEVICE(0x1035, NULL),                      294 YAMAHA_DEVICE(0x1035, NULL),
295 YAMAHA_DEVICE(0x1036, NULL),                      295 YAMAHA_DEVICE(0x1036, NULL),
296 YAMAHA_DEVICE(0x1037, NULL),                      296 YAMAHA_DEVICE(0x1037, NULL),
297 YAMAHA_DEVICE(0x1038, NULL),                      297 YAMAHA_DEVICE(0x1038, NULL),
298 YAMAHA_DEVICE(0x1039, NULL),                      298 YAMAHA_DEVICE(0x1039, NULL),
299 YAMAHA_DEVICE(0x103a, NULL),                      299 YAMAHA_DEVICE(0x103a, NULL),
300 YAMAHA_DEVICE(0x103b, NULL),                      300 YAMAHA_DEVICE(0x103b, NULL),
301 YAMAHA_DEVICE(0x103c, NULL),                      301 YAMAHA_DEVICE(0x103c, NULL),
302 YAMAHA_DEVICE(0x103d, NULL),                      302 YAMAHA_DEVICE(0x103d, NULL),
303 YAMAHA_DEVICE(0x103e, NULL),                      303 YAMAHA_DEVICE(0x103e, NULL),
304 YAMAHA_DEVICE(0x103f, NULL),                      304 YAMAHA_DEVICE(0x103f, NULL),
305 YAMAHA_DEVICE(0x1040, NULL),                      305 YAMAHA_DEVICE(0x1040, NULL),
306 YAMAHA_DEVICE(0x1041, NULL),                      306 YAMAHA_DEVICE(0x1041, NULL),
307 YAMAHA_DEVICE(0x1042, NULL),                      307 YAMAHA_DEVICE(0x1042, NULL),
308 YAMAHA_DEVICE(0x1043, NULL),                      308 YAMAHA_DEVICE(0x1043, NULL),
309 YAMAHA_DEVICE(0x1044, NULL),                      309 YAMAHA_DEVICE(0x1044, NULL),
310 YAMAHA_DEVICE(0x1045, NULL),                      310 YAMAHA_DEVICE(0x1045, NULL),
311 YAMAHA_INTERFACE(0x104e, 0, NULL),                311 YAMAHA_INTERFACE(0x104e, 0, NULL),
312 YAMAHA_DEVICE(0x104f, NULL),                      312 YAMAHA_DEVICE(0x104f, NULL),
313 YAMAHA_DEVICE(0x1050, NULL),                      313 YAMAHA_DEVICE(0x1050, NULL),
314 YAMAHA_DEVICE(0x1051, NULL),                      314 YAMAHA_DEVICE(0x1051, NULL),
315 YAMAHA_DEVICE(0x1052, NULL),                      315 YAMAHA_DEVICE(0x1052, NULL),
316 YAMAHA_INTERFACE(0x1053, 0, NULL),                316 YAMAHA_INTERFACE(0x1053, 0, NULL),
317 YAMAHA_INTERFACE(0x1054, 0, NULL),                317 YAMAHA_INTERFACE(0x1054, 0, NULL),
318 YAMAHA_DEVICE(0x1055, NULL),                      318 YAMAHA_DEVICE(0x1055, NULL),
319 YAMAHA_DEVICE(0x1056, NULL),                      319 YAMAHA_DEVICE(0x1056, NULL),
320 YAMAHA_DEVICE(0x1057, NULL),                      320 YAMAHA_DEVICE(0x1057, NULL),
321 YAMAHA_DEVICE(0x1058, NULL),                      321 YAMAHA_DEVICE(0x1058, NULL),
322 YAMAHA_DEVICE(0x1059, NULL),                      322 YAMAHA_DEVICE(0x1059, NULL),
323 YAMAHA_DEVICE(0x105a, NULL),                      323 YAMAHA_DEVICE(0x105a, NULL),
324 YAMAHA_DEVICE(0x105b, NULL),                      324 YAMAHA_DEVICE(0x105b, NULL),
325 YAMAHA_DEVICE(0x105c, NULL),                      325 YAMAHA_DEVICE(0x105c, NULL),
326 YAMAHA_DEVICE(0x105d, NULL),                      326 YAMAHA_DEVICE(0x105d, NULL),
327 YAMAHA_DEVICE(0x1718, "P-125"),                   327 YAMAHA_DEVICE(0x1718, "P-125"),
328 {                                                 328 {
329         USB_DEVICE(0x0499, 0x1503),               329         USB_DEVICE(0x0499, 0x1503),
330         QUIRK_DRIVER_INFO {                       330         QUIRK_DRIVER_INFO {
331                 /* .vendor_name = "Yamaha", */    331                 /* .vendor_name = "Yamaha", */
332                 /* .product_name = "MOX6/MOX8"    332                 /* .product_name = "MOX6/MOX8", */
333                 QUIRK_DATA_COMPOSITE {            333                 QUIRK_DATA_COMPOSITE {
334                         { QUIRK_DATA_STANDARD_    334                         { QUIRK_DATA_STANDARD_AUDIO(1) },
335                         { QUIRK_DATA_STANDARD_    335                         { QUIRK_DATA_STANDARD_AUDIO(2) },
336                         { QUIRK_DATA_MIDI_YAMA    336                         { QUIRK_DATA_MIDI_YAMAHA(3) },
337                         QUIRK_COMPOSITE_END       337                         QUIRK_COMPOSITE_END
338                 }                                 338                 }
339         }                                         339         }
340 },                                                340 },
341 {                                                 341 {
342         USB_DEVICE(0x0499, 0x1507),               342         USB_DEVICE(0x0499, 0x1507),
343         QUIRK_DRIVER_INFO {                       343         QUIRK_DRIVER_INFO {
344                 /* .vendor_name = "Yamaha", */    344                 /* .vendor_name = "Yamaha", */
345                 /* .product_name = "THR10", */    345                 /* .product_name = "THR10", */
346                 QUIRK_DATA_COMPOSITE {            346                 QUIRK_DATA_COMPOSITE {
347                         { QUIRK_DATA_STANDARD_    347                         { QUIRK_DATA_STANDARD_AUDIO(1) },
348                         { QUIRK_DATA_STANDARD_    348                         { QUIRK_DATA_STANDARD_AUDIO(2) },
349                         { QUIRK_DATA_MIDI_YAMA    349                         { QUIRK_DATA_MIDI_YAMAHA(3) },
350                         QUIRK_COMPOSITE_END       350                         QUIRK_COMPOSITE_END
351                 }                                 351                 }
352         }                                         352         }
353 },                                                353 },
354 {                                                 354 {
355         USB_DEVICE(0x0499, 0x1509),               355         USB_DEVICE(0x0499, 0x1509),
356         QUIRK_DRIVER_INFO {                       356         QUIRK_DRIVER_INFO {
357                 /* .vendor_name = "Yamaha", */    357                 /* .vendor_name = "Yamaha", */
358                 /* .product_name = "Steinberg     358                 /* .product_name = "Steinberg UR22", */
359                 QUIRK_DATA_COMPOSITE {            359                 QUIRK_DATA_COMPOSITE {
360                         { QUIRK_DATA_STANDARD_    360                         { QUIRK_DATA_STANDARD_AUDIO(1) },
361                         { QUIRK_DATA_STANDARD_    361                         { QUIRK_DATA_STANDARD_AUDIO(2) },
362                         { QUIRK_DATA_MIDI_YAMA    362                         { QUIRK_DATA_MIDI_YAMAHA(3) },
363                         { QUIRK_DATA_IGNORE(4)    363                         { QUIRK_DATA_IGNORE(4) },
364                         QUIRK_COMPOSITE_END       364                         QUIRK_COMPOSITE_END
365                 }                                 365                 }
366         }                                         366         }
367 },                                                367 },
368 {                                                 368 {
369         USB_DEVICE(0x0499, 0x150a),               369         USB_DEVICE(0x0499, 0x150a),
370         QUIRK_DRIVER_INFO {                       370         QUIRK_DRIVER_INFO {
371                 /* .vendor_name = "Yamaha", */    371                 /* .vendor_name = "Yamaha", */
372                 /* .product_name = "THR5A", */    372                 /* .product_name = "THR5A", */
373                 QUIRK_DATA_COMPOSITE {            373                 QUIRK_DATA_COMPOSITE {
374                         { QUIRK_DATA_STANDARD_    374                         { QUIRK_DATA_STANDARD_AUDIO(1) },
375                         { QUIRK_DATA_STANDARD_    375                         { QUIRK_DATA_STANDARD_AUDIO(2) },
376                         { QUIRK_DATA_MIDI_YAMA    376                         { QUIRK_DATA_MIDI_YAMAHA(3) },
377                         QUIRK_COMPOSITE_END       377                         QUIRK_COMPOSITE_END
378                 }                                 378                 }
379         }                                         379         }
380 },                                                380 },
381 {                                                 381 {
382         USB_DEVICE(0x0499, 0x150c),               382         USB_DEVICE(0x0499, 0x150c),
383         QUIRK_DRIVER_INFO {                       383         QUIRK_DRIVER_INFO {
384                 /* .vendor_name = "Yamaha", */    384                 /* .vendor_name = "Yamaha", */
385                 /* .product_name = "THR10C", *    385                 /* .product_name = "THR10C", */
386                 QUIRK_DATA_COMPOSITE {            386                 QUIRK_DATA_COMPOSITE {
387                         { QUIRK_DATA_STANDARD_    387                         { QUIRK_DATA_STANDARD_AUDIO(1) },
388                         { QUIRK_DATA_STANDARD_    388                         { QUIRK_DATA_STANDARD_AUDIO(2) },
389                         { QUIRK_DATA_MIDI_YAMA    389                         { QUIRK_DATA_MIDI_YAMAHA(3) },
390                         QUIRK_COMPOSITE_END       390                         QUIRK_COMPOSITE_END
391                 }                                 391                 }
392         }                                         392         }
393 },                                                393 },
394 YAMAHA_DEVICE(0x2000, "DGP-7"),                   394 YAMAHA_DEVICE(0x2000, "DGP-7"),
395 YAMAHA_DEVICE(0x2001, "DGP-5"),                   395 YAMAHA_DEVICE(0x2001, "DGP-5"),
396 YAMAHA_DEVICE(0x2002, NULL),                      396 YAMAHA_DEVICE(0x2002, NULL),
397 YAMAHA_DEVICE(0x2003, NULL),                      397 YAMAHA_DEVICE(0x2003, NULL),
398 YAMAHA_DEVICE(0x5000, "CS1D"),                    398 YAMAHA_DEVICE(0x5000, "CS1D"),
399 YAMAHA_DEVICE(0x5001, "DSP1D"),                   399 YAMAHA_DEVICE(0x5001, "DSP1D"),
400 YAMAHA_DEVICE(0x5002, "DME32"),                   400 YAMAHA_DEVICE(0x5002, "DME32"),
401 YAMAHA_DEVICE(0x5003, "DM2000"),                  401 YAMAHA_DEVICE(0x5003, "DM2000"),
402 YAMAHA_DEVICE(0x5004, "02R96"),                   402 YAMAHA_DEVICE(0x5004, "02R96"),
403 YAMAHA_DEVICE(0x5005, "ACU16-C"),                 403 YAMAHA_DEVICE(0x5005, "ACU16-C"),
404 YAMAHA_DEVICE(0x5006, "NHB32-C"),                 404 YAMAHA_DEVICE(0x5006, "NHB32-C"),
405 YAMAHA_DEVICE(0x5007, "DM1000"),                  405 YAMAHA_DEVICE(0x5007, "DM1000"),
406 YAMAHA_DEVICE(0x5008, "01V96"),                   406 YAMAHA_DEVICE(0x5008, "01V96"),
407 YAMAHA_DEVICE(0x5009, "SPX2000"),                 407 YAMAHA_DEVICE(0x5009, "SPX2000"),
408 YAMAHA_DEVICE(0x500a, "PM5D"),                    408 YAMAHA_DEVICE(0x500a, "PM5D"),
409 YAMAHA_DEVICE(0x500b, "DME64N"),                  409 YAMAHA_DEVICE(0x500b, "DME64N"),
410 YAMAHA_DEVICE(0x500c, "DME24N"),                  410 YAMAHA_DEVICE(0x500c, "DME24N"),
411 YAMAHA_DEVICE(0x500d, NULL),                      411 YAMAHA_DEVICE(0x500d, NULL),
412 YAMAHA_DEVICE(0x500e, NULL),                      412 YAMAHA_DEVICE(0x500e, NULL),
413 YAMAHA_DEVICE(0x500f, NULL),                      413 YAMAHA_DEVICE(0x500f, NULL),
414 YAMAHA_DEVICE(0x7000, "DTX"),                     414 YAMAHA_DEVICE(0x7000, "DTX"),
415 YAMAHA_DEVICE(0x7010, "UB99"),                    415 YAMAHA_DEVICE(0x7010, "UB99"),
416 #undef YAMAHA_DEVICE                              416 #undef YAMAHA_DEVICE
417 #undef YAMAHA_INTERFACE                           417 #undef YAMAHA_INTERFACE
418 /* this catches most recent vendor-specific Ya    418 /* this catches most recent vendor-specific Yamaha devices */
419 {                                                 419 {
420         .match_flags = USB_DEVICE_ID_MATCH_VEN    420         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
421                        USB_DEVICE_ID_MATCH_INT    421                        USB_DEVICE_ID_MATCH_INT_CLASS,
422         .idVendor = 0x0499,                       422         .idVendor = 0x0499,
423         .bInterfaceClass = USB_CLASS_VENDOR_SP    423         .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
424         QUIRK_DRIVER_INFO {                       424         QUIRK_DRIVER_INFO {
425                 .ifnum = QUIRK_ANY_INTERFACE,     425                 .ifnum = QUIRK_ANY_INTERFACE,
426                 .type = QUIRK_AUTODETECT          426                 .type = QUIRK_AUTODETECT
427         }                                         427         }
428 },                                                428 },
429                                                   429 
430 /*                                                430 /*
431  * Roland/RolandED/Edirol/BOSS devices            431  * Roland/RolandED/Edirol/BOSS devices
432  */                                               432  */
433 {                                                 433 {
434         USB_DEVICE(0x0582, 0x0000),               434         USB_DEVICE(0x0582, 0x0000),
435         QUIRK_DRIVER_INFO {                       435         QUIRK_DRIVER_INFO {
436                 .vendor_name = "Roland",          436                 .vendor_name = "Roland",
437                 .product_name = "UA-100",         437                 .product_name = "UA-100",
438                 QUIRK_DATA_COMPOSITE {            438                 QUIRK_DATA_COMPOSITE {
439                         {                         439                         {
440                                 QUIRK_DATA_AUD    440                                 QUIRK_DATA_AUDIOFORMAT(0) {
441                                         .forma    441                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
442                                         .chann    442                                         .channels = 4,
443                                         .iface    443                                         .iface = 0,
444                                         .altse    444                                         .altsetting = 1,
445                                         .altse    445                                         .altset_idx = 1,
446                                         .attri    446                                         .attributes = 0,
447                                         .endpo    447                                         .endpoint = 0x01,
448                                         .ep_at    448                                         .ep_attr = 0x09,
449                                         .rates    449                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
450                                         .rate_    450                                         .rate_min = 44100,
451                                         .rate_    451                                         .rate_max = 44100,
452                                 }                 452                                 }
453                         },                        453                         },
454                         {                         454                         {
455                                 QUIRK_DATA_AUD    455                                 QUIRK_DATA_AUDIOFORMAT(1) {
456                                         .forma    456                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
457                                         .chann    457                                         .channels = 2,
458                                         .iface    458                                         .iface = 1,
459                                         .altse    459                                         .altsetting = 1,
460                                         .altse    460                                         .altset_idx = 1,
461                                         .attri    461                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX,
462                                         .endpo    462                                         .endpoint = 0x81,
463                                         .ep_at    463                                         .ep_attr = 0x05,
464                                         .rates    464                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
465                                         .rate_    465                                         .rate_min = 44100,
466                                         .rate_    466                                         .rate_max = 44100,
467                                 }                 467                                 }
468                         },                        468                         },
469                         {                         469                         {
470                                 QUIRK_DATA_MID    470                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
471                                         .out_c    471                                         .out_cables = 0x0007,
472                                         .in_ca    472                                         .in_cables  = 0x0007
473                                 }                 473                                 }
474                         },                        474                         },
475                         QUIRK_COMPOSITE_END       475                         QUIRK_COMPOSITE_END
476                 }                                 476                 }
477         }                                         477         }
478 },                                                478 },
479 {                                                 479 {
480         USB_DEVICE(0x0582, 0x0002),               480         USB_DEVICE(0x0582, 0x0002),
481         QUIRK_DRIVER_INFO {                       481         QUIRK_DRIVER_INFO {
482                 .vendor_name = "EDIROL",          482                 .vendor_name = "EDIROL",
483                 .product_name = "UM-4",           483                 .product_name = "UM-4",
484                 QUIRK_DATA_COMPOSITE {            484                 QUIRK_DATA_COMPOSITE {
485                         { QUIRK_DATA_IGNORE(0)    485                         { QUIRK_DATA_IGNORE(0) },
486                         { QUIRK_DATA_IGNORE(1)    486                         { QUIRK_DATA_IGNORE(1) },
487                         {                         487                         {
488                                 QUIRK_DATA_MID    488                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
489                                         .out_c    489                                         .out_cables = 0x000f,
490                                         .in_ca    490                                         .in_cables  = 0x000f
491                                 }                 491                                 }
492                         },                        492                         },
493                         QUIRK_COMPOSITE_END       493                         QUIRK_COMPOSITE_END
494                 }                                 494                 }
495         }                                         495         }
496 },                                                496 },
497 {                                                 497 {
498         USB_DEVICE(0x0582, 0x0003),               498         USB_DEVICE(0x0582, 0x0003),
499         QUIRK_DRIVER_INFO {                       499         QUIRK_DRIVER_INFO {
500                 .vendor_name = "Roland",          500                 .vendor_name = "Roland",
501                 .product_name = "SC-8850",        501                 .product_name = "SC-8850",
502                 QUIRK_DATA_COMPOSITE {            502                 QUIRK_DATA_COMPOSITE {
503                         { QUIRK_DATA_IGNORE(0)    503                         { QUIRK_DATA_IGNORE(0) },
504                         { QUIRK_DATA_IGNORE(1)    504                         { QUIRK_DATA_IGNORE(1) },
505                         {                         505                         {
506                                 QUIRK_DATA_MID    506                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
507                                         .out_c    507                                         .out_cables = 0x003f,
508                                         .in_ca    508                                         .in_cables  = 0x003f
509                                 }                 509                                 }
510                         },                        510                         },
511                         QUIRK_COMPOSITE_END       511                         QUIRK_COMPOSITE_END
512                 }                                 512                 }
513         }                                         513         }
514 },                                                514 },
515 {                                                 515 {
516         USB_DEVICE(0x0582, 0x0004),               516         USB_DEVICE(0x0582, 0x0004),
517         QUIRK_DRIVER_INFO {                       517         QUIRK_DRIVER_INFO {
518                 .vendor_name = "Roland",          518                 .vendor_name = "Roland",
519                 .product_name = "U-8",            519                 .product_name = "U-8",
520                 QUIRK_DATA_COMPOSITE {            520                 QUIRK_DATA_COMPOSITE {
521                         { QUIRK_DATA_IGNORE(0)    521                         { QUIRK_DATA_IGNORE(0) },
522                         { QUIRK_DATA_IGNORE(1)    522                         { QUIRK_DATA_IGNORE(1) },
523                         {                         523                         {
524                                 QUIRK_DATA_MID    524                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
525                                         .out_c    525                                         .out_cables = 0x0005,
526                                         .in_ca    526                                         .in_cables  = 0x0005
527                                 }                 527                                 }
528                         },                        528                         },
529                         QUIRK_COMPOSITE_END       529                         QUIRK_COMPOSITE_END
530                 }                                 530                 }
531         }                                         531         }
532 },                                                532 },
533 {                                                 533 {
534         /* Has ID 0x0099 when not in "Advanced    534         /* Has ID 0x0099 when not in "Advanced Driver" mode.
535          * The UM-2EX has only one input, but     535          * The UM-2EX has only one input, but we cannot detect this. */
536         USB_DEVICE(0x0582, 0x0005),               536         USB_DEVICE(0x0582, 0x0005),
537         QUIRK_DRIVER_INFO {                       537         QUIRK_DRIVER_INFO {
538                 .vendor_name = "EDIROL",          538                 .vendor_name = "EDIROL",
539                 .product_name = "UM-2",           539                 .product_name = "UM-2",
540                 QUIRK_DATA_COMPOSITE {            540                 QUIRK_DATA_COMPOSITE {
541                         { QUIRK_DATA_IGNORE(0)    541                         { QUIRK_DATA_IGNORE(0) },
542                         { QUIRK_DATA_IGNORE(1)    542                         { QUIRK_DATA_IGNORE(1) },
543                         {                         543                         {
544                                 QUIRK_DATA_MID    544                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
545                                         .out_c    545                                         .out_cables = 0x0003,
546                                         .in_ca    546                                         .in_cables  = 0x0003
547                                 }                 547                                 }
548                         },                        548                         },
549                         QUIRK_COMPOSITE_END       549                         QUIRK_COMPOSITE_END
550                 }                                 550                 }
551         }                                         551         }
552 },                                                552 },
553 {                                                 553 {
554         USB_DEVICE(0x0582, 0x0007),               554         USB_DEVICE(0x0582, 0x0007),
555         QUIRK_DRIVER_INFO {                       555         QUIRK_DRIVER_INFO {
556                 .vendor_name = "Roland",          556                 .vendor_name = "Roland",
557                 .product_name = "SC-8820",        557                 .product_name = "SC-8820",
558                 QUIRK_DATA_COMPOSITE {            558                 QUIRK_DATA_COMPOSITE {
559                         { QUIRK_DATA_IGNORE(0)    559                         { QUIRK_DATA_IGNORE(0) },
560                         { QUIRK_DATA_IGNORE(1)    560                         { QUIRK_DATA_IGNORE(1) },
561                         {                         561                         {
562                                 QUIRK_DATA_MID    562                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
563                                         .out_c    563                                         .out_cables = 0x0013,
564                                         .in_ca    564                                         .in_cables  = 0x0013
565                                 }                 565                                 }
566                         },                        566                         },
567                         QUIRK_COMPOSITE_END       567                         QUIRK_COMPOSITE_END
568                 }                                 568                 }
569         }                                         569         }
570 },                                                570 },
571 {                                                 571 {
572         USB_DEVICE(0x0582, 0x0008),               572         USB_DEVICE(0x0582, 0x0008),
573         QUIRK_DRIVER_INFO {                       573         QUIRK_DRIVER_INFO {
574                 .vendor_name = "Roland",          574                 .vendor_name = "Roland",
575                 .product_name = "PC-300",         575                 .product_name = "PC-300",
576                 QUIRK_DATA_COMPOSITE {            576                 QUIRK_DATA_COMPOSITE {
577                         { QUIRK_DATA_IGNORE(0)    577                         { QUIRK_DATA_IGNORE(0) },
578                         { QUIRK_DATA_IGNORE(1)    578                         { QUIRK_DATA_IGNORE(1) },
579                         {                         579                         {
580                                 QUIRK_DATA_MID    580                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
581                                         .out_c    581                                         .out_cables = 0x0001,
582                                         .in_ca    582                                         .in_cables  = 0x0001
583                                 }                 583                                 }
584                         },                        584                         },
585                         QUIRK_COMPOSITE_END       585                         QUIRK_COMPOSITE_END
586                 }                                 586                 }
587         }                                         587         }
588 },                                                588 },
589 {                                                 589 {
590         /* has ID 0x009d when not in "Advanced    590         /* has ID 0x009d when not in "Advanced Driver" mode */
591         USB_DEVICE(0x0582, 0x0009),               591         USB_DEVICE(0x0582, 0x0009),
592         QUIRK_DRIVER_INFO {                       592         QUIRK_DRIVER_INFO {
593                 .vendor_name = "EDIROL",          593                 .vendor_name = "EDIROL",
594                 .product_name = "UM-1",           594                 .product_name = "UM-1",
595                 QUIRK_DATA_COMPOSITE {            595                 QUIRK_DATA_COMPOSITE {
596                         { QUIRK_DATA_IGNORE(0)    596                         { QUIRK_DATA_IGNORE(0) },
597                         { QUIRK_DATA_IGNORE(1)    597                         { QUIRK_DATA_IGNORE(1) },
598                         {                         598                         {
599                                 QUIRK_DATA_MID    599                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
600                                         .out_c    600                                         .out_cables = 0x0001,
601                                         .in_ca    601                                         .in_cables  = 0x0001
602                                 }                 602                                 }
603                         },                        603                         },
604                         QUIRK_COMPOSITE_END       604                         QUIRK_COMPOSITE_END
605                 }                                 605                 }
606         }                                         606         }
607 },                                                607 },
608 {                                                 608 {
609         USB_DEVICE(0x0582, 0x000b),               609         USB_DEVICE(0x0582, 0x000b),
610         QUIRK_DRIVER_INFO {                       610         QUIRK_DRIVER_INFO {
611                 .vendor_name = "Roland",          611                 .vendor_name = "Roland",
612                 .product_name = "SK-500",         612                 .product_name = "SK-500",
613                 QUIRK_DATA_COMPOSITE {            613                 QUIRK_DATA_COMPOSITE {
614                         { QUIRK_DATA_IGNORE(0)    614                         { QUIRK_DATA_IGNORE(0) },
615                         { QUIRK_DATA_IGNORE(1)    615                         { QUIRK_DATA_IGNORE(1) },
616                         {                         616                         {
617                                 QUIRK_DATA_MID    617                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
618                                         .out_c    618                                         .out_cables = 0x0013,
619                                         .in_ca    619                                         .in_cables  = 0x0013
620                                 }                 620                                 }
621                         },                        621                         },
622                         QUIRK_COMPOSITE_END       622                         QUIRK_COMPOSITE_END
623                 }                                 623                 }
624         }                                         624         }
625 },                                                625 },
626 {                                                 626 {
627         /* thanks to Emiliano Grilli <emillo@l    627         /* thanks to Emiliano Grilli <emillo@libero.it>
628          * for helping researching this data *    628          * for helping researching this data */
629         USB_DEVICE(0x0582, 0x000c),               629         USB_DEVICE(0x0582, 0x000c),
630         QUIRK_DRIVER_INFO {                       630         QUIRK_DRIVER_INFO {
631                 .vendor_name = "Roland",          631                 .vendor_name = "Roland",
632                 .product_name = "SC-D70",         632                 .product_name = "SC-D70",
633                 QUIRK_DATA_COMPOSITE {            633                 QUIRK_DATA_COMPOSITE {
634                         { QUIRK_DATA_STANDARD_    634                         { QUIRK_DATA_STANDARD_AUDIO(0) },
635                         { QUIRK_DATA_STANDARD_    635                         { QUIRK_DATA_STANDARD_AUDIO(1) },
636                         {                         636                         {
637                                 QUIRK_DATA_MID    637                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
638                                         .out_c    638                                         .out_cables = 0x0007,
639                                         .in_ca    639                                         .in_cables  = 0x0007
640                                 }                 640                                 }
641                         },                        641                         },
642                         QUIRK_COMPOSITE_END       642                         QUIRK_COMPOSITE_END
643                 }                                 643                 }
644         }                                         644         }
645 },                                                645 },
646 {       /*                                        646 {       /*
647          * This quirk is for the "Advanced Dri    647          * This quirk is for the "Advanced Driver" mode of the Edirol UA-5.
648          * If the advanced mode switch at the     648          * If the advanced mode switch at the back of the unit is off, the
649          * UA-5 has ID 0x0582/0x0011 and is st    649          * UA-5 has ID 0x0582/0x0011 and is standard compliant (no quirks),
650          * but offers only 16-bit PCM.            650          * but offers only 16-bit PCM.
651          * In advanced mode, the UA-5 will out    651          * In advanced mode, the UA-5 will output S24_3LE samples (two
652          * channels) at the rate indicated on     652          * channels) at the rate indicated on the front switch, including
653          * the 96kHz sample rate.                 653          * the 96kHz sample rate.
654          */                                       654          */
655         USB_DEVICE(0x0582, 0x0010),               655         USB_DEVICE(0x0582, 0x0010),
656         QUIRK_DRIVER_INFO {                       656         QUIRK_DRIVER_INFO {
657                 .vendor_name = "EDIROL",          657                 .vendor_name = "EDIROL",
658                 .product_name = "UA-5",           658                 .product_name = "UA-5",
659                 QUIRK_DATA_COMPOSITE {            659                 QUIRK_DATA_COMPOSITE {
660                         { QUIRK_DATA_STANDARD_    660                         { QUIRK_DATA_STANDARD_AUDIO(1) },
661                         { QUIRK_DATA_STANDARD_    661                         { QUIRK_DATA_STANDARD_AUDIO(2) },
662                         QUIRK_COMPOSITE_END       662                         QUIRK_COMPOSITE_END
663                 }                                 663                 }
664         }                                         664         }
665 },                                                665 },
666 {                                                 666 {
667         /* has ID 0x0013 when not in "Advanced    667         /* has ID 0x0013 when not in "Advanced Driver" mode */
668         USB_DEVICE(0x0582, 0x0012),               668         USB_DEVICE(0x0582, 0x0012),
669         QUIRK_DRIVER_INFO {                       669         QUIRK_DRIVER_INFO {
670                 .vendor_name = "Roland",          670                 .vendor_name = "Roland",
671                 .product_name = "XV-5050",        671                 .product_name = "XV-5050",
672                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    672                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
673                         .out_cables = 0x0001,     673                         .out_cables = 0x0001,
674                         .in_cables  = 0x0001      674                         .in_cables  = 0x0001
675                 }                                 675                 }
676         }                                         676         }
677 },                                                677 },
678 {                                                 678 {
679         /* has ID 0x0015 when not in "Advanced    679         /* has ID 0x0015 when not in "Advanced Driver" mode */
680         USB_DEVICE(0x0582, 0x0014),               680         USB_DEVICE(0x0582, 0x0014),
681         QUIRK_DRIVER_INFO {                       681         QUIRK_DRIVER_INFO {
682                 .vendor_name = "EDIROL",          682                 .vendor_name = "EDIROL",
683                 .product_name = "UM-880",         683                 .product_name = "UM-880",
684                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    684                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
685                         .out_cables = 0x01ff,     685                         .out_cables = 0x01ff,
686                         .in_cables  = 0x01ff      686                         .in_cables  = 0x01ff
687                 }                                 687                 }
688         }                                         688         }
689 },                                                689 },
690 {                                                 690 {
691         /* has ID 0x0017 when not in "Advanced    691         /* has ID 0x0017 when not in "Advanced Driver" mode */
692         USB_DEVICE(0x0582, 0x0016),               692         USB_DEVICE(0x0582, 0x0016),
693         QUIRK_DRIVER_INFO {                       693         QUIRK_DRIVER_INFO {
694                 .vendor_name = "EDIROL",          694                 .vendor_name = "EDIROL",
695                 .product_name = "SD-90",          695                 .product_name = "SD-90",
696                 QUIRK_DATA_COMPOSITE {            696                 QUIRK_DATA_COMPOSITE {
697                         { QUIRK_DATA_STANDARD_    697                         { QUIRK_DATA_STANDARD_AUDIO(0) },
698                         { QUIRK_DATA_STANDARD_    698                         { QUIRK_DATA_STANDARD_AUDIO(1) },
699                         {                         699                         {
700                                 QUIRK_DATA_MID    700                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
701                                         .out_c    701                                         .out_cables = 0x000f,
702                                         .in_ca    702                                         .in_cables  = 0x000f
703                                 }                 703                                 }
704                         },                        704                         },
705                         QUIRK_COMPOSITE_END       705                         QUIRK_COMPOSITE_END
706                 }                                 706                 }
707         }                                         707         }
708 },                                                708 },
709 {                                                 709 {
710         /* has ID 0x001c when not in "Advanced    710         /* has ID 0x001c when not in "Advanced Driver" mode */
711         USB_DEVICE(0x0582, 0x001b),               711         USB_DEVICE(0x0582, 0x001b),
712         QUIRK_DRIVER_INFO {                       712         QUIRK_DRIVER_INFO {
713                 .vendor_name = "Roland",          713                 .vendor_name = "Roland",
714                 .product_name = "MMP-2",          714                 .product_name = "MMP-2",
715                 QUIRK_DATA_COMPOSITE {            715                 QUIRK_DATA_COMPOSITE {
716                         { QUIRK_DATA_IGNORE(0)    716                         { QUIRK_DATA_IGNORE(0) },
717                         { QUIRK_DATA_IGNORE(1)    717                         { QUIRK_DATA_IGNORE(1) },
718                         {                         718                         {
719                                 QUIRK_DATA_MID    719                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
720                                         .out_c    720                                         .out_cables = 0x0001,
721                                         .in_ca    721                                         .in_cables  = 0x0001
722                                 }                 722                                 }
723                         },                        723                         },
724                         QUIRK_COMPOSITE_END       724                         QUIRK_COMPOSITE_END
725                 }                                 725                 }
726         }                                         726         }
727 },                                                727 },
728 {                                                 728 {
729         /* has ID 0x001e when not in "Advanced    729         /* has ID 0x001e when not in "Advanced Driver" mode */
730         USB_DEVICE(0x0582, 0x001d),               730         USB_DEVICE(0x0582, 0x001d),
731         QUIRK_DRIVER_INFO {                       731         QUIRK_DRIVER_INFO {
732                 .vendor_name = "Roland",          732                 .vendor_name = "Roland",
733                 .product_name = "V-SYNTH",        733                 .product_name = "V-SYNTH",
734                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    734                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
735                         .out_cables = 0x0001,     735                         .out_cables = 0x0001,
736                         .in_cables  = 0x0001      736                         .in_cables  = 0x0001
737                 }                                 737                 }
738         }                                         738         }
739 },                                                739 },
740 {                                                 740 {
741         /* has ID 0x0024 when not in "Advanced    741         /* has ID 0x0024 when not in "Advanced Driver" mode */
742         USB_DEVICE(0x0582, 0x0023),               742         USB_DEVICE(0x0582, 0x0023),
743         QUIRK_DRIVER_INFO {                       743         QUIRK_DRIVER_INFO {
744                 .vendor_name = "EDIROL",          744                 .vendor_name = "EDIROL",
745                 .product_name = "UM-550",         745                 .product_name = "UM-550",
746                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    746                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
747                         .out_cables = 0x003f,     747                         .out_cables = 0x003f,
748                         .in_cables  = 0x003f      748                         .in_cables  = 0x003f
749                 }                                 749                 }
750         }                                         750         }
751 },                                                751 },
752 {                                                 752 {
753         /*                                        753         /*
754          * This quirk is for the "Advanced Dri    754          * This quirk is for the "Advanced Driver" mode. If off, the UA-20
755          * has ID 0x0026 and is standard compl    755          * has ID 0x0026 and is standard compliant, but has only 16-bit PCM
756          * and no MIDI.                           756          * and no MIDI.
757          */                                       757          */
758         USB_DEVICE(0x0582, 0x0025),               758         USB_DEVICE(0x0582, 0x0025),
759         QUIRK_DRIVER_INFO {                       759         QUIRK_DRIVER_INFO {
760                 .vendor_name = "EDIROL",          760                 .vendor_name = "EDIROL",
761                 .product_name = "UA-20",          761                 .product_name = "UA-20",
762                 QUIRK_DATA_COMPOSITE {            762                 QUIRK_DATA_COMPOSITE {
763                         { QUIRK_DATA_IGNORE(0)    763                         { QUIRK_DATA_IGNORE(0) },
764                         {                         764                         {
765                                 QUIRK_DATA_AUD    765                                 QUIRK_DATA_AUDIOFORMAT(1) {
766                                         .forma    766                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
767                                         .chann    767                                         .channels = 2,
768                                         .iface    768                                         .iface = 1,
769                                         .altse    769                                         .altsetting = 1,
770                                         .altse    770                                         .altset_idx = 1,
771                                         .attri    771                                         .attributes = 0,
772                                         .endpo    772                                         .endpoint = 0x01,
773                                         .ep_at    773                                         .ep_attr = 0x01,
774                                         .rates    774                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
775                                         .rate_    775                                         .rate_min = 44100,
776                                         .rate_    776                                         .rate_max = 44100,
777                                 }                 777                                 }
778                         },                        778                         },
779                         {                         779                         {
780                                 QUIRK_DATA_AUD    780                                 QUIRK_DATA_AUDIOFORMAT(2) {
781                                         .forma    781                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
782                                         .chann    782                                         .channels = 2,
783                                         .iface    783                                         .iface = 2,
784                                         .altse    784                                         .altsetting = 1,
785                                         .altse    785                                         .altset_idx = 1,
786                                         .attri    786                                         .attributes = 0,
787                                         .endpo    787                                         .endpoint = 0x82,
788                                         .ep_at    788                                         .ep_attr = 0x01,
789                                         .rates    789                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
790                                         .rate_    790                                         .rate_min = 44100,
791                                         .rate_    791                                         .rate_max = 44100,
792                                 }                 792                                 }
793                         },                        793                         },
794                         {                         794                         {
795                                 QUIRK_DATA_MID    795                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {
796                                         .out_c    796                                         .out_cables = 0x0001,
797                                         .in_ca    797                                         .in_cables  = 0x0001
798                                 }                 798                                 }
799                         },                        799                         },
800                         QUIRK_COMPOSITE_END       800                         QUIRK_COMPOSITE_END
801                 }                                 801                 }
802         }                                         802         }
803 },                                                803 },
804 {                                                 804 {
805         /* has ID 0x0028 when not in "Advanced    805         /* has ID 0x0028 when not in "Advanced Driver" mode */
806         USB_DEVICE(0x0582, 0x0027),               806         USB_DEVICE(0x0582, 0x0027),
807         QUIRK_DRIVER_INFO {                       807         QUIRK_DRIVER_INFO {
808                 .vendor_name = "EDIROL",          808                 .vendor_name = "EDIROL",
809                 .product_name = "SD-20",          809                 .product_name = "SD-20",
810                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    810                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
811                         .out_cables = 0x0003,     811                         .out_cables = 0x0003,
812                         .in_cables  = 0x0007      812                         .in_cables  = 0x0007
813                 }                                 813                 }
814         }                                         814         }
815 },                                                815 },
816 {                                                 816 {
817         /* has ID 0x002a when not in "Advanced    817         /* has ID 0x002a when not in "Advanced Driver" mode */
818         USB_DEVICE(0x0582, 0x0029),               818         USB_DEVICE(0x0582, 0x0029),
819         QUIRK_DRIVER_INFO {                       819         QUIRK_DRIVER_INFO {
820                 .vendor_name = "EDIROL",          820                 .vendor_name = "EDIROL",
821                 .product_name = "SD-80",          821                 .product_name = "SD-80",
822                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    822                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
823                         .out_cables = 0x000f,     823                         .out_cables = 0x000f,
824                         .in_cables  = 0x000f      824                         .in_cables  = 0x000f
825                 }                                 825                 }
826         }                                         826         }
827 },                                                827 },
828 {       /*                                        828 {       /*
829          * This quirk is for the "Advanced" mo    829          * This quirk is for the "Advanced" modes of the Edirol UA-700.
830          * If the sample format switch is not     830          * If the sample format switch is not in an advanced setting, the
831          * UA-700 has ID 0x0582/0x002c and is     831          * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks),
832          * but offers only 16-bit PCM and no M    832          * but offers only 16-bit PCM and no MIDI.
833          */                                       833          */
834         USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b)    834         USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b),
835         QUIRK_DRIVER_INFO {                       835         QUIRK_DRIVER_INFO {
836                 .vendor_name = "EDIROL",          836                 .vendor_name = "EDIROL",
837                 .product_name = "UA-700",         837                 .product_name = "UA-700",
838                 QUIRK_DATA_COMPOSITE {            838                 QUIRK_DATA_COMPOSITE {
839                         { QUIRK_DATA_EDIROL_UA    839                         { QUIRK_DATA_EDIROL_UAXX(1) },
840                         { QUIRK_DATA_EDIROL_UA    840                         { QUIRK_DATA_EDIROL_UAXX(2) },
841                         { QUIRK_DATA_EDIROL_UA    841                         { QUIRK_DATA_EDIROL_UAXX(3) },
842                         QUIRK_COMPOSITE_END       842                         QUIRK_COMPOSITE_END
843                 }                                 843                 }
844         }                                         844         }
845 },                                                845 },
846 {                                                 846 {
847         /* has ID 0x002e when not in "Advanced    847         /* has ID 0x002e when not in "Advanced Driver" mode */
848         USB_DEVICE(0x0582, 0x002d),               848         USB_DEVICE(0x0582, 0x002d),
849         QUIRK_DRIVER_INFO {                       849         QUIRK_DRIVER_INFO {
850                 .vendor_name = "Roland",          850                 .vendor_name = "Roland",
851                 .product_name = "XV-2020",        851                 .product_name = "XV-2020",
852                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    852                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
853                         .out_cables = 0x0001,     853                         .out_cables = 0x0001,
854                         .in_cables  = 0x0001      854                         .in_cables  = 0x0001
855                 }                                 855                 }
856         }                                         856         }
857 },                                                857 },
858 {                                                 858 {
859         /* has ID 0x0030 when not in "Advanced    859         /* has ID 0x0030 when not in "Advanced Driver" mode */
860         USB_DEVICE(0x0582, 0x002f),               860         USB_DEVICE(0x0582, 0x002f),
861         QUIRK_DRIVER_INFO {                       861         QUIRK_DRIVER_INFO {
862                 .vendor_name = "Roland",          862                 .vendor_name = "Roland",
863                 .product_name = "VariOS",         863                 .product_name = "VariOS",
864                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    864                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
865                         .out_cables = 0x0007,     865                         .out_cables = 0x0007,
866                         .in_cables  = 0x0007      866                         .in_cables  = 0x0007
867                 }                                 867                 }
868         }                                         868         }
869 },                                                869 },
870 {                                                 870 {
871         /* has ID 0x0034 when not in "Advanced    871         /* has ID 0x0034 when not in "Advanced Driver" mode */
872         USB_DEVICE(0x0582, 0x0033),               872         USB_DEVICE(0x0582, 0x0033),
873         QUIRK_DRIVER_INFO {                       873         QUIRK_DRIVER_INFO {
874                 .vendor_name = "EDIROL",          874                 .vendor_name = "EDIROL",
875                 .product_name = "PCR",            875                 .product_name = "PCR",
876                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    876                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
877                         .out_cables = 0x0003,     877                         .out_cables = 0x0003,
878                         .in_cables  = 0x0007      878                         .in_cables  = 0x0007
879                 }                                 879                 }
880         }                                         880         }
881 },                                                881 },
882 {                                                 882 {
883         /*                                        883         /*
884          * Has ID 0x0038 when not in "Advanced    884          * Has ID 0x0038 when not in "Advanced Driver" mode;
885          * later revisions use IDs 0x0054 and     885          * later revisions use IDs 0x0054 and 0x00a2.
886          */                                       886          */
887         USB_DEVICE(0x0582, 0x0037),               887         USB_DEVICE(0x0582, 0x0037),
888         QUIRK_DRIVER_INFO {                       888         QUIRK_DRIVER_INFO {
889                 .vendor_name = "Roland",          889                 .vendor_name = "Roland",
890                 .product_name = "Digital Piano    890                 .product_name = "Digital Piano",
891                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    891                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
892                         .out_cables = 0x0001,     892                         .out_cables = 0x0001,
893                         .in_cables  = 0x0001      893                         .in_cables  = 0x0001
894                 }                                 894                 }
895         }                                         895         }
896 },                                                896 },
897 {                                                 897 {
898         /*                                        898         /*
899          * This quirk is for the "Advanced Dri    899          * This quirk is for the "Advanced Driver" mode.  If off, the GS-10
900          * has ID 0x003c and is standard compl    900          * has ID 0x003c and is standard compliant, but has only 16-bit PCM
901          * and no MIDI.                           901          * and no MIDI.
902          */                                       902          */
903         USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b)    903         USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b),
904         QUIRK_DRIVER_INFO {                       904         QUIRK_DRIVER_INFO {
905                 .vendor_name = "BOSS",            905                 .vendor_name = "BOSS",
906                 .product_name = "GS-10",          906                 .product_name = "GS-10",
907                 QUIRK_DATA_COMPOSITE {            907                 QUIRK_DATA_COMPOSITE {
908                         { QUIRK_DATA_STANDARD_    908                         { QUIRK_DATA_STANDARD_AUDIO(1) },
909                         { QUIRK_DATA_STANDARD_    909                         { QUIRK_DATA_STANDARD_AUDIO(2) },
910                         { QUIRK_DATA_STANDARD_    910                         { QUIRK_DATA_STANDARD_MIDI(3) },
911                         QUIRK_COMPOSITE_END       911                         QUIRK_COMPOSITE_END
912                 }                                 912                 }
913         }                                         913         }
914 },                                                914 },
915 {                                                 915 {
916         /* has ID 0x0041 when not in "Advanced    916         /* has ID 0x0041 when not in "Advanced Driver" mode */
917         USB_DEVICE(0x0582, 0x0040),               917         USB_DEVICE(0x0582, 0x0040),
918         QUIRK_DRIVER_INFO {                       918         QUIRK_DRIVER_INFO {
919                 .vendor_name = "Roland",          919                 .vendor_name = "Roland",
920                 .product_name = "GI-20",          920                 .product_name = "GI-20",
921                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    921                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
922                         .out_cables = 0x0001,     922                         .out_cables = 0x0001,
923                         .in_cables  = 0x0001      923                         .in_cables  = 0x0001
924                 }                                 924                 }
925         }                                         925         }
926 },                                                926 },
927 {                                                 927 {
928         /* has ID 0x0043 when not in "Advanced    928         /* has ID 0x0043 when not in "Advanced Driver" mode */
929         USB_DEVICE(0x0582, 0x0042),               929         USB_DEVICE(0x0582, 0x0042),
930         QUIRK_DRIVER_INFO {                       930         QUIRK_DRIVER_INFO {
931                 .vendor_name = "Roland",          931                 .vendor_name = "Roland",
932                 .product_name = "RS-70",          932                 .product_name = "RS-70",
933                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    933                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
934                         .out_cables = 0x0001,     934                         .out_cables = 0x0001,
935                         .in_cables  = 0x0001      935                         .in_cables  = 0x0001
936                 }                                 936                 }
937         }                                         937         }
938 },                                                938 },
939 {                                                 939 {
940         /* has ID 0x0049 when not in "Advanced    940         /* has ID 0x0049 when not in "Advanced Driver" mode */
941         USB_DEVICE(0x0582, 0x0047),               941         USB_DEVICE(0x0582, 0x0047),
942         QUIRK_DRIVER_INFO {                       942         QUIRK_DRIVER_INFO {
943                 /* .vendor_name = "EDIROL", */    943                 /* .vendor_name = "EDIROL", */
944                 /* .product_name = "UR-80", */    944                 /* .product_name = "UR-80", */
945                 QUIRK_DATA_COMPOSITE {            945                 QUIRK_DATA_COMPOSITE {
946                         /* in the 96 kHz modes    946                         /* in the 96 kHz modes, only interface 1 is there */
947                         { QUIRK_DATA_STANDARD_    947                         { QUIRK_DATA_STANDARD_AUDIO(1) },
948                         { QUIRK_DATA_STANDARD_    948                         { QUIRK_DATA_STANDARD_AUDIO(2) },
949                         QUIRK_COMPOSITE_END       949                         QUIRK_COMPOSITE_END
950                 }                                 950                 }
951         }                                         951         }
952 },                                                952 },
953 {                                                 953 {
954         /* has ID 0x004a when not in "Advanced    954         /* has ID 0x004a when not in "Advanced Driver" mode */
955         USB_DEVICE(0x0582, 0x0048),               955         USB_DEVICE(0x0582, 0x0048),
956         QUIRK_DRIVER_INFO {                       956         QUIRK_DRIVER_INFO {
957                 /* .vendor_name = "EDIROL", */    957                 /* .vendor_name = "EDIROL", */
958                 /* .product_name = "UR-80", */    958                 /* .product_name = "UR-80", */
959                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    959                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
960                         .out_cables = 0x0003,     960                         .out_cables = 0x0003,
961                         .in_cables  = 0x0007      961                         .in_cables  = 0x0007
962                 }                                 962                 }
963         }                                         963         }
964 },                                                964 },
965 {                                                 965 {
966         /* has ID 0x004e when not in "Advanced    966         /* has ID 0x004e when not in "Advanced Driver" mode */
967         USB_DEVICE(0x0582, 0x004c),               967         USB_DEVICE(0x0582, 0x004c),
968         QUIRK_DRIVER_INFO {                       968         QUIRK_DRIVER_INFO {
969                 .vendor_name = "EDIROL",          969                 .vendor_name = "EDIROL",
970                 .product_name = "PCR-A",          970                 .product_name = "PCR-A",
971                 QUIRK_DATA_COMPOSITE {            971                 QUIRK_DATA_COMPOSITE {
972                         { QUIRK_DATA_STANDARD_    972                         { QUIRK_DATA_STANDARD_AUDIO(1) },
973                         { QUIRK_DATA_STANDARD_    973                         { QUIRK_DATA_STANDARD_AUDIO(2) },
974                         QUIRK_COMPOSITE_END       974                         QUIRK_COMPOSITE_END
975                 }                                 975                 }
976         }                                         976         }
977 },                                                977 },
978 {                                                 978 {
979         /* has ID 0x004f when not in "Advanced    979         /* has ID 0x004f when not in "Advanced Driver" mode */
980         USB_DEVICE(0x0582, 0x004d),               980         USB_DEVICE(0x0582, 0x004d),
981         QUIRK_DRIVER_INFO {                       981         QUIRK_DRIVER_INFO {
982                 .vendor_name = "EDIROL",          982                 .vendor_name = "EDIROL",
983                 .product_name = "PCR-A",          983                 .product_name = "PCR-A",
984                 QUIRK_DATA_MIDI_FIXED_ENDPOINT    984                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
985                         .out_cables = 0x0003,     985                         .out_cables = 0x0003,
986                         .in_cables  = 0x0007      986                         .in_cables  = 0x0007
987                 }                                 987                 }
988         }                                         988         }
989 },                                                989 },
990 {                                                 990 {
991         /*                                        991         /*
992          * This quirk is for the "Advanced Dri    992          * This quirk is for the "Advanced Driver" mode. If off, the UA-3FX
993          * is standard compliant, but has only    993          * is standard compliant, but has only 16-bit PCM.
994          */                                       994          */
995         USB_DEVICE(0x0582, 0x0050),               995         USB_DEVICE(0x0582, 0x0050),
996         QUIRK_DRIVER_INFO {                       996         QUIRK_DRIVER_INFO {
997                 .vendor_name = "EDIROL",          997                 .vendor_name = "EDIROL",
998                 .product_name = "UA-3FX",         998                 .product_name = "UA-3FX",
999                 QUIRK_DATA_COMPOSITE {            999                 QUIRK_DATA_COMPOSITE {
1000                         { QUIRK_DATA_STANDARD    1000                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1001                         { QUIRK_DATA_STANDARD    1001                         { QUIRK_DATA_STANDARD_AUDIO(2) },
1002                         QUIRK_COMPOSITE_END      1002                         QUIRK_COMPOSITE_END
1003                 }                                1003                 }
1004         }                                        1004         }
1005 },                                               1005 },
1006 {                                                1006 {
1007         USB_DEVICE(0x0582, 0x0052),              1007         USB_DEVICE(0x0582, 0x0052),
1008         QUIRK_DRIVER_INFO {                      1008         QUIRK_DRIVER_INFO {
1009                 .vendor_name = "EDIROL",         1009                 .vendor_name = "EDIROL",
1010                 .product_name = "UM-1SX",        1010                 .product_name = "UM-1SX",
1011                 QUIRK_DATA_STANDARD_MIDI(0)      1011                 QUIRK_DATA_STANDARD_MIDI(0)
1012         }                                        1012         }
1013 },                                               1013 },
1014 {                                                1014 {
1015         USB_DEVICE(0x0582, 0x0060),              1015         USB_DEVICE(0x0582, 0x0060),
1016         QUIRK_DRIVER_INFO {                      1016         QUIRK_DRIVER_INFO {
1017                 .vendor_name = "Roland",         1017                 .vendor_name = "Roland",
1018                 .product_name = "EXR Series",    1018                 .product_name = "EXR Series",
1019                 QUIRK_DATA_STANDARD_MIDI(0)      1019                 QUIRK_DATA_STANDARD_MIDI(0)
1020         }                                        1020         }
1021 },                                               1021 },
1022 {                                                1022 {
1023         /* has ID 0x0066 when not in "Advance    1023         /* has ID 0x0066 when not in "Advanced Driver" mode */
1024         USB_DEVICE(0x0582, 0x0064),              1024         USB_DEVICE(0x0582, 0x0064),
1025         QUIRK_DRIVER_INFO {                      1025         QUIRK_DRIVER_INFO {
1026                 /* .vendor_name = "EDIROL", *    1026                 /* .vendor_name = "EDIROL", */
1027                 /* .product_name = "PCR-1", *    1027                 /* .product_name = "PCR-1", */
1028                 QUIRK_DATA_COMPOSITE {           1028                 QUIRK_DATA_COMPOSITE {
1029                         { QUIRK_DATA_STANDARD    1029                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1030                         { QUIRK_DATA_STANDARD    1030                         { QUIRK_DATA_STANDARD_AUDIO(2) },
1031                         QUIRK_COMPOSITE_END      1031                         QUIRK_COMPOSITE_END
1032                 }                                1032                 }
1033         }                                        1033         }
1034 },                                               1034 },
1035 {                                                1035 {
1036         /* has ID 0x0067 when not in "Advance    1036         /* has ID 0x0067 when not in "Advanced Driver" mode */
1037         USB_DEVICE(0x0582, 0x0065),              1037         USB_DEVICE(0x0582, 0x0065),
1038         QUIRK_DRIVER_INFO {                      1038         QUIRK_DRIVER_INFO {
1039                 /* .vendor_name = "EDIROL", *    1039                 /* .vendor_name = "EDIROL", */
1040                 /* .product_name = "PCR-1", *    1040                 /* .product_name = "PCR-1", */
1041                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1041                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1042                         .out_cables = 0x0001,    1042                         .out_cables = 0x0001,
1043                         .in_cables  = 0x0003     1043                         .in_cables  = 0x0003
1044                 }                                1044                 }
1045         }                                        1045         }
1046 },                                               1046 },
1047 {                                                1047 {
1048         /* has ID 0x006e when not in "Advance    1048         /* has ID 0x006e when not in "Advanced Driver" mode */
1049         USB_DEVICE(0x0582, 0x006d),              1049         USB_DEVICE(0x0582, 0x006d),
1050         QUIRK_DRIVER_INFO {                      1050         QUIRK_DRIVER_INFO {
1051                 .vendor_name = "Roland",         1051                 .vendor_name = "Roland",
1052                 .product_name = "FANTOM-X",      1052                 .product_name = "FANTOM-X",
1053                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1053                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1054                         .out_cables = 0x0001,    1054                         .out_cables = 0x0001,
1055                         .in_cables  = 0x0001     1055                         .in_cables  = 0x0001
1056                 }                                1056                 }
1057         }                                        1057         }
1058 },                                               1058 },
1059 {       /*                                       1059 {       /*
1060          * This quirk is for the "Advanced" m    1060          * This quirk is for the "Advanced" modes of the Edirol UA-25.
1061          * If the switch is not in an advance    1061          * If the switch is not in an advanced setting, the UA-25 has
1062          * ID 0x0582/0x0073 and is standard c    1062          * ID 0x0582/0x0073 and is standard compliant (no quirks), but
1063          * offers only 16-bit PCM at 44.1 kHz    1063          * offers only 16-bit PCM at 44.1 kHz and no MIDI.
1064          */                                      1064          */
1065         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074    1065         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074),
1066         QUIRK_DRIVER_INFO {                      1066         QUIRK_DRIVER_INFO {
1067                 .vendor_name = "EDIROL",         1067                 .vendor_name = "EDIROL",
1068                 .product_name = "UA-25",         1068                 .product_name = "UA-25",
1069                 QUIRK_DATA_COMPOSITE {           1069                 QUIRK_DATA_COMPOSITE {
1070                         { QUIRK_DATA_EDIROL_U    1070                         { QUIRK_DATA_EDIROL_UAXX(0) },
1071                         { QUIRK_DATA_EDIROL_U    1071                         { QUIRK_DATA_EDIROL_UAXX(1) },
1072                         { QUIRK_DATA_EDIROL_U    1072                         { QUIRK_DATA_EDIROL_UAXX(2) },
1073                         QUIRK_COMPOSITE_END      1073                         QUIRK_COMPOSITE_END
1074                 }                                1074                 }
1075         }                                        1075         }
1076 },                                               1076 },
1077 {                                                1077 {
1078         /* has ID 0x0076 when not in "Advance    1078         /* has ID 0x0076 when not in "Advanced Driver" mode */
1079         USB_DEVICE(0x0582, 0x0075),              1079         USB_DEVICE(0x0582, 0x0075),
1080         QUIRK_DRIVER_INFO {                      1080         QUIRK_DRIVER_INFO {
1081                 .vendor_name = "BOSS",           1081                 .vendor_name = "BOSS",
1082                 .product_name = "DR-880",        1082                 .product_name = "DR-880",
1083                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1083                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1084                         .out_cables = 0x0001,    1084                         .out_cables = 0x0001,
1085                         .in_cables  = 0x0001     1085                         .in_cables  = 0x0001
1086                 }                                1086                 }
1087         }                                        1087         }
1088 },                                               1088 },
1089 {                                                1089 {
1090         /* has ID 0x007b when not in "Advance    1090         /* has ID 0x007b when not in "Advanced Driver" mode */
1091         USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a    1091         USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a),
1092         QUIRK_DRIVER_INFO {                      1092         QUIRK_DRIVER_INFO {
1093                 .vendor_name = "Roland",         1093                 .vendor_name = "Roland",
1094                 /* "RD" or "RD-700SX"? */        1094                 /* "RD" or "RD-700SX"? */
1095                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1095                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1096                         .out_cables = 0x0003,    1096                         .out_cables = 0x0003,
1097                         .in_cables  = 0x0003     1097                         .in_cables  = 0x0003
1098                 }                                1098                 }
1099         }                                        1099         }
1100 },                                               1100 },
1101 {                                                1101 {
1102         /* has ID 0x0081 when not in "Advance    1102         /* has ID 0x0081 when not in "Advanced Driver" mode */
1103         USB_DEVICE(0x0582, 0x0080),              1103         USB_DEVICE(0x0582, 0x0080),
1104         QUIRK_DRIVER_INFO {                      1104         QUIRK_DRIVER_INFO {
1105                 .vendor_name = "Roland",         1105                 .vendor_name = "Roland",
1106                 .product_name = "G-70",          1106                 .product_name = "G-70",
1107                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1107                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1108                         .out_cables = 0x0001,    1108                         .out_cables = 0x0001,
1109                         .in_cables  = 0x0001     1109                         .in_cables  = 0x0001
1110                 }                                1110                 }
1111         }                                        1111         }
1112 },                                               1112 },
1113 {                                                1113 {
1114         /* has ID 0x008c when not in "Advance    1114         /* has ID 0x008c when not in "Advanced Driver" mode */
1115         USB_DEVICE(0x0582, 0x008b),              1115         USB_DEVICE(0x0582, 0x008b),
1116         QUIRK_DRIVER_INFO {                      1116         QUIRK_DRIVER_INFO {
1117                 .vendor_name = "EDIROL",         1117                 .vendor_name = "EDIROL",
1118                 .product_name = "PC-50",         1118                 .product_name = "PC-50",
1119                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1119                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1120                         .out_cables = 0x0001,    1120                         .out_cables = 0x0001,
1121                         .in_cables  = 0x0001     1121                         .in_cables  = 0x0001
1122                 }                                1122                 }
1123         }                                        1123         }
1124 },                                               1124 },
1125 {                                                1125 {
1126         /*                                       1126         /*
1127          * This quirk is for the "Advanced Dr    1127          * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX
1128          * is standard compliant, but has onl    1128          * is standard compliant, but has only 16-bit PCM and no MIDI.
1129          */                                      1129          */
1130         USB_DEVICE(0x0582, 0x00a3),              1130         USB_DEVICE(0x0582, 0x00a3),
1131         QUIRK_DRIVER_INFO {                      1131         QUIRK_DRIVER_INFO {
1132                 .vendor_name = "EDIROL",         1132                 .vendor_name = "EDIROL",
1133                 .product_name = "UA-4FX",        1133                 .product_name = "UA-4FX",
1134                 QUIRK_DATA_COMPOSITE {           1134                 QUIRK_DATA_COMPOSITE {
1135                         { QUIRK_DATA_EDIROL_U    1135                         { QUIRK_DATA_EDIROL_UAXX(0) },
1136                         { QUIRK_DATA_EDIROL_U    1136                         { QUIRK_DATA_EDIROL_UAXX(1) },
1137                         { QUIRK_DATA_EDIROL_U    1137                         { QUIRK_DATA_EDIROL_UAXX(2) },
1138                         QUIRK_COMPOSITE_END      1138                         QUIRK_COMPOSITE_END
1139                 }                                1139                 }
1140         }                                        1140         }
1141 },                                               1141 },
1142 {                                                1142 {
1143         /* Edirol M-16DX */                      1143         /* Edirol M-16DX */
1144         USB_DEVICE(0x0582, 0x00c4),              1144         USB_DEVICE(0x0582, 0x00c4),
1145         QUIRK_DRIVER_INFO {                      1145         QUIRK_DRIVER_INFO {
1146                 QUIRK_DATA_COMPOSITE {           1146                 QUIRK_DATA_COMPOSITE {
1147                         { QUIRK_DATA_STANDARD    1147                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1148                         { QUIRK_DATA_STANDARD    1148                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1149                         {                        1149                         {
1150                                 QUIRK_DATA_MI    1150                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
1151                                         .out_    1151                                         .out_cables = 0x0001,
1152                                         .in_c    1152                                         .in_cables  = 0x0001
1153                                 }                1153                                 }
1154                         },                       1154                         },
1155                         QUIRK_COMPOSITE_END      1155                         QUIRK_COMPOSITE_END
1156                 }                                1156                 }
1157         }                                        1157         }
1158 },                                               1158 },
1159 {                                                1159 {
1160         /* Advanced modes of the Edirol UA-25    1160         /* Advanced modes of the Edirol UA-25EX.
1161          * For the standard mode, UA-25EX has    1161          * For the standard mode, UA-25EX has ID 0582:00e7, which
1162          * offers only 16-bit PCM at 44.1 kHz    1162          * offers only 16-bit PCM at 44.1 kHz and no MIDI.
1163          */                                      1163          */
1164         USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6    1164         USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6),
1165         QUIRK_DRIVER_INFO {                      1165         QUIRK_DRIVER_INFO {
1166                 .vendor_name = "EDIROL",         1166                 .vendor_name = "EDIROL",
1167                 .product_name = "UA-25EX",       1167                 .product_name = "UA-25EX",
1168                 QUIRK_DATA_COMPOSITE {           1168                 QUIRK_DATA_COMPOSITE {
1169                         { QUIRK_DATA_EDIROL_U    1169                         { QUIRK_DATA_EDIROL_UAXX(0) },
1170                         { QUIRK_DATA_EDIROL_U    1170                         { QUIRK_DATA_EDIROL_UAXX(1) },
1171                         { QUIRK_DATA_EDIROL_U    1171                         { QUIRK_DATA_EDIROL_UAXX(2) },
1172                         QUIRK_COMPOSITE_END      1172                         QUIRK_COMPOSITE_END
1173                 }                                1173                 }
1174         }                                        1174         }
1175 },                                               1175 },
1176 {                                                1176 {
1177         /* Edirol UM-3G */                       1177         /* Edirol UM-3G */
1178         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108    1178         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),
1179         QUIRK_DRIVER_INFO {                      1179         QUIRK_DRIVER_INFO {
1180                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1180                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {
1181                         .out_cables = 0x0007,    1181                         .out_cables = 0x0007,
1182                         .in_cables  = 0x0007     1182                         .in_cables  = 0x0007
1183                 }                                1183                 }
1184         }                                        1184         }
1185 },                                               1185 },
1186 {                                                1186 {
1187         /* BOSS ME-25 */                         1187         /* BOSS ME-25 */
1188         USB_DEVICE(0x0582, 0x0113),              1188         USB_DEVICE(0x0582, 0x0113),
1189         QUIRK_DRIVER_INFO {                      1189         QUIRK_DRIVER_INFO {
1190                 QUIRK_DATA_COMPOSITE {           1190                 QUIRK_DATA_COMPOSITE {
1191                         { QUIRK_DATA_STANDARD    1191                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1192                         { QUIRK_DATA_STANDARD    1192                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1193                         {                        1193                         {
1194                                 QUIRK_DATA_MI    1194                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
1195                                         .out_    1195                                         .out_cables = 0x0001,
1196                                         .in_c    1196                                         .in_cables  = 0x0001
1197                                 }                1197                                 }
1198                         },                       1198                         },
1199                         QUIRK_COMPOSITE_END      1199                         QUIRK_COMPOSITE_END
1200                 }                                1200                 }
1201         }                                        1201         }
1202 },                                               1202 },
1203 {                                                1203 {
1204         /* only 44.1 kHz works at the moment     1204         /* only 44.1 kHz works at the moment */
1205         USB_DEVICE(0x0582, 0x0120),              1205         USB_DEVICE(0x0582, 0x0120),
1206         QUIRK_DRIVER_INFO {                      1206         QUIRK_DRIVER_INFO {
1207                 /* .vendor_name = "Roland", *    1207                 /* .vendor_name = "Roland", */
1208                 /* .product_name = "OCTO-CAPT    1208                 /* .product_name = "OCTO-CAPTURE", */
1209                 QUIRK_DATA_COMPOSITE {           1209                 QUIRK_DATA_COMPOSITE {
1210                         {                        1210                         {
1211                                 QUIRK_DATA_AU    1211                                 QUIRK_DATA_AUDIOFORMAT(0) {
1212                                         .form    1212                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1213                                         .chan    1213                                         .channels = 10,
1214                                         .ifac    1214                                         .iface = 0,
1215                                         .alts    1215                                         .altsetting = 1,
1216                                         .alts    1216                                         .altset_idx = 1,
1217                                         .endp    1217                                         .endpoint = 0x05,
1218                                         .ep_a    1218                                         .ep_attr = 0x05,
1219                                         .rate    1219                                         .rates = SNDRV_PCM_RATE_44100,
1220                                         .rate    1220                                         .rate_min = 44100,
1221                                         .rate    1221                                         .rate_max = 44100,
1222                                         .nr_r    1222                                         .nr_rates = 1,
1223                                         .rate    1223                                         .rate_table = (unsigned int[]) { 44100 }
1224                                 }                1224                                 }
1225                         },                       1225                         },
1226                         {                        1226                         {
1227                                 QUIRK_DATA_AU    1227                                 QUIRK_DATA_AUDIOFORMAT(1) {
1228                                         .form    1228                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1229                                         .chan    1229                                         .channels = 12,
1230                                         .ifac    1230                                         .iface = 1,
1231                                         .alts    1231                                         .altsetting = 1,
1232                                         .alts    1232                                         .altset_idx = 1,
1233                                         .endp    1233                                         .endpoint = 0x85,
1234                                         .ep_a    1234                                         .ep_attr = 0x25,
1235                                         .rate    1235                                         .rates = SNDRV_PCM_RATE_44100,
1236                                         .rate    1236                                         .rate_min = 44100,
1237                                         .rate    1237                                         .rate_max = 44100,
1238                                         .nr_r    1238                                         .nr_rates = 1,
1239                                         .rate    1239                                         .rate_table = (unsigned int[]) { 44100 }
1240                                 }                1240                                 }
1241                         },                       1241                         },
1242                         {                        1242                         {
1243                                 QUIRK_DATA_MI    1243                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
1244                                         .out_    1244                                         .out_cables = 0x0001,
1245                                         .in_c    1245                                         .in_cables  = 0x0001
1246                                 }                1246                                 }
1247                         },                       1247                         },
1248                         { QUIRK_DATA_IGNORE(3    1248                         { QUIRK_DATA_IGNORE(3) },
1249                         { QUIRK_DATA_IGNORE(4    1249                         { QUIRK_DATA_IGNORE(4) },
1250                         QUIRK_COMPOSITE_END      1250                         QUIRK_COMPOSITE_END
1251                 }                                1251                 }
1252         }                                        1252         }
1253 },                                               1253 },
1254 {                                                1254 {
1255         /* only 44.1 kHz works at the moment     1255         /* only 44.1 kHz works at the moment */
1256         USB_DEVICE(0x0582, 0x012f),              1256         USB_DEVICE(0x0582, 0x012f),
1257         QUIRK_DRIVER_INFO {                      1257         QUIRK_DRIVER_INFO {
1258                 /* .vendor_name = "Roland", *    1258                 /* .vendor_name = "Roland", */
1259                 /* .product_name = "QUAD-CAPT    1259                 /* .product_name = "QUAD-CAPTURE", */
1260                 QUIRK_DATA_COMPOSITE {           1260                 QUIRK_DATA_COMPOSITE {
1261                         {                        1261                         {
1262                                 QUIRK_DATA_AU    1262                                 QUIRK_DATA_AUDIOFORMAT(0) {
1263                                         .form    1263                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1264                                         .chan    1264                                         .channels = 4,
1265                                         .ifac    1265                                         .iface = 0,
1266                                         .alts    1266                                         .altsetting = 1,
1267                                         .alts    1267                                         .altset_idx = 1,
1268                                         .endp    1268                                         .endpoint = 0x05,
1269                                         .ep_a    1269                                         .ep_attr = 0x05,
1270                                         .rate    1270                                         .rates = SNDRV_PCM_RATE_44100,
1271                                         .rate    1271                                         .rate_min = 44100,
1272                                         .rate    1272                                         .rate_max = 44100,
1273                                         .nr_r    1273                                         .nr_rates = 1,
1274                                         .rate    1274                                         .rate_table = (unsigned int[]) { 44100 }
1275                                 }                1275                                 }
1276                         },                       1276                         },
1277                         {                        1277                         {
1278                                 QUIRK_DATA_AU    1278                                 QUIRK_DATA_AUDIOFORMAT(1) {
1279                                         .form    1279                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1280                                         .chan    1280                                         .channels = 6,
1281                                         .ifac    1281                                         .iface = 1,
1282                                         .alts    1282                                         .altsetting = 1,
1283                                         .alts    1283                                         .altset_idx = 1,
1284                                         .endp    1284                                         .endpoint = 0x85,
1285                                         .ep_a    1285                                         .ep_attr = 0x25,
1286                                         .rate    1286                                         .rates = SNDRV_PCM_RATE_44100,
1287                                         .rate    1287                                         .rate_min = 44100,
1288                                         .rate    1288                                         .rate_max = 44100,
1289                                         .nr_r    1289                                         .nr_rates = 1,
1290                                         .rate    1290                                         .rate_table = (unsigned int[]) { 44100 }
1291                                 }                1291                                 }
1292                         },                       1292                         },
1293                         {                        1293                         {
1294                                 QUIRK_DATA_MI    1294                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
1295                                         .out_    1295                                         .out_cables = 0x0001,
1296                                         .in_c    1296                                         .in_cables  = 0x0001
1297                                 }                1297                                 }
1298                         },                       1298                         },
1299                         { QUIRK_DATA_IGNORE(3    1299                         { QUIRK_DATA_IGNORE(3) },
1300                         { QUIRK_DATA_IGNORE(4    1300                         { QUIRK_DATA_IGNORE(4) },
1301                         QUIRK_COMPOSITE_END      1301                         QUIRK_COMPOSITE_END
1302                 }                                1302                 }
1303         }                                        1303         }
1304 },                                               1304 },
1305 {                                                1305 {
1306         USB_DEVICE(0x0582, 0x0159),              1306         USB_DEVICE(0x0582, 0x0159),
1307         QUIRK_DRIVER_INFO {                      1307         QUIRK_DRIVER_INFO {
1308                 /* .vendor_name = "Roland", *    1308                 /* .vendor_name = "Roland", */
1309                 /* .product_name = "UA-22", *    1309                 /* .product_name = "UA-22", */
1310                 QUIRK_DATA_COMPOSITE {           1310                 QUIRK_DATA_COMPOSITE {
1311                         { QUIRK_DATA_STANDARD    1311                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1312                         { QUIRK_DATA_STANDARD    1312                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1313                         {                        1313                         {
1314                                 QUIRK_DATA_MI    1314                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {
1315                                         .out_    1315                                         .out_cables = 0x0001,
1316                                         .in_c    1316                                         .in_cables = 0x0001
1317                                 }                1317                                 }
1318                         },                       1318                         },
1319                         QUIRK_COMPOSITE_END      1319                         QUIRK_COMPOSITE_END
1320                 }                                1320                 }
1321         }                                        1321         }
1322 },                                               1322 },
1323                                                  1323 
1324 /* UA101 and co are supported by another driv    1324 /* UA101 and co are supported by another driver */
1325 {                                                1325 {
1326         USB_DEVICE(0x0582, 0x0044), /* UA-100    1326         USB_DEVICE(0x0582, 0x0044), /* UA-1000 high speed */
1327         QUIRK_DRIVER_INFO {                      1327         QUIRK_DRIVER_INFO {
1328                 .ifnum = QUIRK_NODEV_INTERFAC    1328                 .ifnum = QUIRK_NODEV_INTERFACE
1329         },                                       1329         },
1330 },                                               1330 },
1331 {                                                1331 {
1332         USB_DEVICE(0x0582, 0x007d), /* UA-101    1332         USB_DEVICE(0x0582, 0x007d), /* UA-101 high speed */
1333         QUIRK_DRIVER_INFO {                      1333         QUIRK_DRIVER_INFO {
1334                 .ifnum = QUIRK_NODEV_INTERFAC    1334                 .ifnum = QUIRK_NODEV_INTERFACE
1335         },                                       1335         },
1336 },                                               1336 },
1337 {                                                1337 {
1338         USB_DEVICE(0x0582, 0x008d), /* UA-101    1338         USB_DEVICE(0x0582, 0x008d), /* UA-101 full speed */
1339         QUIRK_DRIVER_INFO {                      1339         QUIRK_DRIVER_INFO {
1340                 .ifnum = QUIRK_NODEV_INTERFAC    1340                 .ifnum = QUIRK_NODEV_INTERFACE
1341         },                                       1341         },
1342 },                                               1342 },
1343                                                  1343 
1344 /* this catches most recent vendor-specific R    1344 /* this catches most recent vendor-specific Roland devices */
1345 {                                                1345 {
1346         .match_flags = USB_DEVICE_ID_MATCH_VE    1346         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1347                        USB_DEVICE_ID_MATCH_IN    1347                        USB_DEVICE_ID_MATCH_INT_CLASS,
1348         .idVendor = 0x0582,                      1348         .idVendor = 0x0582,
1349         .bInterfaceClass = USB_CLASS_VENDOR_S    1349         .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1350         QUIRK_DRIVER_INFO {                      1350         QUIRK_DRIVER_INFO {
1351                 .ifnum = QUIRK_ANY_INTERFACE,    1351                 .ifnum = QUIRK_ANY_INTERFACE,
1352                 .type = QUIRK_AUTODETECT         1352                 .type = QUIRK_AUTODETECT
1353         }                                        1353         }
1354 },                                               1354 },
1355                                                  1355 
1356 /* Guillemot devices */                          1356 /* Guillemot devices */
1357 {                                                1357 {
1358         /*                                       1358         /*
1359          * This is for the "Windows Edition"     1359          * This is for the "Windows Edition" where the external MIDI ports are
1360          * the only MIDI ports; the control d    1360          * the only MIDI ports; the control data is reported through HID
1361          * interfaces.  The "Macintosh Editio    1361          * interfaces.  The "Macintosh Edition" has ID 0xd002 and uses standard
1362          * compliant USB MIDI ports for exter    1362          * compliant USB MIDI ports for external MIDI and controls.
1363          */                                      1363          */
1364         USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000    1364         USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000),
1365         QUIRK_DRIVER_INFO {                      1365         QUIRK_DRIVER_INFO {
1366                 .vendor_name = "Hercules",       1366                 .vendor_name = "Hercules",
1367                 .product_name = "DJ Console (    1367                 .product_name = "DJ Console (WE)",
1368                 QUIRK_DATA_MIDI_FIXED_ENDPOIN    1368                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) {
1369                         .out_cables = 0x0001,    1369                         .out_cables = 0x0001,
1370                         .in_cables = 0x0001      1370                         .in_cables = 0x0001
1371                 }                                1371                 }
1372         }                                        1372         }
1373 },                                               1373 },
1374                                                  1374 
1375 /* Midiman/M-Audio devices */                    1375 /* Midiman/M-Audio devices */
1376 {                                                1376 {
1377         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002    1377         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002),
1378         QUIRK_DRIVER_INFO {                      1378         QUIRK_DRIVER_INFO {
1379                 .vendor_name = "M-Audio",        1379                 .vendor_name = "M-Audio",
1380                 .product_name = "MidiSport 2x    1380                 .product_name = "MidiSport 2x2",
1381                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1381                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1382                         .out_cables = 0x0003,    1382                         .out_cables = 0x0003,
1383                         .in_cables  = 0x0003     1383                         .in_cables  = 0x0003
1384                 }                                1384                 }
1385         }                                        1385         }
1386 },                                               1386 },
1387 {                                                1387 {
1388         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011    1388         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011),
1389         QUIRK_DRIVER_INFO {                      1389         QUIRK_DRIVER_INFO {
1390                 .vendor_name = "M-Audio",        1390                 .vendor_name = "M-Audio",
1391                 .product_name = "MidiSport 1x    1391                 .product_name = "MidiSport 1x1",
1392                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1392                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1393                         .out_cables = 0x0001,    1393                         .out_cables = 0x0001,
1394                         .in_cables  = 0x0001     1394                         .in_cables  = 0x0001
1395                 }                                1395                 }
1396         }                                        1396         }
1397 },                                               1397 },
1398 {                                                1398 {
1399         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015    1399         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015),
1400         QUIRK_DRIVER_INFO {                      1400         QUIRK_DRIVER_INFO {
1401                 .vendor_name = "M-Audio",        1401                 .vendor_name = "M-Audio",
1402                 .product_name = "Keystation",    1402                 .product_name = "Keystation",
1403                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1403                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1404                         .out_cables = 0x0001,    1404                         .out_cables = 0x0001,
1405                         .in_cables  = 0x0001     1405                         .in_cables  = 0x0001
1406                 }                                1406                 }
1407         }                                        1407         }
1408 },                                               1408 },
1409 {                                                1409 {
1410         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021    1410         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021),
1411         QUIRK_DRIVER_INFO {                      1411         QUIRK_DRIVER_INFO {
1412                 .vendor_name = "M-Audio",        1412                 .vendor_name = "M-Audio",
1413                 .product_name = "MidiSport 4x    1413                 .product_name = "MidiSport 4x4",
1414                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1414                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1415                         .out_cables = 0x000f,    1415                         .out_cables = 0x000f,
1416                         .in_cables  = 0x000f     1416                         .in_cables  = 0x000f
1417                 }                                1417                 }
1418         }                                        1418         }
1419 },                                               1419 },
1420 {                                                1420 {
1421         /*                                       1421         /*
1422          * For hardware revision 1.05; in the    1422          * For hardware revision 1.05; in the later revisions (1.10 and
1423          * 1.21), 0x1031 is the ID for the de    1423          * 1.21), 0x1031 is the ID for the device without firmware.
1424          * Thanks to Olaf Giesbrecht <Olaf_Gi    1424          * Thanks to Olaf Giesbrecht <Olaf_Giesbrecht@yahoo.de>
1425          */                                      1425          */
1426         USB_DEVICE_VER(0x0763, 0x1031, 0x0100    1426         USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109),
1427         QUIRK_DRIVER_INFO {                      1427         QUIRK_DRIVER_INFO {
1428                 .vendor_name = "M-Audio",        1428                 .vendor_name = "M-Audio",
1429                 .product_name = "MidiSport 8x    1429                 .product_name = "MidiSport 8x8",
1430                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1430                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1431                         .out_cables = 0x01ff,    1431                         .out_cables = 0x01ff,
1432                         .in_cables  = 0x01ff     1432                         .in_cables  = 0x01ff
1433                 }                                1433                 }
1434         }                                        1434         }
1435 },                                               1435 },
1436 {                                                1436 {
1437         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033    1437         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033),
1438         QUIRK_DRIVER_INFO {                      1438         QUIRK_DRIVER_INFO {
1439                 .vendor_name = "M-Audio",        1439                 .vendor_name = "M-Audio",
1440                 .product_name = "MidiSport 8x    1440                 .product_name = "MidiSport 8x8",
1441                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1441                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1442                         .out_cables = 0x01ff,    1442                         .out_cables = 0x01ff,
1443                         .in_cables  = 0x01ff     1443                         .in_cables  = 0x01ff
1444                 }                                1444                 }
1445         }                                        1445         }
1446 },                                               1446 },
1447 {                                                1447 {
1448         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041    1448         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041),
1449         QUIRK_DRIVER_INFO {                      1449         QUIRK_DRIVER_INFO {
1450                 .vendor_name = "M-Audio",        1450                 .vendor_name = "M-Audio",
1451                 .product_name = "MidiSport 2x    1451                 .product_name = "MidiSport 2x4",
1452                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK    1452                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {
1453                         .out_cables = 0x000f,    1453                         .out_cables = 0x000f,
1454                         .in_cables  = 0x0003     1454                         .in_cables  = 0x0003
1455                 }                                1455                 }
1456         }                                        1456         }
1457 },                                               1457 },
1458 {                                                1458 {
1459         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001    1459         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001),
1460         QUIRK_DRIVER_INFO {                      1460         QUIRK_DRIVER_INFO {
1461                 .vendor_name = "M-Audio",        1461                 .vendor_name = "M-Audio",
1462                 .product_name = "Quattro",       1462                 .product_name = "Quattro",
1463                 QUIRK_DATA_COMPOSITE {           1463                 QUIRK_DATA_COMPOSITE {
1464                         /*                       1464                         /*
1465                          * Interfaces 0-2 are    1465                          * Interfaces 0-2 are "Windows-compatible", 16-bit only,
1466                          * and share endpoint    1466                          * and share endpoints with the other interfaces.
1467                          * Ignore them.  The     1467                          * Ignore them.  The other interfaces can do 24 bits,
1468                          * but captured sampl    1468                          * but captured samples are big-endian (see usbaudio.c).
1469                          */                      1469                          */
1470                         { QUIRK_DATA_IGNORE(0    1470                         { QUIRK_DATA_IGNORE(0) },
1471                         { QUIRK_DATA_IGNORE(1    1471                         { QUIRK_DATA_IGNORE(1) },
1472                         { QUIRK_DATA_IGNORE(2    1472                         { QUIRK_DATA_IGNORE(2) },
1473                         { QUIRK_DATA_IGNORE(3    1473                         { QUIRK_DATA_IGNORE(3) },
1474                         { QUIRK_DATA_STANDARD    1474                         { QUIRK_DATA_STANDARD_AUDIO(4) },
1475                         { QUIRK_DATA_STANDARD    1475                         { QUIRK_DATA_STANDARD_AUDIO(5) },
1476                         { QUIRK_DATA_IGNORE(6    1476                         { QUIRK_DATA_IGNORE(6) },
1477                         { QUIRK_DATA_STANDARD    1477                         { QUIRK_DATA_STANDARD_AUDIO(7) },
1478                         { QUIRK_DATA_STANDARD    1478                         { QUIRK_DATA_STANDARD_AUDIO(8) },
1479                         {                        1479                         {
1480                                 QUIRK_DATA_MI    1480                                 QUIRK_DATA_MIDI_MIDIMAN(9) {
1481                                         .out_    1481                                         .out_cables = 0x0001,
1482                                         .in_c    1482                                         .in_cables  = 0x0001
1483                                 }                1483                                 }
1484                         },                       1484                         },
1485                         QUIRK_COMPOSITE_END      1485                         QUIRK_COMPOSITE_END
1486                 }                                1486                 }
1487         }                                        1487         }
1488 },                                               1488 },
1489 {                                                1489 {
1490         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003    1490         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003),
1491         QUIRK_DRIVER_INFO {                      1491         QUIRK_DRIVER_INFO {
1492                 .vendor_name = "M-Audio",        1492                 .vendor_name = "M-Audio",
1493                 .product_name = "AudioPhile",    1493                 .product_name = "AudioPhile",
1494                 QUIRK_DATA_MIDI_MIDIMAN(6) {     1494                 QUIRK_DATA_MIDI_MIDIMAN(6) {
1495                         .out_cables = 0x0001,    1495                         .out_cables = 0x0001,
1496                         .in_cables  = 0x0001     1496                         .in_cables  = 0x0001
1497                 }                                1497                 }
1498         }                                        1498         }
1499 },                                               1499 },
1500 {                                                1500 {
1501         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008    1501         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008),
1502         QUIRK_DRIVER_INFO {                      1502         QUIRK_DRIVER_INFO {
1503                 .vendor_name = "M-Audio",        1503                 .vendor_name = "M-Audio",
1504                 .product_name = "Ozone",         1504                 .product_name = "Ozone",
1505                 QUIRK_DATA_MIDI_MIDIMAN(3) {     1505                 QUIRK_DATA_MIDI_MIDIMAN(3) {
1506                         .out_cables = 0x0001,    1506                         .out_cables = 0x0001,
1507                         .in_cables  = 0x0001     1507                         .in_cables  = 0x0001
1508                 }                                1508                 }
1509         }                                        1509         }
1510 },                                               1510 },
1511 {                                                1511 {
1512         USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d    1512         USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d),
1513         QUIRK_DRIVER_INFO {                      1513         QUIRK_DRIVER_INFO {
1514                 .vendor_name = "M-Audio",        1514                 .vendor_name = "M-Audio",
1515                 .product_name = "OmniStudio",    1515                 .product_name = "OmniStudio",
1516                 QUIRK_DATA_COMPOSITE {           1516                 QUIRK_DATA_COMPOSITE {
1517                         { QUIRK_DATA_IGNORE(0    1517                         { QUIRK_DATA_IGNORE(0) },
1518                         { QUIRK_DATA_IGNORE(1    1518                         { QUIRK_DATA_IGNORE(1) },
1519                         { QUIRK_DATA_IGNORE(2    1519                         { QUIRK_DATA_IGNORE(2) },
1520                         { QUIRK_DATA_IGNORE(3    1520                         { QUIRK_DATA_IGNORE(3) },
1521                         { QUIRK_DATA_STANDARD    1521                         { QUIRK_DATA_STANDARD_AUDIO(4) },
1522                         { QUIRK_DATA_STANDARD    1522                         { QUIRK_DATA_STANDARD_AUDIO(5) },
1523                         { QUIRK_DATA_IGNORE(6    1523                         { QUIRK_DATA_IGNORE(6) },
1524                         { QUIRK_DATA_STANDARD    1524                         { QUIRK_DATA_STANDARD_AUDIO(7) },
1525                         { QUIRK_DATA_STANDARD    1525                         { QUIRK_DATA_STANDARD_AUDIO(8) },
1526                         {                        1526                         {
1527                                 QUIRK_DATA_MI    1527                                 QUIRK_DATA_MIDI_MIDIMAN(9) {
1528                                         .out_    1528                                         .out_cables = 0x0001,
1529                                         .in_c    1529                                         .in_cables  = 0x0001
1530                                 }                1530                                 }
1531                         },                       1531                         },
1532                         QUIRK_COMPOSITE_END      1532                         QUIRK_COMPOSITE_END
1533                 }                                1533                 }
1534         }                                        1534         }
1535 },                                               1535 },
1536 {                                                1536 {
1537         USB_DEVICE(0x0763, 0x2019),              1537         USB_DEVICE(0x0763, 0x2019),
1538         QUIRK_DRIVER_INFO {                      1538         QUIRK_DRIVER_INFO {
1539                 /* .vendor_name = "M-Audio",     1539                 /* .vendor_name = "M-Audio", */
1540                 /* .product_name = "Ozone Aca    1540                 /* .product_name = "Ozone Academic", */
1541                 QUIRK_DATA_COMPOSITE {           1541                 QUIRK_DATA_COMPOSITE {
1542                         { QUIRK_DATA_STANDARD    1542                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1543                         { QUIRK_DATA_STANDARD    1543                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1544                         { QUIRK_DATA_STANDARD    1544                         { QUIRK_DATA_STANDARD_AUDIO(2) },
1545                         {                        1545                         {
1546                                 QUIRK_DATA_MI    1546                                 QUIRK_DATA_MIDI_MIDIMAN(3) {
1547                                         .out_    1547                                         .out_cables = 0x0001,
1548                                         .in_c    1548                                         .in_cables  = 0x0001
1549                                 }                1549                                 }
1550                         },                       1550                         },
1551                         QUIRK_COMPOSITE_END      1551                         QUIRK_COMPOSITE_END
1552                 }                                1552                 }
1553         }                                        1553         }
1554 },                                               1554 },
1555 {                                                1555 {
1556         /* M-Audio Micro */                      1556         /* M-Audio Micro */
1557         USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a    1557         USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a),
1558 },                                               1558 },
1559 {                                                1559 {
1560         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030    1560         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
1561         QUIRK_DRIVER_INFO {                      1561         QUIRK_DRIVER_INFO {
1562                 /* .vendor_name = "M-Audio",     1562                 /* .vendor_name = "M-Audio", */
1563                 /* .product_name = "Fast Trac    1563                 /* .product_name = "Fast Track C400", */
1564                 QUIRK_DATA_COMPOSITE {           1564                 QUIRK_DATA_COMPOSITE {
1565                         { QUIRK_DATA_STANDARD    1565                         { QUIRK_DATA_STANDARD_MIXER(1) },
1566                         /* Playback */           1566                         /* Playback */
1567                         {                        1567                         {
1568                                 QUIRK_DATA_AU    1568                                 QUIRK_DATA_AUDIOFORMAT(2) {
1569                                         .form    1569                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1570                                         .chan    1570                                         .channels = 6,
1571                                         .ifac    1571                                         .iface = 2,
1572                                         .alts    1572                                         .altsetting = 1,
1573                                         .alts    1573                                         .altset_idx = 1,
1574                                         .attr    1574                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1575                                         .endp    1575                                         .endpoint = 0x01,
1576                                         .ep_a    1576                                         .ep_attr = 0x09,
1577                                         .rate    1577                                         .rates = SNDRV_PCM_RATE_44100 |
1578                                                  1578                                                  SNDRV_PCM_RATE_48000 |
1579                                                  1579                                                  SNDRV_PCM_RATE_88200 |
1580                                                  1580                                                  SNDRV_PCM_RATE_96000,
1581                                         .rate    1581                                         .rate_min = 44100,
1582                                         .rate    1582                                         .rate_max = 96000,
1583                                         .nr_r    1583                                         .nr_rates = 4,
1584                                         .rate    1584                                         .rate_table = (unsigned int[]) {
1585                                                  1585                                                         44100, 48000, 88200, 96000
1586                                         },       1586                                         },
1587                                         .cloc    1587                                         .clock = 0x80,
1588                                 }                1588                                 }
1589                         },                       1589                         },
1590                         /* Capture */            1590                         /* Capture */
1591                         {                        1591                         {
1592                                 QUIRK_DATA_AU    1592                                 QUIRK_DATA_AUDIOFORMAT(3) {
1593                                         .form    1593                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1594                                         .chan    1594                                         .channels = 4,
1595                                         .ifac    1595                                         .iface = 3,
1596                                         .alts    1596                                         .altsetting = 1,
1597                                         .alts    1597                                         .altset_idx = 1,
1598                                         .attr    1598                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1599                                         .endp    1599                                         .endpoint = 0x81,
1600                                         .ep_a    1600                                         .ep_attr = 0x05,
1601                                         .rate    1601                                         .rates = SNDRV_PCM_RATE_44100 |
1602                                                  1602                                                  SNDRV_PCM_RATE_48000 |
1603                                                  1603                                                  SNDRV_PCM_RATE_88200 |
1604                                                  1604                                                  SNDRV_PCM_RATE_96000,
1605                                         .rate    1605                                         .rate_min = 44100,
1606                                         .rate    1606                                         .rate_max = 96000,
1607                                         .nr_r    1607                                         .nr_rates = 4,
1608                                         .rate    1608                                         .rate_table = (unsigned int[]) {
1609                                                  1609                                                 44100, 48000, 88200, 96000
1610                                         },       1610                                         },
1611                                         .cloc    1611                                         .clock = 0x80,
1612                                 }                1612                                 }
1613                         },                       1613                         },
1614                         /* MIDI: Interface =     1614                         /* MIDI: Interface = 4*/
1615                         QUIRK_COMPOSITE_END      1615                         QUIRK_COMPOSITE_END
1616                 }                                1616                 }
1617         }                                        1617         }
1618 },                                               1618 },
1619 {                                                1619 {
1620         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031    1620         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031),
1621         QUIRK_DRIVER_INFO {                      1621         QUIRK_DRIVER_INFO {
1622                 /* .vendor_name = "M-Audio",     1622                 /* .vendor_name = "M-Audio", */
1623                 /* .product_name = "Fast Trac    1623                 /* .product_name = "Fast Track C600", */
1624                 QUIRK_DATA_COMPOSITE {           1624                 QUIRK_DATA_COMPOSITE {
1625                         { QUIRK_DATA_STANDARD    1625                         { QUIRK_DATA_STANDARD_MIXER(1) },
1626                         /* Playback */           1626                         /* Playback */
1627                         {                        1627                         {
1628                                 QUIRK_DATA_AU    1628                                 QUIRK_DATA_AUDIOFORMAT(2) {
1629                                         .form    1629                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1630                                         .chan    1630                                         .channels = 8,
1631                                         .ifac    1631                                         .iface = 2,
1632                                         .alts    1632                                         .altsetting = 1,
1633                                         .alts    1633                                         .altset_idx = 1,
1634                                         .attr    1634                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1635                                         .endp    1635                                         .endpoint = 0x01,
1636                                         .ep_a    1636                                         .ep_attr = 0x09,
1637                                         .rate    1637                                         .rates = SNDRV_PCM_RATE_44100 |
1638                                                  1638                                                  SNDRV_PCM_RATE_48000 |
1639                                                  1639                                                  SNDRV_PCM_RATE_88200 |
1640                                                  1640                                                  SNDRV_PCM_RATE_96000,
1641                                         .rate    1641                                         .rate_min = 44100,
1642                                         .rate    1642                                         .rate_max = 96000,
1643                                         .nr_r    1643                                         .nr_rates = 4,
1644                                         .rate    1644                                         .rate_table = (unsigned int[]) {
1645                                                  1645                                                         44100, 48000, 88200, 96000
1646                                         },       1646                                         },
1647                                         .cloc    1647                                         .clock = 0x80,
1648                                 }                1648                                 }
1649                         },                       1649                         },
1650                         /* Capture */            1650                         /* Capture */
1651                         {                        1651                         {
1652                                 QUIRK_DATA_AU    1652                                 QUIRK_DATA_AUDIOFORMAT(3) {
1653                                         .form    1653                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1654                                         .chan    1654                                         .channels = 6,
1655                                         .ifac    1655                                         .iface = 3,
1656                                         .alts    1656                                         .altsetting = 1,
1657                                         .alts    1657                                         .altset_idx = 1,
1658                                         .attr    1658                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1659                                         .endp    1659                                         .endpoint = 0x81,
1660                                         .ep_a    1660                                         .ep_attr = 0x05,
1661                                         .rate    1661                                         .rates = SNDRV_PCM_RATE_44100 |
1662                                                  1662                                                  SNDRV_PCM_RATE_48000 |
1663                                                  1663                                                  SNDRV_PCM_RATE_88200 |
1664                                                  1664                                                  SNDRV_PCM_RATE_96000,
1665                                         .rate    1665                                         .rate_min = 44100,
1666                                         .rate    1666                                         .rate_max = 96000,
1667                                         .nr_r    1667                                         .nr_rates = 4,
1668                                         .rate    1668                                         .rate_table = (unsigned int[]) {
1669                                                  1669                                                 44100, 48000, 88200, 96000
1670                                         },       1670                                         },
1671                                         .cloc    1671                                         .clock = 0x80,
1672                                 }                1672                                 }
1673                         },                       1673                         },
1674                         /* MIDI: Interface =     1674                         /* MIDI: Interface = 4 */
1675                         QUIRK_COMPOSITE_END      1675                         QUIRK_COMPOSITE_END
1676                 }                                1676                 }
1677         }                                        1677         }
1678 },                                               1678 },
1679 {                                                1679 {
1680         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080    1680         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080),
1681         QUIRK_DRIVER_INFO {                      1681         QUIRK_DRIVER_INFO {
1682                 /* .vendor_name = "M-Audio",     1682                 /* .vendor_name = "M-Audio", */
1683                 /* .product_name = "Fast Trac    1683                 /* .product_name = "Fast Track Ultra", */
1684                 QUIRK_DATA_COMPOSITE {           1684                 QUIRK_DATA_COMPOSITE {
1685                         { QUIRK_DATA_STANDARD    1685                         { QUIRK_DATA_STANDARD_MIXER(0) },
1686                         {                        1686                         {
1687                                 QUIRK_DATA_AU    1687                                 QUIRK_DATA_AUDIOFORMAT(1) {
1688                                         .form    1688                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1689                                         .chan    1689                                         .channels = 8,
1690                                         .ifac    1690                                         .iface = 1,
1691                                         .alts    1691                                         .altsetting = 1,
1692                                         .alts    1692                                         .altset_idx = 1,
1693                                         .attr    1693                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1694                                         .endp    1694                                         .endpoint = 0x01,
1695                                         .ep_a    1695                                         .ep_attr = 0x09,
1696                                         .rate    1696                                         .rates = SNDRV_PCM_RATE_44100 |
1697                                                  1697                                                  SNDRV_PCM_RATE_48000 |
1698                                                  1698                                                  SNDRV_PCM_RATE_88200 |
1699                                                  1699                                                  SNDRV_PCM_RATE_96000,
1700                                         .rate    1700                                         .rate_min = 44100,
1701                                         .rate    1701                                         .rate_max = 96000,
1702                                         .nr_r    1702                                         .nr_rates = 4,
1703                                         .rate    1703                                         .rate_table = (unsigned int[]) {
1704                                                  1704                                                 44100, 48000, 88200, 96000
1705                                         }        1705                                         }
1706                                 }                1706                                 }
1707                         },                       1707                         },
1708                         {                        1708                         {
1709                                 QUIRK_DATA_AU    1709                                 QUIRK_DATA_AUDIOFORMAT(2) {
1710                                         .form    1710                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1711                                         .chan    1711                                         .channels = 8,
1712                                         .ifac    1712                                         .iface = 2,
1713                                         .alts    1713                                         .altsetting = 1,
1714                                         .alts    1714                                         .altset_idx = 1,
1715                                         .attr    1715                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1716                                         .endp    1716                                         .endpoint = 0x81,
1717                                         .ep_a    1717                                         .ep_attr = 0x05,
1718                                         .rate    1718                                         .rates = SNDRV_PCM_RATE_44100 |
1719                                                  1719                                                  SNDRV_PCM_RATE_48000 |
1720                                                  1720                                                  SNDRV_PCM_RATE_88200 |
1721                                                  1721                                                  SNDRV_PCM_RATE_96000,
1722                                         .rate    1722                                         .rate_min = 44100,
1723                                         .rate    1723                                         .rate_max = 96000,
1724                                         .nr_r    1724                                         .nr_rates = 4,
1725                                         .rate    1725                                         .rate_table = (unsigned int[]) {
1726                                                  1726                                                 44100, 48000, 88200, 96000
1727                                         }        1727                                         }
1728                                 }                1728                                 }
1729                         },                       1729                         },
1730                         /* interface 3 (MIDI)    1730                         /* interface 3 (MIDI) is standard compliant */
1731                         QUIRK_COMPOSITE_END      1731                         QUIRK_COMPOSITE_END
1732                 }                                1732                 }
1733         }                                        1733         }
1734 },                                               1734 },
1735 {                                                1735 {
1736         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081    1736         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081),
1737         QUIRK_DRIVER_INFO {                      1737         QUIRK_DRIVER_INFO {
1738                 /* .vendor_name = "M-Audio",     1738                 /* .vendor_name = "M-Audio", */
1739                 /* .product_name = "Fast Trac    1739                 /* .product_name = "Fast Track Ultra 8R", */
1740                 QUIRK_DATA_COMPOSITE {           1740                 QUIRK_DATA_COMPOSITE {
1741                         { QUIRK_DATA_STANDARD    1741                         { QUIRK_DATA_STANDARD_MIXER(0) },
1742                         {                        1742                         {
1743                                 QUIRK_DATA_AU    1743                                 QUIRK_DATA_AUDIOFORMAT(1) {
1744                                         .form    1744                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1745                                         .chan    1745                                         .channels = 8,
1746                                         .ifac    1746                                         .iface = 1,
1747                                         .alts    1747                                         .altsetting = 1,
1748                                         .alts    1748                                         .altset_idx = 1,
1749                                         .attr    1749                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1750                                         .endp    1750                                         .endpoint = 0x01,
1751                                         .ep_a    1751                                         .ep_attr = 0x09,
1752                                         .rate    1752                                         .rates = SNDRV_PCM_RATE_44100 |
1753                                                  1753                                                  SNDRV_PCM_RATE_48000 |
1754                                                  1754                                                  SNDRV_PCM_RATE_88200 |
1755                                                  1755                                                  SNDRV_PCM_RATE_96000,
1756                                         .rate    1756                                         .rate_min = 44100,
1757                                         .rate    1757                                         .rate_max = 96000,
1758                                         .nr_r    1758                                         .nr_rates = 4,
1759                                         .rate    1759                                         .rate_table = (unsigned int[]) {
1760                                                  1760                                                         44100, 48000, 88200, 96000
1761                                         }        1761                                         }
1762                                 }                1762                                 }
1763                         },                       1763                         },
1764                         {                        1764                         {
1765                                 QUIRK_DATA_AU    1765                                 QUIRK_DATA_AUDIOFORMAT(2) {
1766                                         .form    1766                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1767                                         .chan    1767                                         .channels = 8,
1768                                         .ifac    1768                                         .iface = 2,
1769                                         .alts    1769                                         .altsetting = 1,
1770                                         .alts    1770                                         .altset_idx = 1,
1771                                         .attr    1771                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1772                                         .endp    1772                                         .endpoint = 0x81,
1773                                         .ep_a    1773                                         .ep_attr = 0x05,
1774                                         .rate    1774                                         .rates = SNDRV_PCM_RATE_44100 |
1775                                                  1775                                                  SNDRV_PCM_RATE_48000 |
1776                                                  1776                                                  SNDRV_PCM_RATE_88200 |
1777                                                  1777                                                  SNDRV_PCM_RATE_96000,
1778                                         .rate    1778                                         .rate_min = 44100,
1779                                         .rate    1779                                         .rate_max = 96000,
1780                                         .nr_r    1780                                         .nr_rates = 4,
1781                                         .rate    1781                                         .rate_table = (unsigned int[]) {
1782                                                  1782                                                 44100, 48000, 88200, 96000
1783                                         }        1783                                         }
1784                                 }                1784                                 }
1785                         },                       1785                         },
1786                         /* interface 3 (MIDI)    1786                         /* interface 3 (MIDI) is standard compliant */
1787                         QUIRK_COMPOSITE_END      1787                         QUIRK_COMPOSITE_END
1788                 }                                1788                 }
1789         }                                        1789         }
1790 },                                               1790 },
1791                                                  1791 
1792 /* Casio devices */                              1792 /* Casio devices */
1793 {                                                1793 {
1794         USB_DEVICE(0x07cf, 0x6801),              1794         USB_DEVICE(0x07cf, 0x6801),
1795         QUIRK_DRIVER_INFO {                      1795         QUIRK_DRIVER_INFO {
1796                 .vendor_name = "Casio",          1796                 .vendor_name = "Casio",
1797                 .product_name = "PL-40R",        1797                 .product_name = "PL-40R",
1798                 QUIRK_DATA_MIDI_YAMAHA(0)        1798                 QUIRK_DATA_MIDI_YAMAHA(0)
1799         }                                        1799         }
1800 },                                               1800 },
1801 {                                                1801 {
1802         /* this ID is used by several devices    1802         /* this ID is used by several devices without a product ID */
1803         USB_DEVICE(0x07cf, 0x6802),              1803         USB_DEVICE(0x07cf, 0x6802),
1804         QUIRK_DRIVER_INFO {                      1804         QUIRK_DRIVER_INFO {
1805                 .vendor_name = "Casio",          1805                 .vendor_name = "Casio",
1806                 .product_name = "Keyboard",      1806                 .product_name = "Keyboard",
1807                 QUIRK_DATA_MIDI_YAMAHA(0)        1807                 QUIRK_DATA_MIDI_YAMAHA(0)
1808         }                                        1808         }
1809 },                                               1809 },
1810                                                  1810 
1811 /* Mark of the Unicorn devices */                1811 /* Mark of the Unicorn devices */
1812 {                                                1812 {
1813         /* thanks to Robert A. Lerche <ral 'a    1813         /* thanks to Robert A. Lerche <ral 'at' msbit.com> */
1814         .match_flags = USB_DEVICE_ID_MATCH_VE    1814         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1815                        USB_DEVICE_ID_MATCH_PR    1815                        USB_DEVICE_ID_MATCH_PRODUCT |
1816                        USB_DEVICE_ID_MATCH_DE    1816                        USB_DEVICE_ID_MATCH_DEV_SUBCLASS,
1817         .idVendor = 0x07fd,                      1817         .idVendor = 0x07fd,
1818         .idProduct = 0x0001,                     1818         .idProduct = 0x0001,
1819         .bDeviceSubClass = 2,                    1819         .bDeviceSubClass = 2,
1820         QUIRK_DRIVER_INFO {                      1820         QUIRK_DRIVER_INFO {
1821                 .vendor_name = "MOTU",           1821                 .vendor_name = "MOTU",
1822                 .product_name = "Fastlane",      1822                 .product_name = "Fastlane",
1823                 QUIRK_DATA_COMPOSITE {           1823                 QUIRK_DATA_COMPOSITE {
1824                         { QUIRK_DATA_RAW_BYTE    1824                         { QUIRK_DATA_RAW_BYTES(0) },
1825                         { QUIRK_DATA_IGNORE(1    1825                         { QUIRK_DATA_IGNORE(1) },
1826                         QUIRK_COMPOSITE_END      1826                         QUIRK_COMPOSITE_END
1827                 }                                1827                 }
1828         }                                        1828         }
1829 },                                               1829 },
1830                                                  1830 
1831 /* Emagic devices */                             1831 /* Emagic devices */
1832 {                                                1832 {
1833         USB_DEVICE(0x086a, 0x0001),              1833         USB_DEVICE(0x086a, 0x0001),
1834         QUIRK_DRIVER_INFO {                      1834         QUIRK_DRIVER_INFO {
1835                 .vendor_name = "Emagic",         1835                 .vendor_name = "Emagic",
1836                 .product_name = "Unitor8",       1836                 .product_name = "Unitor8",
1837                 QUIRK_DATA_MIDI_EMAGIC(2) {      1837                 QUIRK_DATA_MIDI_EMAGIC(2) {
1838                         .out_cables = 0x80ff,    1838                         .out_cables = 0x80ff,
1839                         .in_cables  = 0x80ff     1839                         .in_cables  = 0x80ff
1840                 }                                1840                 }
1841         }                                        1841         }
1842 },                                               1842 },
1843 {                                                1843 {
1844         USB_DEVICE(0x086a, 0x0002),              1844         USB_DEVICE(0x086a, 0x0002),
1845         QUIRK_DRIVER_INFO {                      1845         QUIRK_DRIVER_INFO {
1846                 .vendor_name = "Emagic",         1846                 .vendor_name = "Emagic",
1847                 /* .product_name = "AMT8", */    1847                 /* .product_name = "AMT8", */
1848                 QUIRK_DATA_MIDI_EMAGIC(2) {      1848                 QUIRK_DATA_MIDI_EMAGIC(2) {
1849                         .out_cables = 0x80ff,    1849                         .out_cables = 0x80ff,
1850                         .in_cables  = 0x80ff     1850                         .in_cables  = 0x80ff
1851                 }                                1851                 }
1852         }                                        1852         }
1853 },                                               1853 },
1854 {                                                1854 {
1855         USB_DEVICE(0x086a, 0x0003),              1855         USB_DEVICE(0x086a, 0x0003),
1856         QUIRK_DRIVER_INFO {                      1856         QUIRK_DRIVER_INFO {
1857                 .vendor_name = "Emagic",         1857                 .vendor_name = "Emagic",
1858                 /* .product_name = "MT4", */     1858                 /* .product_name = "MT4", */
1859                 QUIRK_DATA_MIDI_EMAGIC(2) {      1859                 QUIRK_DATA_MIDI_EMAGIC(2) {
1860                         .out_cables = 0x800f,    1860                         .out_cables = 0x800f,
1861                         .in_cables  = 0x8003     1861                         .in_cables  = 0x8003
1862                 }                                1862                 }
1863         }                                        1863         }
1864 },                                               1864 },
1865                                                  1865 
1866 /* KORG devices */                               1866 /* KORG devices */
1867 {                                                1867 {
1868         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200    1868         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200),
1869         QUIRK_DRIVER_INFO {                      1869         QUIRK_DRIVER_INFO {
1870                 .vendor_name = "KORG, Inc.",     1870                 .vendor_name = "KORG, Inc.",
1871                 /* .product_name = "PANDORA P    1871                 /* .product_name = "PANDORA PX5D", */
1872                 QUIRK_DATA_STANDARD_MIDI(3)      1872                 QUIRK_DATA_STANDARD_MIDI(3)
1873         }                                        1873         }
1874 },                                               1874 },
1875                                                  1875 
1876 {                                                1876 {
1877         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201    1877         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201),
1878         QUIRK_DRIVER_INFO {                      1878         QUIRK_DRIVER_INFO {
1879                 .vendor_name = "KORG, Inc.",     1879                 .vendor_name = "KORG, Inc.",
1880                 /* .product_name = "ToneLab S    1880                 /* .product_name = "ToneLab ST", */
1881                 QUIRK_DATA_STANDARD_MIDI(3)      1881                 QUIRK_DATA_STANDARD_MIDI(3)
1882         }                                        1882         }
1883 },                                               1883 },
1884                                                  1884 
1885 {                                                1885 {
1886         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204    1886         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204),
1887         QUIRK_DRIVER_INFO {                      1887         QUIRK_DRIVER_INFO {
1888                 .vendor_name = "KORG, Inc.",     1888                 .vendor_name = "KORG, Inc.",
1889                 /* .product_name = "ToneLab E    1889                 /* .product_name = "ToneLab EX", */
1890                 QUIRK_DATA_STANDARD_MIDI(3)      1890                 QUIRK_DATA_STANDARD_MIDI(3)
1891         }                                        1891         }
1892 },                                               1892 },
1893                                                  1893 
1894 /* AKAI devices */                               1894 /* AKAI devices */
1895 {                                                1895 {
1896         USB_DEVICE(0x09e8, 0x0062),              1896         USB_DEVICE(0x09e8, 0x0062),
1897         QUIRK_DRIVER_INFO {                      1897         QUIRK_DRIVER_INFO {
1898                 .vendor_name = "AKAI",           1898                 .vendor_name = "AKAI",
1899                 .product_name = "MPD16",         1899                 .product_name = "MPD16",
1900                 .ifnum = 0,                      1900                 .ifnum = 0,
1901                 .type = QUIRK_MIDI_AKAI,         1901                 .type = QUIRK_MIDI_AKAI,
1902         }                                        1902         }
1903 },                                               1903 },
1904                                                  1904 
1905 {                                                1905 {
1906         /* Akai MPC Element */                   1906         /* Akai MPC Element */
1907         USB_DEVICE(0x09e8, 0x0021),              1907         USB_DEVICE(0x09e8, 0x0021),
1908         QUIRK_DRIVER_INFO {                      1908         QUIRK_DRIVER_INFO {
1909                 QUIRK_DATA_COMPOSITE {           1909                 QUIRK_DATA_COMPOSITE {
1910                         { QUIRK_DATA_IGNORE(0    1910                         { QUIRK_DATA_IGNORE(0) },
1911                         { QUIRK_DATA_STANDARD    1911                         { QUIRK_DATA_STANDARD_MIDI(1) },
1912                         QUIRK_COMPOSITE_END      1912                         QUIRK_COMPOSITE_END
1913                 }                                1913                 }
1914         }                                        1914         }
1915 },                                               1915 },
1916                                                  1916 
1917 /* Steinberg devices */                          1917 /* Steinberg devices */
1918 {                                                1918 {
1919         /* Steinberg MI2 */                      1919         /* Steinberg MI2 */
1920         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040    1920         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
1921         QUIRK_DRIVER_INFO {                      1921         QUIRK_DRIVER_INFO {
1922                 QUIRK_DATA_COMPOSITE {           1922                 QUIRK_DATA_COMPOSITE {
1923                         { QUIRK_DATA_STANDARD    1923                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1924                         { QUIRK_DATA_STANDARD    1924                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1925                         { QUIRK_DATA_STANDARD    1925                         { QUIRK_DATA_STANDARD_AUDIO(2) },
1926                         {                        1926                         {
1927                                 QUIRK_DATA_MI    1927                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {
1928                                         .out_    1928                                         .out_cables = 0x0001,
1929                                         .in_c    1929                                         .in_cables  = 0x0001
1930                                 }                1930                                 }
1931                         },                       1931                         },
1932                         QUIRK_COMPOSITE_END      1932                         QUIRK_COMPOSITE_END
1933                 }                                1933                 }
1934         }                                        1934         }
1935 },                                               1935 },
1936 {                                                1936 {
1937         /* Steinberg MI4 */                      1937         /* Steinberg MI4 */
1938         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040    1938         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
1939         QUIRK_DRIVER_INFO {                      1939         QUIRK_DRIVER_INFO {
1940                 QUIRK_DATA_COMPOSITE {           1940                 QUIRK_DATA_COMPOSITE {
1941                         { QUIRK_DATA_STANDARD    1941                         { QUIRK_DATA_STANDARD_AUDIO(0) },
1942                         { QUIRK_DATA_STANDARD    1942                         { QUIRK_DATA_STANDARD_AUDIO(1) },
1943                         { QUIRK_DATA_STANDARD    1943                         { QUIRK_DATA_STANDARD_AUDIO(2) },
1944                         {                        1944                         {
1945                                 QUIRK_DATA_MI    1945                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {
1946                                         .out_    1946                                         .out_cables = 0x0001,
1947                                         .in_c    1947                                         .in_cables  = 0x0001
1948                                 }                1948                                 }
1949                         },                       1949                         },
1950                         QUIRK_COMPOSITE_END      1950                         QUIRK_COMPOSITE_END
1951                 }                                1951                 }
1952         }                                        1952         }
1953 },                                               1953 },
1954                                                  1954 
1955 /* TerraTec devices */                           1955 /* TerraTec devices */
1956 {                                                1956 {
1957         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012    1957         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
1958         QUIRK_DRIVER_INFO {                      1958         QUIRK_DRIVER_INFO {
1959                 .vendor_name = "TerraTec",       1959                 .vendor_name = "TerraTec",
1960                 .product_name = "PHASE 26",      1960                 .product_name = "PHASE 26",
1961                 QUIRK_DATA_STANDARD_MIDI(3)      1961                 QUIRK_DATA_STANDARD_MIDI(3)
1962         }                                        1962         }
1963 },                                               1963 },
1964 {                                                1964 {
1965         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013    1965         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013),
1966         QUIRK_DRIVER_INFO {                      1966         QUIRK_DRIVER_INFO {
1967                 .vendor_name = "TerraTec",       1967                 .vendor_name = "TerraTec",
1968                 .product_name = "PHASE 26",      1968                 .product_name = "PHASE 26",
1969                 QUIRK_DATA_STANDARD_MIDI(3)      1969                 QUIRK_DATA_STANDARD_MIDI(3)
1970         }                                        1970         }
1971 },                                               1971 },
1972 {                                                1972 {
1973         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014    1973         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014),
1974         QUIRK_DRIVER_INFO {                      1974         QUIRK_DRIVER_INFO {
1975                 .vendor_name = "TerraTec",       1975                 .vendor_name = "TerraTec",
1976                 .product_name = "PHASE 26",      1976                 .product_name = "PHASE 26",
1977                 QUIRK_DATA_STANDARD_MIDI(3)      1977                 QUIRK_DATA_STANDARD_MIDI(3)
1978         }                                        1978         }
1979 },                                               1979 },
1980 {                                                1980 {
1981         USB_DEVICE(0x0ccd, 0x0035),              1981         USB_DEVICE(0x0ccd, 0x0035),
1982         QUIRK_DRIVER_INFO {                      1982         QUIRK_DRIVER_INFO {
1983                 .vendor_name = "Miditech",       1983                 .vendor_name = "Miditech",
1984                 .product_name = "Play'n Roll"    1984                 .product_name = "Play'n Roll",
1985                 .ifnum = 0,                      1985                 .ifnum = 0,
1986                 .type = QUIRK_MIDI_CME           1986                 .type = QUIRK_MIDI_CME
1987         }                                        1987         }
1988 },                                               1988 },
1989                                                  1989 
1990 /* Stanton ScratchAmp */                         1990 /* Stanton ScratchAmp */
1991 { USB_DEVICE(0x103d, 0x0100) },                  1991 { USB_DEVICE(0x103d, 0x0100) },
1992 { USB_DEVICE(0x103d, 0x0101) },                  1992 { USB_DEVICE(0x103d, 0x0101) },
1993                                                  1993 
1994 /* Novation EMS devices */                       1994 /* Novation EMS devices */
1995 {                                                1995 {
1996         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001    1996         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001),
1997         QUIRK_DRIVER_INFO {                      1997         QUIRK_DRIVER_INFO {
1998                 .vendor_name = "Novation",       1998                 .vendor_name = "Novation",
1999                 .product_name = "ReMOTE Audio    1999                 .product_name = "ReMOTE Audio/XStation",
2000                 .ifnum = 4,                      2000                 .ifnum = 4,
2001                 .type = QUIRK_MIDI_NOVATION      2001                 .type = QUIRK_MIDI_NOVATION
2002         }                                        2002         }
2003 },                                               2003 },
2004 {                                                2004 {
2005         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002    2005         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002),
2006         QUIRK_DRIVER_INFO {                      2006         QUIRK_DRIVER_INFO {
2007                 .vendor_name = "Novation",       2007                 .vendor_name = "Novation",
2008                 .product_name = "Speedio",       2008                 .product_name = "Speedio",
2009                 .ifnum = 3,                      2009                 .ifnum = 3,
2010                 .type = QUIRK_MIDI_NOVATION      2010                 .type = QUIRK_MIDI_NOVATION
2011         }                                        2011         }
2012 },                                               2012 },
2013 {                                                2013 {
2014         USB_DEVICE(0x1235, 0x000a),              2014         USB_DEVICE(0x1235, 0x000a),
2015         QUIRK_DRIVER_INFO {                      2015         QUIRK_DRIVER_INFO {
2016                 /* .vendor_name = "Novation",    2016                 /* .vendor_name = "Novation", */
2017                 /* .product_name = "Nocturn",    2017                 /* .product_name = "Nocturn", */
2018                 QUIRK_DATA_RAW_BYTES(0)          2018                 QUIRK_DATA_RAW_BYTES(0)
2019         }                                        2019         }
2020 },                                               2020 },
2021 {                                                2021 {
2022         USB_DEVICE(0x1235, 0x000e),              2022         USB_DEVICE(0x1235, 0x000e),
2023         QUIRK_DRIVER_INFO {                      2023         QUIRK_DRIVER_INFO {
2024                 /* .vendor_name = "Novation",    2024                 /* .vendor_name = "Novation", */
2025                 /* .product_name = "Launchpad    2025                 /* .product_name = "Launchpad", */
2026                 QUIRK_DATA_RAW_BYTES(0)          2026                 QUIRK_DATA_RAW_BYTES(0)
2027         }                                        2027         }
2028 },                                               2028 },
2029 {                                                2029 {
2030         USB_DEVICE(0x1235, 0x0010),              2030         USB_DEVICE(0x1235, 0x0010),
2031         QUIRK_DRIVER_INFO {                      2031         QUIRK_DRIVER_INFO {
2032                 .vendor_name = "Focusrite",      2032                 .vendor_name = "Focusrite",
2033                 .product_name = "Saffire 6 US    2033                 .product_name = "Saffire 6 USB",
2034                 QUIRK_DATA_COMPOSITE {           2034                 QUIRK_DATA_COMPOSITE {
2035                         { QUIRK_DATA_STANDARD    2035                         { QUIRK_DATA_STANDARD_MIXER(0) },
2036                         {                        2036                         {
2037                                 QUIRK_DATA_AU    2037                                 QUIRK_DATA_AUDIOFORMAT(0) {
2038                                         .form    2038                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2039                                         .chan    2039                                         .channels = 4,
2040                                         .ifac    2040                                         .iface = 0,
2041                                         .alts    2041                                         .altsetting = 1,
2042                                         .alts    2042                                         .altset_idx = 1,
2043                                         .attr    2043                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2044                                         .endp    2044                                         .endpoint = 0x01,
2045                                         .ep_a    2045                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2046                                         .data    2046                                         .datainterval = 1,
2047                                         .maxp    2047                                         .maxpacksize = 0x024c,
2048                                         .rate    2048                                         .rates = SNDRV_PCM_RATE_44100 |
2049                                                  2049                                                  SNDRV_PCM_RATE_48000,
2050                                         .rate    2050                                         .rate_min = 44100,
2051                                         .rate    2051                                         .rate_max = 48000,
2052                                         .nr_r    2052                                         .nr_rates = 2,
2053                                         .rate    2053                                         .rate_table = (unsigned int[]) {
2054                                                  2054                                                 44100, 48000
2055                                         },       2055                                         },
2056                                         .sync    2056                                         .sync_ep = 0x82,
2057                                         .sync    2057                                         .sync_iface = 0,
2058                                         .sync    2058                                         .sync_altsetting = 1,
2059                                         .sync    2059                                         .sync_ep_idx = 1,
2060                                         .impl    2060                                         .implicit_fb = 1,
2061                                 }                2061                                 }
2062                         },                       2062                         },
2063                         {                        2063                         {
2064                                 QUIRK_DATA_AU    2064                                 QUIRK_DATA_AUDIOFORMAT(0) {
2065                                         .form    2065                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2066                                         .chan    2066                                         .channels = 2,
2067                                         .ifac    2067                                         .iface = 0,
2068                                         .alts    2068                                         .altsetting = 1,
2069                                         .alts    2069                                         .altset_idx = 1,
2070                                         .attr    2070                                         .attributes = 0,
2071                                         .endp    2071                                         .endpoint = 0x82,
2072                                         .ep_i    2072                                         .ep_idx = 1,
2073                                         .ep_a    2073                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2074                                         .data    2074                                         .datainterval = 1,
2075                                         .maxp    2075                                         .maxpacksize = 0x0126,
2076                                         .rate    2076                                         .rates = SNDRV_PCM_RATE_44100 |
2077                                                  2077                                                  SNDRV_PCM_RATE_48000,
2078                                         .rate    2078                                         .rate_min = 44100,
2079                                         .rate    2079                                         .rate_max = 48000,
2080                                         .nr_r    2080                                         .nr_rates = 2,
2081                                         .rate    2081                                         .rate_table = (unsigned int[]) {
2082                                                  2082                                                 44100, 48000
2083                                         }        2083                                         }
2084                                 }                2084                                 }
2085                         },                       2085                         },
2086                         { QUIRK_DATA_RAW_BYTE    2086                         { QUIRK_DATA_RAW_BYTES(1) },
2087                         QUIRK_COMPOSITE_END      2087                         QUIRK_COMPOSITE_END
2088                 }                                2088                 }
2089         }                                        2089         }
2090 },                                               2090 },
2091 {                                                2091 {
2092         USB_DEVICE(0x1235, 0x0018),              2092         USB_DEVICE(0x1235, 0x0018),
2093         QUIRK_DRIVER_INFO {                      2093         QUIRK_DRIVER_INFO {
2094                 .vendor_name = "Novation",       2094                 .vendor_name = "Novation",
2095                 .product_name = "Twitch",        2095                 .product_name = "Twitch",
2096                 QUIRK_DATA_COMPOSITE {           2096                 QUIRK_DATA_COMPOSITE {
2097                         {                        2097                         {
2098                                 QUIRK_DATA_AU    2098                                 QUIRK_DATA_AUDIOFORMAT(0) {
2099                                         .form    2099                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2100                                         .chan    2100                                         .channels = 4,
2101                                         .ifac    2101                                         .iface = 0,
2102                                         .alts    2102                                         .altsetting = 1,
2103                                         .alts    2103                                         .altset_idx = 1,
2104                                         .attr    2104                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2105                                         .endp    2105                                         .endpoint = 0x01,
2106                                         .ep_a    2106                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2107                                         .rate    2107                                         .rates = SNDRV_PCM_RATE_44100 |
2108                                                  2108                                                  SNDRV_PCM_RATE_48000,
2109                                         .rate    2109                                         .rate_min = 44100,
2110                                         .rate    2110                                         .rate_max = 48000,
2111                                         .nr_r    2111                                         .nr_rates = 2,
2112                                         .rate    2112                                         .rate_table = (unsigned int[]) {
2113                                                  2113                                                 44100, 48000
2114                                         }        2114                                         }
2115                                 }                2115                                 }
2116                         },                       2116                         },
2117                         { QUIRK_DATA_RAW_BYTE    2117                         { QUIRK_DATA_RAW_BYTES(1) },
2118                         QUIRK_COMPOSITE_END      2118                         QUIRK_COMPOSITE_END
2119                 }                                2119                 }
2120         }                                        2120         }
2121 },                                               2121 },
2122 {                                                2122 {
2123         USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661    2123         USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661),
2124         QUIRK_DRIVER_INFO {                      2124         QUIRK_DRIVER_INFO {
2125                 .vendor_name = "Novation",       2125                 .vendor_name = "Novation",
2126                 .product_name = "ReMOTE25",      2126                 .product_name = "ReMOTE25",
2127                 .ifnum = 0,                      2127                 .ifnum = 0,
2128                 .type = QUIRK_MIDI_NOVATION      2128                 .type = QUIRK_MIDI_NOVATION
2129         }                                        2129         }
2130 },                                               2130 },
2131                                                  2131 
2132 /* Access Music devices */                       2132 /* Access Music devices */
2133 {                                                2133 {
2134         /* VirusTI Desktop */                    2134         /* VirusTI Desktop */
2135         USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815    2135         USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),
2136         QUIRK_DRIVER_INFO {                      2136         QUIRK_DRIVER_INFO {
2137                 QUIRK_DATA_COMPOSITE {           2137                 QUIRK_DATA_COMPOSITE {
2138                         {                        2138                         {
2139                                 QUIRK_DATA_MI    2139                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {
2140                                         .out_    2140                                         .out_cables = 0x0003,
2141                                         .in_c    2141                                         .in_cables  = 0x0003
2142                                 }                2142                                 }
2143                         },                       2143                         },
2144                         { QUIRK_DATA_IGNORE(4    2144                         { QUIRK_DATA_IGNORE(4) },
2145                         QUIRK_COMPOSITE_END      2145                         QUIRK_COMPOSITE_END
2146                 }                                2146                 }
2147         }                                        2147         }
2148 },                                               2148 },
2149                                                  2149 
2150 /* Native Instruments MK2 series */              2150 /* Native Instruments MK2 series */
2151 {                                                2151 {
2152         /* Komplete Audio 6 */                   2152         /* Komplete Audio 6 */
2153         .match_flags = USB_DEVICE_ID_MATCH_DE    2153         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2154         .idVendor = 0x17cc,                      2154         .idVendor = 0x17cc,
2155         .idProduct = 0x1000,                     2155         .idProduct = 0x1000,
2156 },                                               2156 },
2157 {                                                2157 {
2158         /* Traktor Audio 6 */                    2158         /* Traktor Audio 6 */
2159         .match_flags = USB_DEVICE_ID_MATCH_DE    2159         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2160         .idVendor = 0x17cc,                      2160         .idVendor = 0x17cc,
2161         .idProduct = 0x1010,                     2161         .idProduct = 0x1010,
2162 },                                               2162 },
2163 {                                                2163 {
2164         /* Traktor Audio 10 */                   2164         /* Traktor Audio 10 */
2165         .match_flags = USB_DEVICE_ID_MATCH_DE    2165         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2166         .idVendor = 0x17cc,                      2166         .idVendor = 0x17cc,
2167         .idProduct = 0x1020,                     2167         .idProduct = 0x1020,
2168 },                                               2168 },
2169                                                  2169 
2170 /* QinHeng devices */                            2170 /* QinHeng devices */
2171 {                                                2171 {
2172         USB_DEVICE(0x1a86, 0x752d),              2172         USB_DEVICE(0x1a86, 0x752d),
2173         QUIRK_DRIVER_INFO {                      2173         QUIRK_DRIVER_INFO {
2174                 .vendor_name = "QinHeng",        2174                 .vendor_name = "QinHeng",
2175                 .product_name = "CH345",         2175                 .product_name = "CH345",
2176                 .ifnum = 1,                      2176                 .ifnum = 1,
2177                 .type = QUIRK_MIDI_CH345         2177                 .type = QUIRK_MIDI_CH345
2178         }                                        2178         }
2179 },                                               2179 },
2180                                                  2180 
2181 /* KeithMcMillen Stringport */                   2181 /* KeithMcMillen Stringport */
2182 { USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: sho    2182 { USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: should be more restrictive matching */
2183                                                  2183 
2184 /* Miditech devices */                           2184 /* Miditech devices */
2185 {                                                2185 {
2186         USB_DEVICE(0x4752, 0x0011),              2186         USB_DEVICE(0x4752, 0x0011),
2187         QUIRK_DRIVER_INFO {                      2187         QUIRK_DRIVER_INFO {
2188                 .vendor_name = "Miditech",       2188                 .vendor_name = "Miditech",
2189                 .product_name = "Midistart-2"    2189                 .product_name = "Midistart-2",
2190                 .ifnum = 0,                      2190                 .ifnum = 0,
2191                 .type = QUIRK_MIDI_CME           2191                 .type = QUIRK_MIDI_CME
2192         }                                        2192         }
2193 },                                               2193 },
2194                                                  2194 
2195 /* Central Music devices */                      2195 /* Central Music devices */
2196 {                                                2196 {
2197         /* this ID used by both Miditech Midi    2197         /* this ID used by both Miditech MidiStudio-2 and CME UF-x */
2198         USB_DEVICE(0x7104, 0x2202),              2198         USB_DEVICE(0x7104, 0x2202),
2199         QUIRK_DRIVER_INFO {                      2199         QUIRK_DRIVER_INFO {
2200                 .ifnum = 0,                      2200                 .ifnum = 0,
2201                 .type = QUIRK_MIDI_CME           2201                 .type = QUIRK_MIDI_CME
2202         }                                        2202         }
2203 },                                               2203 },
2204                                                  2204 
2205 /* Digidesign Mbox */                            2205 /* Digidesign Mbox */
2206 {                                                2206 {
2207         /* Thanks to Clemens Ladisch <clemens    2207         /* Thanks to Clemens Ladisch <clemens@ladisch.de> */
2208         USB_DEVICE(0x0dba, 0x1000),              2208         USB_DEVICE(0x0dba, 0x1000),
2209         QUIRK_DRIVER_INFO {                      2209         QUIRK_DRIVER_INFO {
2210                 .vendor_name = "Digidesign",     2210                 .vendor_name = "Digidesign",
2211                 .product_name = "MBox",          2211                 .product_name = "MBox",
2212                 QUIRK_DATA_COMPOSITE{            2212                 QUIRK_DATA_COMPOSITE{
2213                         { QUIRK_DATA_STANDARD    2213                         { QUIRK_DATA_STANDARD_MIXER(0) },
2214                         {                        2214                         {
2215                                 QUIRK_DATA_AU    2215                                 QUIRK_DATA_AUDIOFORMAT(1) {
2216                                         .form    2216                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2217                                         .chan    2217                                         .channels = 2,
2218                                         .ifac    2218                                         .iface = 1,
2219                                         .alts    2219                                         .altsetting = 1,
2220                                         .alts    2220                                         .altset_idx = 1,
2221                                         .attr    2221                                         .attributes = 0x4,
2222                                         .endp    2222                                         .endpoint = 0x02,
2223                                         .ep_a    2223                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2224                                                  2224                                                 USB_ENDPOINT_SYNC_SYNC,
2225                                         .maxp    2225                                         .maxpacksize = 0x130,
2226                                         .rate    2226                                         .rates = SNDRV_PCM_RATE_48000,
2227                                         .rate    2227                                         .rate_min = 48000,
2228                                         .rate    2228                                         .rate_max = 48000,
2229                                         .nr_r    2229                                         .nr_rates = 1,
2230                                         .rate    2230                                         .rate_table = (unsigned int[]) {
2231                                                  2231                                                 48000
2232                                         }        2232                                         }
2233                                 }                2233                                 }
2234                         },                       2234                         },
2235                         {                        2235                         {
2236                                 QUIRK_DATA_AU    2236                                 QUIRK_DATA_AUDIOFORMAT(1) {
2237                                         .form    2237                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2238                                         .chan    2238                                         .channels = 2,
2239                                         .ifac    2239                                         .iface = 1,
2240                                         .alts    2240                                         .altsetting = 1,
2241                                         .alts    2241                                         .altset_idx = 1,
2242                                         .attr    2242                                         .attributes = 0x4,
2243                                         .endp    2243                                         .endpoint = 0x81,
2244                                         .ep_i    2244                                         .ep_idx = 1,
2245                                         .ep_a    2245                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2246                                                  2246                                                 USB_ENDPOINT_SYNC_ASYNC,
2247                                         .maxp    2247                                         .maxpacksize = 0x130,
2248                                         .rate    2248                                         .rates = SNDRV_PCM_RATE_48000,
2249                                         .rate    2249                                         .rate_min = 48000,
2250                                         .rate    2250                                         .rate_max = 48000,
2251                                         .nr_r    2251                                         .nr_rates = 1,
2252                                         .rate    2252                                         .rate_table = (unsigned int[]) {
2253                                                  2253                                                 48000
2254                                         }        2254                                         }
2255                                 }                2255                                 }
2256                         },                       2256                         },
2257                         QUIRK_COMPOSITE_END      2257                         QUIRK_COMPOSITE_END
2258                 }                                2258                 }
2259         }                                        2259         }
2260 },                                               2260 },
2261                                                  2261 
2262 /* DIGIDESIGN MBOX 2 */                          2262 /* DIGIDESIGN MBOX 2 */
2263 {                                                2263 {
2264         USB_DEVICE(0x0dba, 0x3000),              2264         USB_DEVICE(0x0dba, 0x3000),
2265         QUIRK_DRIVER_INFO {                      2265         QUIRK_DRIVER_INFO {
2266                 .vendor_name = "Digidesign",     2266                 .vendor_name = "Digidesign",
2267                 .product_name = "Mbox 2",        2267                 .product_name = "Mbox 2",
2268                 QUIRK_DATA_COMPOSITE {           2268                 QUIRK_DATA_COMPOSITE {
2269                         { QUIRK_DATA_IGNORE(0    2269                         { QUIRK_DATA_IGNORE(0) },
2270                         { QUIRK_DATA_IGNORE(1    2270                         { QUIRK_DATA_IGNORE(1) },
2271                         {                        2271                         {
2272                                 QUIRK_DATA_AU    2272                                 QUIRK_DATA_AUDIOFORMAT(2) {
2273                                         .form    2273                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2274                                         .chan    2274                                         .channels = 2,
2275                                         .ifac    2275                                         .iface = 2,
2276                                         .alts    2276                                         .altsetting = 2,
2277                                         .alts    2277                                         .altset_idx = 1,
2278                                         .attr    2278                                         .attributes = 0x00,
2279                                         .endp    2279                                         .endpoint = 0x03,
2280                                         .ep_a    2280                                         .ep_attr = USB_ENDPOINT_SYNC_ASYNC,
2281                                         .rate    2281                                         .rates = SNDRV_PCM_RATE_48000,
2282                                         .rate    2282                                         .rate_min = 48000,
2283                                         .rate    2283                                         .rate_max = 48000,
2284                                         .nr_r    2284                                         .nr_rates = 1,
2285                                         .rate    2285                                         .rate_table = (unsigned int[]) {
2286                                                  2286                                                 48000
2287                                         }        2287                                         }
2288                                 }                2288                                 }
2289                         },                       2289                         },
2290                         { QUIRK_DATA_IGNORE(3    2290                         { QUIRK_DATA_IGNORE(3) },
2291                         {                        2291                         {
2292                                 QUIRK_DATA_AU    2292                                 QUIRK_DATA_AUDIOFORMAT(4) {
2293                                         .form    2293                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2294                                         .chan    2294                                         .channels = 2,
2295                                         .ifac    2295                                         .iface = 4,
2296                                         .alts    2296                                         .altsetting = 2,
2297                                         .alts    2297                                         .altset_idx = 1,
2298                                         .attr    2298                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2299                                         .endp    2299                                         .endpoint = 0x85,
2300                                         .ep_a    2300                                         .ep_attr = USB_ENDPOINT_SYNC_SYNC,
2301                                         .rate    2301                                         .rates = SNDRV_PCM_RATE_48000,
2302                                         .rate    2302                                         .rate_min = 48000,
2303                                         .rate    2303                                         .rate_max = 48000,
2304                                         .nr_r    2304                                         .nr_rates = 1,
2305                                         .rate    2305                                         .rate_table = (unsigned int[]) {
2306                                                  2306                                                 48000
2307                                         }        2307                                         }
2308                                 }                2308                                 }
2309                         },                       2309                         },
2310                         { QUIRK_DATA_IGNORE(5    2310                         { QUIRK_DATA_IGNORE(5) },
2311                         {                        2311                         {
2312                                 QUIRK_DATA_MI    2312                                 QUIRK_DATA_MIDI_MIDIMAN(6) {
2313                                         .out_    2313                                         .out_ep =  0x02,
2314                                         .out_    2314                                         .out_cables = 0x0001,
2315                                         .in_e    2315                                         .in_ep = 0x81,
2316                                         .in_i    2316                                         .in_interval = 0x01,
2317                                         .in_c    2317                                         .in_cables = 0x0001
2318                                 }                2318                                 }
2319                         },                       2319                         },
2320                         QUIRK_COMPOSITE_END      2320                         QUIRK_COMPOSITE_END
2321                 }                                2321                 }
2322         }                                        2322         }
2323 },                                               2323 },
2324 /* DIGIDESIGN MBOX 3 */                          2324 /* DIGIDESIGN MBOX 3 */
2325 {                                                2325 {
2326         USB_DEVICE(0x0dba, 0x5000),              2326         USB_DEVICE(0x0dba, 0x5000),
2327         QUIRK_DRIVER_INFO {                      2327         QUIRK_DRIVER_INFO {
2328                 .vendor_name = "Digidesign",     2328                 .vendor_name = "Digidesign",
2329                 .product_name = "Mbox 3",        2329                 .product_name = "Mbox 3",
2330                 QUIRK_DATA_COMPOSITE {           2330                 QUIRK_DATA_COMPOSITE {
2331                         { QUIRK_DATA_IGNORE(0    2331                         { QUIRK_DATA_IGNORE(0) },
2332                         { QUIRK_DATA_IGNORE(1    2332                         { QUIRK_DATA_IGNORE(1) },
2333                         {                        2333                         {
2334                                 QUIRK_DATA_AU    2334                                 QUIRK_DATA_AUDIOFORMAT(2) {
2335                                         .form    2335                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2336                                         .fmt_    2336                                         .fmt_bits = 24,
2337                                         .chan    2337                                         .channels = 4,
2338                                         .ifac    2338                                         .iface = 2,
2339                                         .alts    2339                                         .altsetting = 1,
2340                                         .alts    2340                                         .altset_idx = 1,
2341                                         .attr    2341                                         .attributes = 0x00,
2342                                         .endp    2342                                         .endpoint = USB_RECIP_INTERFACE | USB_DIR_OUT,
2343                                         .ep_a    2343                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2344                                                  2344                                                 USB_ENDPOINT_SYNC_ASYNC,
2345                                         .rate    2345                                         .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |
2346                                                  2346                                                         SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
2347                                         .rate    2347                                         .rate_min = 44100,
2348                                         .rate    2348                                         .rate_max = 96000,
2349                                         .nr_r    2349                                         .nr_rates = 4,
2350                                         .rate    2350                                         .rate_table = (unsigned int[]) {
2351                                                  2351                                                 44100, 48000, 88200, 96000
2352                                         },       2352                                         },
2353                                         .sync    2353                                         .sync_ep = USB_RECIP_INTERFACE | USB_DIR_IN,
2354                                         .sync    2354                                         .sync_iface = 3,
2355                                         .sync    2355                                         .sync_altsetting = 1,
2356                                         .sync    2356                                         .sync_ep_idx = 1,
2357                                         .impl    2357                                         .implicit_fb = 1,
2358                                 }                2358                                 }
2359                         },                       2359                         },
2360                         {                        2360                         {
2361                                 QUIRK_DATA_AU    2361                                 QUIRK_DATA_AUDIOFORMAT(3) {
2362                                         .form    2362                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2363                                         .fmt_    2363                                         .fmt_bits = 24,
2364                                         .chan    2364                                         .channels = 4,
2365                                         .ifac    2365                                         .iface = 3,
2366                                         .alts    2366                                         .altsetting = 1,
2367                                         .alts    2367                                         .altset_idx = 1,
2368                                         .attr    2368                                         .attributes = 0x00,
2369                                         .endp    2369                                         .endpoint = USB_RECIP_INTERFACE | USB_DIR_IN,
2370                                         .ep_a    2370                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2371                                                  2371                                                 USB_ENDPOINT_SYNC_ASYNC,
2372                                         .maxp    2372                                         .maxpacksize = 0x009c,
2373                                         .rate    2373                                         .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |
2374                                                  2374                                                         SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
2375                                         .rate    2375                                         .rate_min = 44100,
2376                                         .rate    2376                                         .rate_max = 96000,
2377                                         .nr_r    2377                                         .nr_rates = 4,
2378                                         .rate    2378                                         .rate_table = (unsigned int[]) {
2379                                                  2379                                                 44100, 48000, 88200, 96000
2380                                         },       2380                                         },
2381                                         .impl    2381                                         .implicit_fb = 0,
2382                                 }                2382                                 }
2383                         },                       2383                         },
2384                         {                        2384                         {
2385                                 QUIRK_DATA_MI    2385                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) {
2386                                         .out_    2386                                         .out_cables = 0x0001,
2387                                         .in_c    2387                                         .in_cables  = 0x0001
2388                                 }                2388                                 }
2389                         },                       2389                         },
2390                         QUIRK_COMPOSITE_END      2390                         QUIRK_COMPOSITE_END
2391                 }                                2391                 }
2392         }                                        2392         }
2393 },                                               2393 },
2394 {                                                2394 {
2395         /* Tascam US122 MKII - playback-only     2395         /* Tascam US122 MKII - playback-only support */
2396         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021    2396         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021),
2397         QUIRK_DRIVER_INFO {                      2397         QUIRK_DRIVER_INFO {
2398                 .vendor_name = "TASCAM",         2398                 .vendor_name = "TASCAM",
2399                 .product_name = "US122 MKII",    2399                 .product_name = "US122 MKII",
2400                 QUIRK_DATA_COMPOSITE {           2400                 QUIRK_DATA_COMPOSITE {
2401                         { QUIRK_DATA_IGNORE(0    2401                         { QUIRK_DATA_IGNORE(0) },
2402                         {                        2402                         {
2403                                 QUIRK_DATA_AU    2403                                 QUIRK_DATA_AUDIOFORMAT(1) {
2404                                         .form    2404                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2405                                         .chan    2405                                         .channels = 2,
2406                                         .ifac    2406                                         .iface = 1,
2407                                         .alts    2407                                         .altsetting = 1,
2408                                         .alts    2408                                         .altset_idx = 1,
2409                                         .attr    2409                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2410                                         .endp    2410                                         .endpoint = 0x02,
2411                                         .ep_a    2411                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2412                                         .rate    2412                                         .rates = SNDRV_PCM_RATE_44100 |
2413                                                  2413                                                  SNDRV_PCM_RATE_48000 |
2414                                                  2414                                                  SNDRV_PCM_RATE_88200 |
2415                                                  2415                                                  SNDRV_PCM_RATE_96000,
2416                                         .rate    2416                                         .rate_min = 44100,
2417                                         .rate    2417                                         .rate_max = 96000,
2418                                         .nr_r    2418                                         .nr_rates = 4,
2419                                         .rate    2419                                         .rate_table = (unsigned int[]) {
2420                                                  2420                                                 44100, 48000, 88200, 96000
2421                                         }        2421                                         }
2422                                 }                2422                                 }
2423                         },                       2423                         },
2424                         QUIRK_COMPOSITE_END      2424                         QUIRK_COMPOSITE_END
2425                 }                                2425                 }
2426         }                                        2426         }
2427 },                                               2427 },
2428                                                  2428 
2429 /* Denon DN-X1600 */                             2429 /* Denon DN-X1600 */
2430 {                                                2430 {
2431         USB_AUDIO_DEVICE(0x154e, 0x500e),        2431         USB_AUDIO_DEVICE(0x154e, 0x500e),
2432         QUIRK_DRIVER_INFO {                      2432         QUIRK_DRIVER_INFO {
2433                 .vendor_name = "Denon",          2433                 .vendor_name = "Denon",
2434                 .product_name = "DN-X1600",      2434                 .product_name = "DN-X1600",
2435                 QUIRK_DATA_COMPOSITE{            2435                 QUIRK_DATA_COMPOSITE{
2436                         { QUIRK_DATA_IGNORE(0    2436                         { QUIRK_DATA_IGNORE(0) },
2437                         {                        2437                         {
2438                                 QUIRK_DATA_AU    2438                                 QUIRK_DATA_AUDIOFORMAT(1) {
2439                                         .form    2439                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2440                                         .chan    2440                                         .channels = 8,
2441                                         .ifac    2441                                         .iface = 1,
2442                                         .alts    2442                                         .altsetting = 1,
2443                                         .alts    2443                                         .altset_idx = 1,
2444                                         .attr    2444                                         .attributes = 0x0,
2445                                         .endp    2445                                         .endpoint = 0x01,
2446                                         .ep_a    2446                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2447                                                  2447                                                 USB_ENDPOINT_SYNC_ADAPTIVE,
2448                                         .maxp    2448                                         .maxpacksize = 0x138,
2449                                         .rate    2449                                         .rates = SNDRV_PCM_RATE_48000,
2450                                         .rate    2450                                         .rate_min = 48000,
2451                                         .rate    2451                                         .rate_max = 48000,
2452                                         .nr_r    2452                                         .nr_rates = 1,
2453                                         .rate    2453                                         .rate_table = (unsigned int[]) {
2454                                                  2454                                                 48000
2455                                         }        2455                                         }
2456                                 }                2456                                 }
2457                         },                       2457                         },
2458                         {                        2458                         {
2459                                 QUIRK_DATA_AU    2459                                 QUIRK_DATA_AUDIOFORMAT(2) {
2460                                         .form    2460                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2461                                         .chan    2461                                         .channels = 8,
2462                                         .ifac    2462                                         .iface = 2,
2463                                         .alts    2463                                         .altsetting = 1,
2464                                         .alts    2464                                         .altset_idx = 1,
2465                                         .attr    2465                                         .attributes = 0x0,
2466                                         .endp    2466                                         .endpoint = 0x85,
2467                                         .ep_a    2467                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2468                                                  2468                                                 USB_ENDPOINT_SYNC_ADAPTIVE,
2469                                         .maxp    2469                                         .maxpacksize = 0x138,
2470                                         .rate    2470                                         .rates = SNDRV_PCM_RATE_48000,
2471                                         .rate    2471                                         .rate_min = 48000,
2472                                         .rate    2472                                         .rate_max = 48000,
2473                                         .nr_r    2473                                         .nr_rates = 1,
2474                                         .rate    2474                                         .rate_table = (unsigned int[]) {
2475                                                  2475                                                 48000
2476                                         }        2476                                         }
2477                                 }                2477                                 }
2478                         },                       2478                         },
2479                         { QUIRK_DATA_STANDARD    2479                         { QUIRK_DATA_STANDARD_MIDI(4) },
2480                         QUIRK_COMPOSITE_END      2480                         QUIRK_COMPOSITE_END
2481                 }                                2481                 }
2482         }                                        2482         }
2483 },                                               2483 },
2484                                                  2484 
2485 /* Microsoft XboxLive Headset/Xbox Communicat    2485 /* Microsoft XboxLive Headset/Xbox Communicator */
2486 {                                                2486 {
2487         USB_DEVICE(0x045e, 0x0283),              2487         USB_DEVICE(0x045e, 0x0283),
2488         .bInterfaceClass = USB_CLASS_PER_INTE    2488         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2489         QUIRK_DRIVER_INFO {                      2489         QUIRK_DRIVER_INFO {
2490                 .vendor_name = "Microsoft",      2490                 .vendor_name = "Microsoft",
2491                 .product_name = "XboxLive Hea    2491                 .product_name = "XboxLive Headset/Xbox Communicator",
2492                 QUIRK_DATA_COMPOSITE {           2492                 QUIRK_DATA_COMPOSITE {
2493                         {                        2493                         {
2494                                 /* playback *    2494                                 /* playback */
2495                                 QUIRK_DATA_AU    2495                                 QUIRK_DATA_AUDIOFORMAT(0) {
2496                                         .form    2496                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2497                                         .chan    2497                                         .channels = 1,
2498                                         .ifac    2498                                         .iface = 0,
2499                                         .alts    2499                                         .altsetting = 0,
2500                                         .alts    2500                                         .altset_idx = 0,
2501                                         .attr    2501                                         .attributes = 0,
2502                                         .endp    2502                                         .endpoint = 0x04,
2503                                         .ep_a    2503                                         .ep_attr = 0x05,
2504                                         .rate    2504                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2505                                         .rate    2505                                         .rate_min = 22050,
2506                                         .rate    2506                                         .rate_max = 22050
2507                                 }                2507                                 }
2508                         },                       2508                         },
2509                         {                        2509                         {
2510                                 /* capture */    2510                                 /* capture */
2511                                 QUIRK_DATA_AU    2511                                 QUIRK_DATA_AUDIOFORMAT(1) {
2512                                         .form    2512                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2513                                         .chan    2513                                         .channels = 1,
2514                                         .ifac    2514                                         .iface = 1,
2515                                         .alts    2515                                         .altsetting = 0,
2516                                         .alts    2516                                         .altset_idx = 0,
2517                                         .attr    2517                                         .attributes = 0,
2518                                         .endp    2518                                         .endpoint = 0x85,
2519                                         .ep_a    2519                                         .ep_attr = 0x05,
2520                                         .rate    2520                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2521                                         .rate    2521                                         .rate_min = 16000,
2522                                         .rate    2522                                         .rate_max = 16000
2523                                 }                2523                                 }
2524                         },                       2524                         },
2525                         QUIRK_COMPOSITE_END      2525                         QUIRK_COMPOSITE_END
2526                 }                                2526                 }
2527         }                                        2527         }
2528 },                                               2528 },
2529                                                  2529 
2530 /* Reloop Play */                                2530 /* Reloop Play */
2531 {                                                2531 {
2532         USB_DEVICE(0x200c, 0x100b),              2532         USB_DEVICE(0x200c, 0x100b),
2533         .bInterfaceClass = USB_CLASS_PER_INTE    2533         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2534         QUIRK_DRIVER_INFO {                      2534         QUIRK_DRIVER_INFO {
2535                 QUIRK_DATA_COMPOSITE {           2535                 QUIRK_DATA_COMPOSITE {
2536                         { QUIRK_DATA_STANDARD    2536                         { QUIRK_DATA_STANDARD_MIXER(0) },
2537                         {                        2537                         {
2538                                 QUIRK_DATA_AU    2538                                 QUIRK_DATA_AUDIOFORMAT(1) {
2539                                         .form    2539                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2540                                         .chan    2540                                         .channels = 4,
2541                                         .ifac    2541                                         .iface = 1,
2542                                         .alts    2542                                         .altsetting = 1,
2543                                         .alts    2543                                         .altset_idx = 1,
2544                                         .attr    2544                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2545                                         .endp    2545                                         .endpoint = 0x01,
2546                                         .ep_a    2546                                         .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,
2547                                         .rate    2547                                         .rates = SNDRV_PCM_RATE_44100 |
2548                                                  2548                                                  SNDRV_PCM_RATE_48000,
2549                                         .rate    2549                                         .rate_min = 44100,
2550                                         .rate    2550                                         .rate_max = 48000,
2551                                         .nr_r    2551                                         .nr_rates = 2,
2552                                         .rate    2552                                         .rate_table = (unsigned int[]) {
2553                                                  2553                                                 44100, 48000
2554                                         }        2554                                         }
2555                                 }                2555                                 }
2556                         },                       2556                         },
2557                         QUIRK_COMPOSITE_END      2557                         QUIRK_COMPOSITE_END
2558                 }                                2558                 }
2559         }                                        2559         }
2560 },                                               2560 },
2561                                                  2561 
2562 {                                                2562 {
2563         /*                                       2563         /*
2564          * ZOOM R16/24 in audio interface mod    2564          * ZOOM R16/24 in audio interface mode.
2565          * Playback requires an extra four by    2565          * Playback requires an extra four byte LE length indicator
2566          * at the start of each isochronous p    2566          * at the start of each isochronous packet. This quirk is
2567          * enabled in create_standard_audio_q    2567          * enabled in create_standard_audio_quirk().
2568          */                                      2568          */
2569         USB_DEVICE(0x1686, 0x00dd),              2569         USB_DEVICE(0x1686, 0x00dd),
2570         QUIRK_DRIVER_INFO {                      2570         QUIRK_DRIVER_INFO {
2571                 QUIRK_DATA_COMPOSITE {           2571                 QUIRK_DATA_COMPOSITE {
2572                         { QUIRK_DATA_STANDARD    2572                         { QUIRK_DATA_STANDARD_AUDIO(1) }, /* Playback  */
2573                         { QUIRK_DATA_STANDARD    2573                         { QUIRK_DATA_STANDARD_AUDIO(2) }, /* Capture */
2574                         { QUIRK_DATA_STANDARD    2574                         { QUIRK_DATA_STANDARD_MIDI(3) }, /* Midi */
2575                         QUIRK_COMPOSITE_END      2575                         QUIRK_COMPOSITE_END
2576                 }                                2576                 }
2577         }                                        2577         }
2578 },                                               2578 },
2579                                                  2579 
2580 {                                                2580 {
2581         /*                                       2581         /*
2582          * Some USB MIDI devices don't have a    2582          * Some USB MIDI devices don't have an audio control interface,
2583          * so we have to grab MIDI streaming     2583          * so we have to grab MIDI streaming interfaces here.
2584          */                                      2584          */
2585         .match_flags = USB_DEVICE_ID_MATCH_IN    2585         .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
2586                        USB_DEVICE_ID_MATCH_IN    2586                        USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2587         .bInterfaceClass = USB_CLASS_AUDIO,      2587         .bInterfaceClass = USB_CLASS_AUDIO,
2588         .bInterfaceSubClass = USB_SUBCLASS_MI    2588         .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
2589         QUIRK_DRIVER_INFO {                      2589         QUIRK_DRIVER_INFO {
2590                 QUIRK_DATA_STANDARD_MIDI(QUIR    2590                 QUIRK_DATA_STANDARD_MIDI(QUIRK_ANY_INTERFACE)
2591         }                                        2591         }
2592 },                                               2592 },
2593                                                  2593 
2594 /* Rane SL-1 */                                  2594 /* Rane SL-1 */
2595 {                                                2595 {
2596         USB_DEVICE(0x13e5, 0x0001),              2596         USB_DEVICE(0x13e5, 0x0001),
2597         QUIRK_DRIVER_INFO {                      2597         QUIRK_DRIVER_INFO {
2598                 QUIRK_DATA_STANDARD_AUDIO(QUI    2598                 QUIRK_DATA_STANDARD_AUDIO(QUIRK_ANY_INTERFACE)
2599         }                                        2599         }
2600 },                                               2600 },
2601                                                  2601 
2602 /* disabled due to regression for other devic    2602 /* disabled due to regression for other devices;
2603  * see https://bugzilla.kernel.org/show_bug.c    2603  * see https://bugzilla.kernel.org/show_bug.cgi?id=199905
2604  */                                              2604  */
2605 #if 0                                            2605 #if 0
2606 {                                                2606 {
2607         /*                                       2607         /*
2608          * Nura's first gen headphones use Ca    2608          * Nura's first gen headphones use Cambridge Silicon Radio's vendor
2609          * ID, but it looks like the product     2609          * ID, but it looks like the product ID actually is only for Nura.
2610          * The capture interface does not wor    2610          * The capture interface does not work at all (even on Windows),
2611          * and only the 48 kHz sample rate wo    2611          * and only the 48 kHz sample rate works for the playback interface.
2612          */                                      2612          */
2613         USB_DEVICE(0x0a12, 0x1243),              2613         USB_DEVICE(0x0a12, 0x1243),
2614         QUIRK_DRIVER_INFO {                      2614         QUIRK_DRIVER_INFO {
2615                 QUIRK_DATA_COMPOSITE {           2615                 QUIRK_DATA_COMPOSITE {
2616                         { QUIRK_DATA_STANDARD    2616                         { QUIRK_DATA_STANDARD_MIXER(0) },
2617                         { QUIRK_DATA_IGNORE(1    2617                         { QUIRK_DATA_IGNORE(1) }, /* Capture */
2618                         /* Playback */           2618                         /* Playback */
2619                         {                        2619                         {
2620                                 QUIRK_DATA_AU    2620                                 QUIRK_DATA_AUDIOFORMAT(2) {
2621                                         .form    2621                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2622                                         .chan    2622                                         .channels = 2,
2623                                         .ifac    2623                                         .iface = 2,
2624                                         .alts    2624                                         .altsetting = 1,
2625                                         .alts    2625                                         .altset_idx = 1,
2626                                         .attr    2626                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2627                                                  2627                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2628                                         .endp    2628                                         .endpoint = 0x03,
2629                                         .ep_a    2629                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2630                                         .rate    2630                                         .rates = SNDRV_PCM_RATE_48000,
2631                                         .rate    2631                                         .rate_min = 48000,
2632                                         .rate    2632                                         .rate_max = 48000,
2633                                         .nr_r    2633                                         .nr_rates = 1,
2634                                         .rate    2634                                         .rate_table = (unsigned int[]) {
2635                                                  2635                                                 48000
2636                                         }        2636                                         }
2637                                 }                2637                                 }
2638                         },                       2638                         },
2639                         QUIRK_COMPOSITE_END      2639                         QUIRK_COMPOSITE_END
2640                 }                                2640                 }
2641         }                                        2641         }
2642 },                                               2642 },
2643 #endif /* disabled */                            2643 #endif /* disabled */
2644                                                  2644 
2645 {                                                2645 {
2646         /*                                       2646         /*
2647          * Bower's & Wilkins PX headphones on    2647          * Bower's & Wilkins PX headphones only support the 48 kHz sample rate
2648          * even though it advertises more. Th    2648          * even though it advertises more. The capture interface doesn't work
2649          * even on windows.                      2649          * even on windows.
2650          */                                      2650          */
2651         USB_DEVICE(0x19b5, 0x0021),              2651         USB_DEVICE(0x19b5, 0x0021),
2652         QUIRK_DRIVER_INFO {                      2652         QUIRK_DRIVER_INFO {
2653                 QUIRK_DATA_COMPOSITE {           2653                 QUIRK_DATA_COMPOSITE {
2654                         { QUIRK_DATA_STANDARD    2654                         { QUIRK_DATA_STANDARD_MIXER(0) },
2655                         /* Playback */           2655                         /* Playback */
2656                         {                        2656                         {
2657                                 QUIRK_DATA_AU    2657                                 QUIRK_DATA_AUDIOFORMAT(1) {
2658                                         .form    2658                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2659                                         .chan    2659                                         .channels = 2,
2660                                         .ifac    2660                                         .iface = 1,
2661                                         .alts    2661                                         .altsetting = 1,
2662                                         .alts    2662                                         .altset_idx = 1,
2663                                         .attr    2663                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2664                                                  2664                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2665                                         .endp    2665                                         .endpoint = 0x03,
2666                                         .ep_a    2666                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2667                                         .rate    2667                                         .rates = SNDRV_PCM_RATE_48000,
2668                                         .rate    2668                                         .rate_min = 48000,
2669                                         .rate    2669                                         .rate_max = 48000,
2670                                         .nr_r    2670                                         .nr_rates = 1,
2671                                         .rate    2671                                         .rate_table = (unsigned int[]) {
2672                                                  2672                                                 48000
2673                                         }        2673                                         }
2674                                 }                2674                                 }
2675                         },                       2675                         },
2676                         QUIRK_COMPOSITE_END      2676                         QUIRK_COMPOSITE_END
2677                 }                                2677                 }
2678         }                                        2678         }
2679 },                                               2679 },
2680 /* MOTU Microbook II */                          2680 /* MOTU Microbook II */
2681 {                                                2681 {
2682         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004    2682         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004),
2683         QUIRK_DRIVER_INFO {                      2683         QUIRK_DRIVER_INFO {
2684                 .vendor_name = "MOTU",           2684                 .vendor_name = "MOTU",
2685                 .product_name = "MicroBookII"    2685                 .product_name = "MicroBookII",
2686                 QUIRK_DATA_COMPOSITE {           2686                 QUIRK_DATA_COMPOSITE {
2687                         { QUIRK_DATA_STANDARD    2687                         { QUIRK_DATA_STANDARD_MIXER(0) },
2688                         {                        2688                         {
2689                                 QUIRK_DATA_AU    2689                                 QUIRK_DATA_AUDIOFORMAT(0) {
2690                                         .form    2690                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2691                                         .chan    2691                                         .channels = 6,
2692                                         .ifac    2692                                         .iface = 0,
2693                                         .alts    2693                                         .altsetting = 1,
2694                                         .alts    2694                                         .altset_idx = 1,
2695                                         .attr    2695                                         .attributes = 0,
2696                                         .endp    2696                                         .endpoint = 0x84,
2697                                         .rate    2697                                         .rates = SNDRV_PCM_RATE_96000,
2698                                         .ep_a    2698                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2699                                                  2699                                                    USB_ENDPOINT_SYNC_ASYNC,
2700                                         .rate    2700                                         .rate_min = 96000,
2701                                         .rate    2701                                         .rate_max = 96000,
2702                                         .nr_r    2702                                         .nr_rates = 1,
2703                                         .maxp    2703                                         .maxpacksize = 0x00d8,
2704                                         .rate    2704                                         .rate_table = (unsigned int[]) {
2705                                                  2705                                                 96000
2706                                         }        2706                                         }
2707                                 }                2707                                 }
2708                         },                       2708                         },
2709                         {                        2709                         {
2710                                 QUIRK_DATA_AU    2710                                 QUIRK_DATA_AUDIOFORMAT(0) {
2711                                         .form    2711                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2712                                         .chan    2712                                         .channels = 8,
2713                                         .ifac    2713                                         .iface = 0,
2714                                         .alts    2714                                         .altsetting = 1,
2715                                         .alts    2715                                         .altset_idx = 1,
2716                                         .attr    2716                                         .attributes = 0,
2717                                         .endp    2717                                         .endpoint = 0x03,
2718                                         .ep_i    2718                                         .ep_idx = 1,
2719                                         .rate    2719                                         .rates = SNDRV_PCM_RATE_96000,
2720                                         .ep_a    2720                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2721                                                  2721                                                    USB_ENDPOINT_SYNC_ASYNC,
2722                                         .rate    2722                                         .rate_min = 96000,
2723                                         .rate    2723                                         .rate_max = 96000,
2724                                         .nr_r    2724                                         .nr_rates = 1,
2725                                         .maxp    2725                                         .maxpacksize = 0x0120,
2726                                         .rate    2726                                         .rate_table = (unsigned int[]) {
2727                                                  2727                                                 96000
2728                                         }        2728                                         }
2729                                 }                2729                                 }
2730                         },                       2730                         },
2731                         QUIRK_COMPOSITE_END      2731                         QUIRK_COMPOSITE_END
2732                 }                                2732                 }
2733         }                                        2733         }
2734 },                                               2734 },
2735 {                                                2735 {
2736         /*                                       2736         /*
2737          * PIONEER DJ DDJ-SX3                    2737          * PIONEER DJ DDJ-SX3
2738          * PCM is 12 channels out, 10 channel    2738          * PCM is 12 channels out, 10 channels in @ 44.1 fixed
2739          * interface 0, vendor class alt sett    2739          * interface 0, vendor class alt setting 1 for endpoints 5 and 0x86
2740          * The feedback for the output is the    2740          * The feedback for the output is the input.
2741          */                                      2741          */
2742         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023    2742         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023),
2743         QUIRK_DRIVER_INFO {                      2743         QUIRK_DRIVER_INFO {
2744                 QUIRK_DATA_COMPOSITE {           2744                 QUIRK_DATA_COMPOSITE {
2745                         {                        2745                         {
2746                                 QUIRK_DATA_AU    2746                                 QUIRK_DATA_AUDIOFORMAT(0) {
2747                                         .form    2747                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2748                                         .chan    2748                                         .channels = 12,
2749                                         .ifac    2749                                         .iface = 0,
2750                                         .alts    2750                                         .altsetting = 1,
2751                                         .alts    2751                                         .altset_idx = 1,
2752                                         .endp    2752                                         .endpoint = 0x05,
2753                                         .ep_a    2753                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2754                                                  2754                                                    USB_ENDPOINT_SYNC_ASYNC,
2755                                         .rate    2755                                         .rates = SNDRV_PCM_RATE_44100,
2756                                         .rate    2756                                         .rate_min = 44100,
2757                                         .rate    2757                                         .rate_max = 44100,
2758                                         .nr_r    2758                                         .nr_rates = 1,
2759                                         .rate    2759                                         .rate_table = (unsigned int[]) { 44100 }
2760                                 }                2760                                 }
2761                         },                       2761                         },
2762                         {                        2762                         {
2763                                 QUIRK_DATA_AU    2763                                 QUIRK_DATA_AUDIOFORMAT(0) {
2764                                         .form    2764                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2765                                         .chan    2765                                         .channels = 10,
2766                                         .ifac    2766                                         .iface = 0,
2767                                         .alts    2767                                         .altsetting = 1,
2768                                         .alts    2768                                         .altset_idx = 1,
2769                                         .endp    2769                                         .endpoint = 0x86,
2770                                         .ep_i    2770                                         .ep_idx = 1,
2771                                         .ep_a    2771                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2772                                                  2772                                                  USB_ENDPOINT_SYNC_ASYNC|
2773                                                  2773                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2774                                         .rate    2774                                         .rates = SNDRV_PCM_RATE_44100,
2775                                         .rate    2775                                         .rate_min = 44100,
2776                                         .rate    2776                                         .rate_max = 44100,
2777                                         .nr_r    2777                                         .nr_rates = 1,
2778                                         .rate    2778                                         .rate_table = (unsigned int[]) { 44100 }
2779                                 }                2779                                 }
2780                         },                       2780                         },
2781                         QUIRK_COMPOSITE_END      2781                         QUIRK_COMPOSITE_END
2782                 }                                2782                 }
2783         }                                        2783         }
2784 },                                               2784 },
2785 {                                                2785 {
2786         /*                                       2786         /*
2787          * Pioneer DJ DJM-250MK2                 2787          * Pioneer DJ DJM-250MK2
2788          * PCM is 8 channels out @ 48 fixed (    2788          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
2789          * and 8 channels in @ 48 fixed (endp    2789          * and 8 channels in @ 48 fixed (endpoint 0x82).
2790          *                                       2790          *
2791          * Both playback and recording is wor    2791          * Both playback and recording is working, even simultaneously.
2792          *                                       2792          *
2793          * Playback channels could be mapped     2793          * Playback channels could be mapped to:
2794          *  - CH1                                2794          *  - CH1
2795          *  - CH2                                2795          *  - CH2
2796          *  - AUX                                2796          *  - AUX
2797          *                                       2797          *
2798          * Recording channels could be mapped    2798          * Recording channels could be mapped to:
2799          *  - Post CH1 Fader                     2799          *  - Post CH1 Fader
2800          *  - Post CH2 Fader                     2800          *  - Post CH2 Fader
2801          *  - Cross Fader A                      2801          *  - Cross Fader A
2802          *  - Cross Fader B                      2802          *  - Cross Fader B
2803          *  - MIC                                2803          *  - MIC
2804          *  - AUX                                2804          *  - AUX
2805          *  - REC OUT                            2805          *  - REC OUT
2806          *                                       2806          *
2807          * There is remaining problem with re    2807          * There is remaining problem with recording directly from PHONO/LINE.
2808          * If we map a channel to:               2808          * If we map a channel to:
2809          *  - CH1 Control Tone PHONO             2809          *  - CH1 Control Tone PHONO
2810          *  - CH1 Control Tone LINE              2810          *  - CH1 Control Tone LINE
2811          *  - CH2 Control Tone PHONO             2811          *  - CH2 Control Tone PHONO
2812          *  - CH2 Control Tone LINE              2812          *  - CH2 Control Tone LINE
2813          * it is silent.                         2813          * it is silent.
2814          * There is no signal even on other o    2814          * There is no signal even on other operating systems with official drivers.
2815          * The signal appears only when a sup    2815          * The signal appears only when a supported application is started.
2816          * This needs to be investigated yet.    2816          * This needs to be investigated yet...
2817          * (there is quite a lot communicatio    2817          * (there is quite a lot communication on the USB in both directions)
2818          *                                       2818          *
2819          * In current version this mixer coul    2819          * In current version this mixer could be used for playback
2820          * and for recording from vinyls (thr    2820          * and for recording from vinyls (through Post CH* Fader)
2821          * but not for DVS (Digital Vinyl Sys    2821          * but not for DVS (Digital Vinyl Systems) like in Mixxx.
2822          */                                      2822          */
2823         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017    2823         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),
2824         QUIRK_DRIVER_INFO {                      2824         QUIRK_DRIVER_INFO {
2825                 QUIRK_DATA_COMPOSITE {           2825                 QUIRK_DATA_COMPOSITE {
2826                         {                        2826                         {
2827                                 QUIRK_DATA_AU    2827                                 QUIRK_DATA_AUDIOFORMAT(0) {
2828                                         .form    2828                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2829                                         .chan    2829                                         .channels = 8, // outputs
2830                                         .ifac    2830                                         .iface = 0,
2831                                         .alts    2831                                         .altsetting = 1,
2832                                         .alts    2832                                         .altset_idx = 1,
2833                                         .endp    2833                                         .endpoint = 0x01,
2834                                         .ep_a    2834                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2835                                                  2835                                                 USB_ENDPOINT_SYNC_ASYNC,
2836                                         .rate    2836                                         .rates = SNDRV_PCM_RATE_48000,
2837                                         .rate    2837                                         .rate_min = 48000,
2838                                         .rate    2838                                         .rate_max = 48000,
2839                                         .nr_r    2839                                         .nr_rates = 1,
2840                                         .rate    2840                                         .rate_table = (unsigned int[]) { 48000 }
2841                                         }        2841                                         }
2842                         },                       2842                         },
2843                         {                        2843                         {
2844                                 QUIRK_DATA_AU    2844                                 QUIRK_DATA_AUDIOFORMAT(0) {
2845                                         .form    2845                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2846                                         .chan    2846                                         .channels = 8, // inputs
2847                                         .ifac    2847                                         .iface = 0,
2848                                         .alts    2848                                         .altsetting = 1,
2849                                         .alts    2849                                         .altset_idx = 1,
2850                                         .endp    2850                                         .endpoint = 0x82,
2851                                         .ep_i    2851                                         .ep_idx = 1,
2852                                         .ep_a    2852                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2853                                                  2853                                                 USB_ENDPOINT_SYNC_ASYNC|
2854                                                  2854                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
2855                                         .rate    2855                                         .rates = SNDRV_PCM_RATE_48000,
2856                                         .rate    2856                                         .rate_min = 48000,
2857                                         .rate    2857                                         .rate_max = 48000,
2858                                         .nr_r    2858                                         .nr_rates = 1,
2859                                         .rate    2859                                         .rate_table = (unsigned int[]) { 48000 }
2860                                 }                2860                                 }
2861                         },                       2861                         },
2862                         QUIRK_COMPOSITE_END      2862                         QUIRK_COMPOSITE_END
2863                 }                                2863                 }
2864         }                                        2864         }
2865 },                                               2865 },
2866 {                                                2866 {
2867         /*                                       2867         /*
2868          * PIONEER DJ DDJ-RB                     2868          * PIONEER DJ DDJ-RB
2869          * PCM is 4 channels out, 2 dummy cha    2869          * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed
2870          * The feedback for the output is the    2870          * The feedback for the output is the dummy input.
2871          */                                      2871          */
2872         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e    2872         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),
2873         QUIRK_DRIVER_INFO {                      2873         QUIRK_DRIVER_INFO {
2874                 QUIRK_DATA_COMPOSITE {           2874                 QUIRK_DATA_COMPOSITE {
2875                         {                        2875                         {
2876                                 QUIRK_DATA_AU    2876                                 QUIRK_DATA_AUDIOFORMAT(0) {
2877                                         .form    2877                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2878                                         .chan    2878                                         .channels = 4,
2879                                         .ifac    2879                                         .iface = 0,
2880                                         .alts    2880                                         .altsetting = 1,
2881                                         .alts    2881                                         .altset_idx = 1,
2882                                         .endp    2882                                         .endpoint = 0x01,
2883                                         .ep_a    2883                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2884                                                  2884                                                    USB_ENDPOINT_SYNC_ASYNC,
2885                                         .rate    2885                                         .rates = SNDRV_PCM_RATE_44100,
2886                                         .rate    2886                                         .rate_min = 44100,
2887                                         .rate    2887                                         .rate_max = 44100,
2888                                         .nr_r    2888                                         .nr_rates = 1,
2889                                         .rate    2889                                         .rate_table = (unsigned int[]) { 44100 }
2890                                 }                2890                                 }
2891                         },                       2891                         },
2892                         {                        2892                         {
2893                                 QUIRK_DATA_AU    2893                                 QUIRK_DATA_AUDIOFORMAT(0) {
2894                                         .form    2894                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2895                                         .chan    2895                                         .channels = 2,
2896                                         .ifac    2896                                         .iface = 0,
2897                                         .alts    2897                                         .altsetting = 1,
2898                                         .alts    2898                                         .altset_idx = 1,
2899                                         .endp    2899                                         .endpoint = 0x82,
2900                                         .ep_i    2900                                         .ep_idx = 1,
2901                                         .ep_a    2901                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2902                                                  2902                                                  USB_ENDPOINT_SYNC_ASYNC|
2903                                                  2903                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2904                                         .rate    2904                                         .rates = SNDRV_PCM_RATE_44100,
2905                                         .rate    2905                                         .rate_min = 44100,
2906                                         .rate    2906                                         .rate_max = 44100,
2907                                         .nr_r    2907                                         .nr_rates = 1,
2908                                         .rate    2908                                         .rate_table = (unsigned int[]) { 44100 }
2909                                 }                2909                                 }
2910                         },                       2910                         },
2911                         QUIRK_COMPOSITE_END      2911                         QUIRK_COMPOSITE_END
2912                 }                                2912                 }
2913         }                                        2913         }
2914 },                                               2914 },
2915                                                  2915 
2916 {                                                2916 {
2917         /*                                       2917         /*
2918          * PIONEER DJ DDJ-RR                     2918          * PIONEER DJ DDJ-RR
2919          * PCM is 6 channels out & 4 channels    2919          * PCM is 6 channels out & 4 channels in @ 44.1 fixed
2920          */                                      2920          */
2921         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d    2921         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d),
2922         QUIRK_DRIVER_INFO {                      2922         QUIRK_DRIVER_INFO {
2923                 QUIRK_DATA_COMPOSITE {           2923                 QUIRK_DATA_COMPOSITE {
2924                         {                        2924                         {
2925                                 QUIRK_DATA_AU    2925                                 QUIRK_DATA_AUDIOFORMAT(0) {
2926                                         .form    2926                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2927                                         .chan    2927                                         .channels = 6, //Master, Headphones & Booth
2928                                         .ifac    2928                                         .iface = 0,
2929                                         .alts    2929                                         .altsetting = 1,
2930                                         .alts    2930                                         .altset_idx = 1,
2931                                         .endp    2931                                         .endpoint = 0x01,
2932                                         .ep_a    2932                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2933                                                  2933                                                    USB_ENDPOINT_SYNC_ASYNC,
2934                                         .rate    2934                                         .rates = SNDRV_PCM_RATE_44100,
2935                                         .rate    2935                                         .rate_min = 44100,
2936                                         .rate    2936                                         .rate_max = 44100,
2937                                         .nr_r    2937                                         .nr_rates = 1,
2938                                         .rate    2938                                         .rate_table = (unsigned int[]) { 44100 }
2939                                 }                2939                                 }
2940                         },                       2940                         },
2941                         {                        2941                         {
2942                                 QUIRK_DATA_AU    2942                                 QUIRK_DATA_AUDIOFORMAT(0) {
2943                                         .form    2943                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2944                                         .chan    2944                                         .channels = 4, //2x RCA inputs (CH1 & CH2)
2945                                         .ifac    2945                                         .iface = 0,
2946                                         .alts    2946                                         .altsetting = 1,
2947                                         .alts    2947                                         .altset_idx = 1,
2948                                         .endp    2948                                         .endpoint = 0x82,
2949                                         .ep_i    2949                                         .ep_idx = 1,
2950                                         .ep_a    2950                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2951                                                  2951                                                  USB_ENDPOINT_SYNC_ASYNC|
2952                                                  2952                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2953                                         .rate    2953                                         .rates = SNDRV_PCM_RATE_44100,
2954                                         .rate    2954                                         .rate_min = 44100,
2955                                         .rate    2955                                         .rate_max = 44100,
2956                                         .nr_r    2956                                         .nr_rates = 1,
2957                                         .rate    2957                                         .rate_table = (unsigned int[]) { 44100 }
2958                                 }                2958                                 }
2959                         },                       2959                         },
2960                         QUIRK_COMPOSITE_END      2960                         QUIRK_COMPOSITE_END
2961                 }                                2961                 }
2962         }                                        2962         }
2963 },                                               2963 },
2964                                                  2964 
2965 {                                                2965 {
2966         /*                                       2966         /*
2967          * PIONEER DJ DDJ-SR2                    2967          * PIONEER DJ DDJ-SR2
2968          * PCM is 4 channels out, 6 channels     2968          * PCM is 4 channels out, 6 channels in @ 44.1 fixed
2969          * The Feedback for the output is the    2969          * The Feedback for the output is the input
2970          */                                      2970          */
2971         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e    2971         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e),
2972         QUIRK_DRIVER_INFO {                      2972         QUIRK_DRIVER_INFO {
2973                 QUIRK_DATA_COMPOSITE {           2973                 QUIRK_DATA_COMPOSITE {
2974                         {                        2974                         {
2975                                 QUIRK_DATA_AU    2975                                 QUIRK_DATA_AUDIOFORMAT(0) {
2976                                         .form    2976                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2977                                         .chan    2977                                         .channels = 4,
2978                                         .ifac    2978                                         .iface = 0,
2979                                         .alts    2979                                         .altsetting = 1,
2980                                         .alts    2980                                         .altset_idx = 1,
2981                                         .endp    2981                                         .endpoint = 0x01,
2982                                         .ep_a    2982                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2983                                                  2983                                                 USB_ENDPOINT_SYNC_ASYNC,
2984                                         .rate    2984                                         .rates = SNDRV_PCM_RATE_44100,
2985                                         .rate    2985                                         .rate_min = 44100,
2986                                         .rate    2986                                         .rate_max = 44100,
2987                                         .nr_r    2987                                         .nr_rates = 1,
2988                                         .rate    2988                                         .rate_table = (unsigned int[]) { 44100 }
2989                                 }                2989                                 }
2990                         },                       2990                         },
2991                         {                        2991                         {
2992                                 QUIRK_DATA_AU    2992                                 QUIRK_DATA_AUDIOFORMAT(0) {
2993                                         .form    2993                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2994                                         .chan    2994                                         .channels = 6,
2995                                         .ifac    2995                                         .iface = 0,
2996                                         .alts    2996                                         .altsetting = 1,
2997                                         .alts    2997                                         .altset_idx = 1,
2998                                         .endp    2998                                         .endpoint = 0x82,
2999                                         .ep_i    2999                                         .ep_idx = 1,
3000                                         .ep_a    3000                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3001                                                  3001                                                 USB_ENDPOINT_SYNC_ASYNC|
3002                                         USB_E    3002                                         USB_ENDPOINT_USAGE_IMPLICIT_FB,
3003                                         .rate    3003                                         .rates = SNDRV_PCM_RATE_44100,
3004                                         .rate    3004                                         .rate_min = 44100,
3005                                         .rate    3005                                         .rate_max = 44100,
3006                                         .nr_r    3006                                         .nr_rates = 1,
3007                                         .rate    3007                                         .rate_table = (unsigned int[]) { 44100 }
3008                                 }                3008                                 }
3009                         },                       3009                         },
3010                         QUIRK_COMPOSITE_END      3010                         QUIRK_COMPOSITE_END
3011                 }                                3011                 }
3012         }                                        3012         }
3013 },                                               3013 },
3014                                                  3014 
3015 {                                                3015 {
3016         /*                                       3016         /*
3017          * Pioneer DJ DJM-900NXS2                3017          * Pioneer DJ DJM-900NXS2
3018          * 10 channels playback & 12 channels    3018          * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE
3019          */                                      3019          */
3020         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a    3020         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a),
3021         QUIRK_DRIVER_INFO {                      3021         QUIRK_DRIVER_INFO {
3022                 QUIRK_DATA_COMPOSITE {           3022                 QUIRK_DATA_COMPOSITE {
3023                         {                        3023                         {
3024                                 QUIRK_DATA_AU    3024                                 QUIRK_DATA_AUDIOFORMAT(0) {
3025                                         .form    3025                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3026                                         .chan    3026                                         .channels = 10,
3027                                         .ifac    3027                                         .iface = 0,
3028                                         .alts    3028                                         .altsetting = 1,
3029                                         .alts    3029                                         .altset_idx = 1,
3030                                         .endp    3030                                         .endpoint = 0x01,
3031                                         .ep_a    3031                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3032                                             U    3032                                             USB_ENDPOINT_SYNC_ASYNC,
3033                                         .rate    3033                                         .rates = SNDRV_PCM_RATE_44100|
3034                                             S    3034                                             SNDRV_PCM_RATE_48000|
3035                                             S    3035                                             SNDRV_PCM_RATE_96000,
3036                                         .rate    3036                                         .rate_min = 44100,
3037                                         .rate    3037                                         .rate_max = 96000,
3038                                         .nr_r    3038                                         .nr_rates = 3,
3039                                         .rate    3039                                         .rate_table = (unsigned int[]) {
3040                                                  3040                                                 44100, 48000, 96000
3041                                         }        3041                                         }
3042                                 }                3042                                 }
3043                         },                       3043                         },
3044                         {                        3044                         {
3045                                 QUIRK_DATA_AU    3045                                 QUIRK_DATA_AUDIOFORMAT(0) {
3046                                         .form    3046                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3047                                         .chan    3047                                         .channels = 12,
3048                                         .ifac    3048                                         .iface = 0,
3049                                         .alts    3049                                         .altsetting = 1,
3050                                         .alts    3050                                         .altset_idx = 1,
3051                                         .endp    3051                                         .endpoint = 0x82,
3052                                         .ep_i    3052                                         .ep_idx = 1,
3053                                         .ep_a    3053                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3054                                             U    3054                                             USB_ENDPOINT_SYNC_ASYNC|
3055                                             U    3055                                             USB_ENDPOINT_USAGE_IMPLICIT_FB,
3056                                         .rate    3056                                         .rates = SNDRV_PCM_RATE_44100|
3057                                             S    3057                                             SNDRV_PCM_RATE_48000|
3058                                             S    3058                                             SNDRV_PCM_RATE_96000,
3059                                         .rate    3059                                         .rate_min = 44100,
3060                                         .rate    3060                                         .rate_max = 96000,
3061                                         .nr_r    3061                                         .nr_rates = 3,
3062                                         .rate    3062                                         .rate_table = (unsigned int[]) {
3063                                                  3063                                                 44100, 48000, 96000
3064                                         }        3064                                         }
3065                                 }                3065                                 }
3066                         },                       3066                         },
3067                         QUIRK_COMPOSITE_END      3067                         QUIRK_COMPOSITE_END
3068                 }                                3068                 }
3069         }                                        3069         }
3070 },                                               3070 },
3071                                                  3071 
3072 {                                                3072 {
3073         /*                                       3073         /*
3074          * PIONEER DJ DDJ-800                    3074          * PIONEER DJ DDJ-800
3075          * PCM is 6 channels out, 6 channels     3075          * PCM is 6 channels out, 6 channels in @ 44.1 fixed
3076          * The Feedback for the output is the    3076          * The Feedback for the output is the input
3077          */                                      3077          */
3078         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029    3078         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029),
3079         QUIRK_DRIVER_INFO {                      3079         QUIRK_DRIVER_INFO {
3080                 QUIRK_DATA_COMPOSITE {           3080                 QUIRK_DATA_COMPOSITE {
3081                         {                        3081                         {
3082                                 QUIRK_DATA_AU    3082                                 QUIRK_DATA_AUDIOFORMAT(0) {
3083                                         .form    3083                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3084                                         .chan    3084                                         .channels = 6,
3085                                         .ifac    3085                                         .iface = 0,
3086                                         .alts    3086                                         .altsetting = 1,
3087                                         .alts    3087                                         .altset_idx = 1,
3088                                         .endp    3088                                         .endpoint = 0x01,
3089                                         .ep_a    3089                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3090                                                  3090                                                 USB_ENDPOINT_SYNC_ASYNC,
3091                                         .rate    3091                                         .rates = SNDRV_PCM_RATE_44100,
3092                                         .rate    3092                                         .rate_min = 44100,
3093                                         .rate    3093                                         .rate_max = 44100,
3094                                         .nr_r    3094                                         .nr_rates = 1,
3095                                         .rate    3095                                         .rate_table = (unsigned int[]) { 44100 }
3096                                 }                3096                                 }
3097                         },                       3097                         },
3098                         {                        3098                         {
3099                                 QUIRK_DATA_AU    3099                                 QUIRK_DATA_AUDIOFORMAT(0) {
3100                                         .form    3100                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3101                                         .chan    3101                                         .channels = 6,
3102                                         .ifac    3102                                         .iface = 0,
3103                                         .alts    3103                                         .altsetting = 1,
3104                                         .alts    3104                                         .altset_idx = 1,
3105                                         .endp    3105                                         .endpoint = 0x82,
3106                                         .ep_i    3106                                         .ep_idx = 1,
3107                                         .ep_a    3107                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3108                                                  3108                                                 USB_ENDPOINT_SYNC_ASYNC|
3109                                         USB_E    3109                                         USB_ENDPOINT_USAGE_IMPLICIT_FB,
3110                                         .rate    3110                                         .rates = SNDRV_PCM_RATE_44100,
3111                                         .rate    3111                                         .rate_min = 44100,
3112                                         .rate    3112                                         .rate_max = 44100,
3113                                         .nr_r    3113                                         .nr_rates = 1,
3114                                         .rate    3114                                         .rate_table = (unsigned int[]) { 44100 }
3115                                 }                3115                                 }
3116                         },                       3116                         },
3117                         QUIRK_COMPOSITE_END      3117                         QUIRK_COMPOSITE_END
3118                 }                                3118                 }
3119         }                                        3119         }
3120 },                                               3120 },
3121                                                  3121 
3122 /*                                               3122 /*
3123  * MacroSilicon MS2100/MS2106 based AV captur    3123  * MacroSilicon MS2100/MS2106 based AV capture cards
3124  *                                               3124  *
3125  * These claim 96kHz 1ch in the descriptors,     3125  * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3126  * They also need QUIRK_FLAG_ALIGN_TRANSFER,     3126  * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if
3127  * they pretend to be 96kHz mono as a workaro    3127  * they pretend to be 96kHz mono as a workaround for stereo being broken
3128  * by that...                                    3128  * by that...
3129  *                                               3129  *
3130  * They also have an issue with initial strea    3130  * They also have an issue with initial stream alignment that causes the
3131  * channels to be swapped and out of phase, w    3131  * channels to be swapped and out of phase, which is dealt with in quirks.c.
3132  */                                              3132  */
3133 {                                                3133 {
3134         USB_AUDIO_DEVICE(0x534d, 0x0021),        3134         USB_AUDIO_DEVICE(0x534d, 0x0021),
3135         QUIRK_DRIVER_INFO {                      3135         QUIRK_DRIVER_INFO {
3136                 .vendor_name = "MacroSilicon"    3136                 .vendor_name = "MacroSilicon",
3137                 .product_name = "MS210x",        3137                 .product_name = "MS210x",
3138                 QUIRK_DATA_COMPOSITE {           3138                 QUIRK_DATA_COMPOSITE {
3139                         { QUIRK_DATA_STANDARD    3139                         { QUIRK_DATA_STANDARD_MIXER(2) },
3140                         {                        3140                         {
3141                                 QUIRK_DATA_AU    3141                                 QUIRK_DATA_AUDIOFORMAT(3) {
3142                                         .form    3142                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
3143                                         .chan    3143                                         .channels = 2,
3144                                         .ifac    3144                                         .iface = 3,
3145                                         .alts    3145                                         .altsetting = 1,
3146                                         .alts    3146                                         .altset_idx = 1,
3147                                         .attr    3147                                         .attributes = 0,
3148                                         .endp    3148                                         .endpoint = 0x82,
3149                                         .ep_a    3149                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3150                                                  3150                                                 USB_ENDPOINT_SYNC_ASYNC,
3151                                         .rate    3151                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
3152                                         .rate    3152                                         .rate_min = 48000,
3153                                         .rate    3153                                         .rate_max = 48000,
3154                                 }                3154                                 }
3155                         },                       3155                         },
3156                         QUIRK_COMPOSITE_END      3156                         QUIRK_COMPOSITE_END
3157                 }                                3157                 }
3158         }                                        3158         }
3159 },                                               3159 },
3160                                                  3160 
3161 /*                                               3161 /*
3162  * MacroSilicon MS2109 based HDMI capture car    3162  * MacroSilicon MS2109 based HDMI capture cards
3163  *                                               3163  *
3164  * These claim 96kHz 1ch in the descriptors,     3164  * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3165  * They also need QUIRK_FLAG_ALIGN_TRANSFER,     3165  * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if
3166  * they pretend to be 96kHz mono as a workaro    3166  * they pretend to be 96kHz mono as a workaround for stereo being broken
3167  * by that...                                    3167  * by that...
3168  *                                               3168  *
3169  * They also have an issue with initial strea    3169  * They also have an issue with initial stream alignment that causes the
3170  * channels to be swapped and out of phase, w    3170  * channels to be swapped and out of phase, which is dealt with in quirks.c.
3171  */                                              3171  */
3172 {                                                3172 {
3173         USB_AUDIO_DEVICE(0x534d, 0x2109),        3173         USB_AUDIO_DEVICE(0x534d, 0x2109),
3174         QUIRK_DRIVER_INFO {                      3174         QUIRK_DRIVER_INFO {
3175                 .vendor_name = "MacroSilicon"    3175                 .vendor_name = "MacroSilicon",
3176                 .product_name = "MS2109",        3176                 .product_name = "MS2109",
3177                 QUIRK_DATA_COMPOSITE {           3177                 QUIRK_DATA_COMPOSITE {
3178                         { QUIRK_DATA_STANDARD    3178                         { QUIRK_DATA_STANDARD_MIXER(2) },
3179                         {                        3179                         {
3180                                 QUIRK_DATA_AU    3180                                 QUIRK_DATA_AUDIOFORMAT(3) {
3181                                         .form    3181                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
3182                                         .chan    3182                                         .channels = 2,
3183                                         .ifac    3183                                         .iface = 3,
3184                                         .alts    3184                                         .altsetting = 1,
3185                                         .alts    3185                                         .altset_idx = 1,
3186                                         .attr    3186                                         .attributes = 0,
3187                                         .endp    3187                                         .endpoint = 0x82,
3188                                         .ep_a    3188                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3189                                                  3189                                                 USB_ENDPOINT_SYNC_ASYNC,
3190                                         .rate    3190                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
3191                                         .rate    3191                                         .rate_min = 48000,
3192                                         .rate    3192                                         .rate_max = 48000,
3193                                 }                3193                                 }
3194                         },                       3194                         },
3195                         QUIRK_COMPOSITE_END      3195                         QUIRK_COMPOSITE_END
3196                 }                                3196                 }
3197         }                                        3197         }
3198 },                                               3198 },
3199 {                                                3199 {
3200         /*                                       3200         /*
3201          * Pioneer DJ DJM-750                    3201          * Pioneer DJ DJM-750
3202          * 8 channels playback & 8 channels c    3202          * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE
3203          */                                      3203          */
3204         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f    3204         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),
3205         QUIRK_DRIVER_INFO {                      3205         QUIRK_DRIVER_INFO {
3206                 QUIRK_DATA_COMPOSITE {           3206                 QUIRK_DATA_COMPOSITE {
3207                         {                        3207                         {
3208                                 QUIRK_DATA_AU    3208                                 QUIRK_DATA_AUDIOFORMAT(0) {
3209                                         .form    3209                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3210                                         .chan    3210                                         .channels = 8,
3211                                         .ifac    3211                                         .iface = 0,
3212                                         .alts    3212                                         .altsetting = 1,
3213                                         .alts    3213                                         .altset_idx = 1,
3214                                         .endp    3214                                         .endpoint = 0x05,
3215                                         .ep_a    3215                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3216                                             U    3216                                             USB_ENDPOINT_SYNC_ASYNC,
3217                                         .rate    3217                                         .rates = SNDRV_PCM_RATE_44100|
3218                                                  3218                                                 SNDRV_PCM_RATE_48000|
3219                                                  3219                                                 SNDRV_PCM_RATE_96000,
3220                                         .rate    3220                                         .rate_min = 44100,
3221                                         .rate    3221                                         .rate_max = 96000,
3222                                         .nr_r    3222                                         .nr_rates = 3,
3223                                         .rate    3223                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3224                                 }                3224                                 }
3225                         },                       3225                         },
3226                         {                        3226                         {
3227                                 QUIRK_DATA_AU    3227                                 QUIRK_DATA_AUDIOFORMAT(0) {
3228                                         .form    3228                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3229                                         .chan    3229                                         .channels = 8,
3230                                         .ifac    3230                                         .iface = 0,
3231                                         .alts    3231                                         .altsetting = 1,
3232                                         .alts    3232                                         .altset_idx = 1,
3233                                         .endp    3233                                         .endpoint = 0x86,
3234                                         .ep_i    3234                                         .ep_idx = 1,
3235                                         .ep_a    3235                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3236                                                  3236                                                 USB_ENDPOINT_SYNC_ASYNC|
3237                                                  3237                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3238                                         .rate    3238                                         .rates = SNDRV_PCM_RATE_44100|
3239                                                  3239                                                 SNDRV_PCM_RATE_48000|
3240                                                  3240                                                 SNDRV_PCM_RATE_96000,
3241                                         .rate    3241                                         .rate_min = 44100,
3242                                         .rate    3242                                         .rate_max = 96000,
3243                                         .nr_r    3243                                         .nr_rates = 3,
3244                                         .rate    3244                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3245                                 }                3245                                 }
3246                         },                       3246                         },
3247                         QUIRK_COMPOSITE_END      3247                         QUIRK_COMPOSITE_END
3248                 }                                3248                 }
3249         }                                        3249         }
3250 },                                               3250 },
3251 {                                                3251 {
3252         /*                                       3252         /*
3253          * Pioneer DJ DJM-750MK2                 3253          * Pioneer DJ DJM-750MK2
3254          * 10 channels playback & 12 channels    3254          * 10 channels playback & 12 channels capture @ 48kHz S24LE
3255          */                                      3255          */
3256         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b    3256         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b),
3257         QUIRK_DRIVER_INFO {                      3257         QUIRK_DRIVER_INFO {
3258                 QUIRK_DATA_COMPOSITE {           3258                 QUIRK_DATA_COMPOSITE {
3259                         {                        3259                         {
3260                                 QUIRK_DATA_AU    3260                                 QUIRK_DATA_AUDIOFORMAT(0) {
3261                                         .form    3261                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3262                                         .chan    3262                                         .channels = 10,
3263                                         .ifac    3263                                         .iface = 0,
3264                                         .alts    3264                                         .altsetting = 1,
3265                                         .alts    3265                                         .altset_idx = 1,
3266                                         .endp    3266                                         .endpoint = 0x01,
3267                                         .ep_a    3267                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3268                                             U    3268                                             USB_ENDPOINT_SYNC_ASYNC,
3269                                         .rate    3269                                         .rates = SNDRV_PCM_RATE_48000,
3270                                         .rate    3270                                         .rate_min = 48000,
3271                                         .rate    3271                                         .rate_max = 48000,
3272                                         .nr_r    3272                                         .nr_rates = 1,
3273                                         .rate    3273                                         .rate_table = (unsigned int[]) {
3274                                                  3274                                                 48000
3275                                         }        3275                                         }
3276                                 }                3276                                 }
3277                         },                       3277                         },
3278                         {                        3278                         {
3279                                 QUIRK_DATA_AU    3279                                 QUIRK_DATA_AUDIOFORMAT(0) {
3280                                         .form    3280                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3281                                         .chan    3281                                         .channels = 12,
3282                                         .ifac    3282                                         .iface = 0,
3283                                         .alts    3283                                         .altsetting = 1,
3284                                         .alts    3284                                         .altset_idx = 1,
3285                                         .endp    3285                                         .endpoint = 0x82,
3286                                         .ep_i    3286                                         .ep_idx = 1,
3287                                         .ep_a    3287                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3288                                                  3288                                                 USB_ENDPOINT_SYNC_ASYNC|
3289                                                  3289                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3290                                         .rate    3290                                         .rates = SNDRV_PCM_RATE_48000,
3291                                         .rate    3291                                         .rate_min = 48000,
3292                                         .rate    3292                                         .rate_max = 48000,
3293                                         .nr_r    3293                                         .nr_rates = 1,
3294                                         .rate    3294                                         .rate_table = (unsigned int[]) { 48000 }
3295                                 }                3295                                 }
3296                         },                       3296                         },
3297                         QUIRK_COMPOSITE_END      3297                         QUIRK_COMPOSITE_END
3298                 }                                3298                 }
3299         }                                        3299         }
3300 },                                               3300 },
3301 {                                                3301 {
3302         /*                                       3302         /*
3303          * Pioneer DJ DJM-850                    3303          * Pioneer DJ DJM-850
3304          * 8 channels playback and 8 channels    3304          * 8 channels playback and 8 channels capture @ 44.1/48/96kHz S24LE
3305          * Playback on EP 0x05                   3305          * Playback on EP 0x05
3306          * Capture on EP 0x86                    3306          * Capture on EP 0x86
3307          */                                      3307          */
3308         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163    3308         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163),
3309         QUIRK_DRIVER_INFO {                      3309         QUIRK_DRIVER_INFO {
3310                 QUIRK_DATA_COMPOSITE {           3310                 QUIRK_DATA_COMPOSITE {
3311                         {                        3311                         {
3312                                 QUIRK_DATA_AU    3312                                 QUIRK_DATA_AUDIOFORMAT(0) {
3313                                         .form    3313                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3314                                         .chan    3314                                         .channels = 8,
3315                                         .ifac    3315                                         .iface = 0,
3316                                         .alts    3316                                         .altsetting = 1,
3317                                         .alts    3317                                         .altset_idx = 1,
3318                                         .endp    3318                                         .endpoint = 0x05,
3319                                         .ep_a    3319                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3320                                             U    3320                                             USB_ENDPOINT_SYNC_ASYNC|
3321                                                  3321                                                 USB_ENDPOINT_USAGE_DATA,
3322                                         .rate    3322                                         .rates = SNDRV_PCM_RATE_44100|
3323                                                  3323                                                 SNDRV_PCM_RATE_48000|
3324                                                  3324                                                 SNDRV_PCM_RATE_96000,
3325                                         .rate    3325                                         .rate_min = 44100,
3326                                         .rate    3326                                         .rate_max = 96000,
3327                                         .nr_r    3327                                         .nr_rates = 3,
3328                                         .rate    3328                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3329                                 }                3329                                 }
3330                         },                       3330                         },
3331                         {                        3331                         {
3332                                 QUIRK_DATA_AU    3332                                 QUIRK_DATA_AUDIOFORMAT(0) {
3333                                         .form    3333                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3334                                         .chan    3334                                         .channels = 8,
3335                                         .ifac    3335                                         .iface = 0,
3336                                         .alts    3336                                         .altsetting = 1,
3337                                         .alts    3337                                         .altset_idx = 1,
3338                                         .endp    3338                                         .endpoint = 0x86,
3339                                         .ep_i    3339                                         .ep_idx = 1,
3340                                         .ep_a    3340                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3341                                                  3341                                                 USB_ENDPOINT_SYNC_ASYNC|
3342                                                  3342                                                 USB_ENDPOINT_USAGE_DATA,
3343                                         .rate    3343                                         .rates = SNDRV_PCM_RATE_44100|
3344                                                  3344                                                 SNDRV_PCM_RATE_48000|
3345                                                  3345                                                 SNDRV_PCM_RATE_96000,
3346                                         .rate    3346                                         .rate_min = 44100,
3347                                         .rate    3347                                         .rate_max = 96000,
3348                                         .nr_r    3348                                         .nr_rates = 3,
3349                                         .rate    3349                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3350                                 }                3350                                 }
3351                         },                       3351                         },
3352                         QUIRK_COMPOSITE_END      3352                         QUIRK_COMPOSITE_END
3353                 }                                3353                 }
3354         }                                        3354         }
3355 },                                               3355 },
3356 {                                                3356 {
3357         /*                                       3357         /*
3358          * Pioneer DJ DJM-450                    3358          * Pioneer DJ DJM-450
3359          * PCM is 8 channels out @ 48 fixed (    3359          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
3360          * and 8 channels in @ 48 fixed (endp    3360          * and 8 channels in @ 48 fixed (endpoint 0x82).
3361          */                                      3361          */
3362         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013    3362         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),
3363         QUIRK_DRIVER_INFO {                      3363         QUIRK_DRIVER_INFO {
3364                 QUIRK_DATA_COMPOSITE {           3364                 QUIRK_DATA_COMPOSITE {
3365                         {                        3365                         {
3366                                 QUIRK_DATA_AU    3366                                 QUIRK_DATA_AUDIOFORMAT(0) {
3367                                         .form    3367                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3368                                         .chan    3368                                         .channels = 8, // outputs
3369                                         .ifac    3369                                         .iface = 0,
3370                                         .alts    3370                                         .altsetting = 1,
3371                                         .alts    3371                                         .altset_idx = 1,
3372                                         .endp    3372                                         .endpoint = 0x01,
3373                                         .ep_a    3373                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3374                                                  3374                                                 USB_ENDPOINT_SYNC_ASYNC,
3375                                         .rate    3375                                         .rates = SNDRV_PCM_RATE_48000,
3376                                         .rate    3376                                         .rate_min = 48000,
3377                                         .rate    3377                                         .rate_max = 48000,
3378                                         .nr_r    3378                                         .nr_rates = 1,
3379                                         .rate    3379                                         .rate_table = (unsigned int[]) { 48000 }
3380                                         }        3380                                         }
3381                         },                       3381                         },
3382                         {                        3382                         {
3383                                 QUIRK_DATA_AU    3383                                 QUIRK_DATA_AUDIOFORMAT(0) {
3384                                         .form    3384                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3385                                         .chan    3385                                         .channels = 8, // inputs
3386                                         .ifac    3386                                         .iface = 0,
3387                                         .alts    3387                                         .altsetting = 1,
3388                                         .alts    3388                                         .altset_idx = 1,
3389                                         .endp    3389                                         .endpoint = 0x82,
3390                                         .ep_i    3390                                         .ep_idx = 1,
3391                                         .ep_a    3391                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3392                                                  3392                                                 USB_ENDPOINT_SYNC_ASYNC|
3393                                                  3393                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3394                                         .rate    3394                                         .rates = SNDRV_PCM_RATE_48000,
3395                                         .rate    3395                                         .rate_min = 48000,
3396                                         .rate    3396                                         .rate_max = 48000,
3397                                         .nr_r    3397                                         .nr_rates = 1,
3398                                         .rate    3398                                         .rate_table = (unsigned int[]) { 48000 }
3399                                 }                3399                                 }
3400                         },                       3400                         },
3401                         QUIRK_COMPOSITE_END      3401                         QUIRK_COMPOSITE_END
3402                 }                                3402                 }
3403         }                                        3403         }
3404 },                                               3404 },
3405 {                                                3405 {
3406         /*                                       3406         /*
3407          * Sennheiser GSP670                     3407          * Sennheiser GSP670
3408          * Change order of interfaces loaded     3408          * Change order of interfaces loaded
3409          */                                      3409          */
3410         USB_DEVICE(0x1395, 0x0300),              3410         USB_DEVICE(0x1395, 0x0300),
3411         .bInterfaceClass = USB_CLASS_PER_INTE    3411         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
3412         QUIRK_DRIVER_INFO {                      3412         QUIRK_DRIVER_INFO {
3413                 QUIRK_DATA_COMPOSITE {           3413                 QUIRK_DATA_COMPOSITE {
3414                         // Communication         3414                         // Communication
3415                         { QUIRK_DATA_STANDARD    3415                         { QUIRK_DATA_STANDARD_AUDIO(3) },
3416                         // Recording             3416                         // Recording
3417                         { QUIRK_DATA_STANDARD    3417                         { QUIRK_DATA_STANDARD_AUDIO(4) },
3418                         // Main                  3418                         // Main
3419                         { QUIRK_DATA_STANDARD    3419                         { QUIRK_DATA_STANDARD_AUDIO(1) },
3420                         QUIRK_COMPOSITE_END      3420                         QUIRK_COMPOSITE_END
3421                 }                                3421                 }
3422         }                                        3422         }
3423 },                                               3423 },
3424 {                                                3424 {
3425         /*                                       3425         /*
3426          * Fiero SC-01 (firmware v1.0.0 @ 48     3426          * Fiero SC-01 (firmware v1.0.0 @ 48 kHz)
3427          */                                      3427          */
3428         USB_DEVICE(0x2b53, 0x0023),              3428         USB_DEVICE(0x2b53, 0x0023),
3429         QUIRK_DRIVER_INFO {                      3429         QUIRK_DRIVER_INFO {
3430                 .vendor_name = "Fiero",          3430                 .vendor_name = "Fiero",
3431                 .product_name = "SC-01",         3431                 .product_name = "SC-01",
3432                 QUIRK_DATA_COMPOSITE {           3432                 QUIRK_DATA_COMPOSITE {
3433                         { QUIRK_DATA_STANDARD    3433                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3434                         /* Playback */           3434                         /* Playback */
3435                         {                        3435                         {
3436                                 QUIRK_DATA_AU    3436                                 QUIRK_DATA_AUDIOFORMAT(1) {
3437                                         .form    3437                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3438                                         .chan    3438                                         .channels = 2,
3439                                         .fmt_    3439                                         .fmt_bits = 24,
3440                                         .ifac    3440                                         .iface = 1,
3441                                         .alts    3441                                         .altsetting = 1,
3442                                         .alts    3442                                         .altset_idx = 1,
3443                                         .endp    3443                                         .endpoint = 0x01,
3444                                         .ep_a    3444                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3445                                                  3445                                                    USB_ENDPOINT_SYNC_ASYNC,
3446                                         .rate    3446                                         .rates = SNDRV_PCM_RATE_48000,
3447                                         .rate    3447                                         .rate_min = 48000,
3448                                         .rate    3448                                         .rate_max = 48000,
3449                                         .nr_r    3449                                         .nr_rates = 1,
3450                                         .rate    3450                                         .rate_table = (unsigned int[]) { 48000 },
3451                                         .cloc    3451                                         .clock = 0x29
3452                                 }                3452                                 }
3453                         },                       3453                         },
3454                         /* Capture */            3454                         /* Capture */
3455                         {                        3455                         {
3456                                 QUIRK_DATA_AU    3456                                 QUIRK_DATA_AUDIOFORMAT(2) {
3457                                         .form    3457                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3458                                         .chan    3458                                         .channels = 2,
3459                                         .fmt_    3459                                         .fmt_bits = 24,
3460                                         .ifac    3460                                         .iface = 2,
3461                                         .alts    3461                                         .altsetting = 1,
3462                                         .alts    3462                                         .altset_idx = 1,
3463                                         .endp    3463                                         .endpoint = 0x82,
3464                                         .ep_a    3464                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3465                                                  3465                                                    USB_ENDPOINT_SYNC_ASYNC |
3466                                                  3466                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3467                                         .rate    3467                                         .rates = SNDRV_PCM_RATE_48000,
3468                                         .rate    3468                                         .rate_min = 48000,
3469                                         .rate    3469                                         .rate_max = 48000,
3470                                         .nr_r    3470                                         .nr_rates = 1,
3471                                         .rate    3471                                         .rate_table = (unsigned int[]) { 48000 },
3472                                         .cloc    3472                                         .clock = 0x29
3473                                 }                3473                                 }
3474                         },                       3474                         },
3475                         QUIRK_COMPOSITE_END      3475                         QUIRK_COMPOSITE_END
3476                 }                                3476                 }
3477         }                                        3477         }
3478 },                                               3478 },
3479 {                                                3479 {
3480         /*                                       3480         /*
3481          * Fiero SC-01 (firmware v1.0.0 @ 96     3481          * Fiero SC-01 (firmware v1.0.0 @ 96 kHz)
3482          */                                      3482          */
3483         USB_DEVICE(0x2b53, 0x0024),              3483         USB_DEVICE(0x2b53, 0x0024),
3484         QUIRK_DRIVER_INFO {                      3484         QUIRK_DRIVER_INFO {
3485                 .vendor_name = "Fiero",          3485                 .vendor_name = "Fiero",
3486                 .product_name = "SC-01",         3486                 .product_name = "SC-01",
3487                 QUIRK_DATA_COMPOSITE {           3487                 QUIRK_DATA_COMPOSITE {
3488                         { QUIRK_DATA_STANDARD    3488                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3489                         /* Playback */           3489                         /* Playback */
3490                         {                        3490                         {
3491                                 QUIRK_DATA_AU    3491                                 QUIRK_DATA_AUDIOFORMAT(1) {
3492                                         .form    3492                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3493                                         .chan    3493                                         .channels = 2,
3494                                         .fmt_    3494                                         .fmt_bits = 24,
3495                                         .ifac    3495                                         .iface = 1,
3496                                         .alts    3496                                         .altsetting = 1,
3497                                         .alts    3497                                         .altset_idx = 1,
3498                                         .endp    3498                                         .endpoint = 0x01,
3499                                         .ep_a    3499                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3500                                                  3500                                                    USB_ENDPOINT_SYNC_ASYNC,
3501                                         .rate    3501                                         .rates = SNDRV_PCM_RATE_96000,
3502                                         .rate    3502                                         .rate_min = 96000,
3503                                         .rate    3503                                         .rate_max = 96000,
3504                                         .nr_r    3504                                         .nr_rates = 1,
3505                                         .rate    3505                                         .rate_table = (unsigned int[]) { 96000 },
3506                                         .cloc    3506                                         .clock = 0x29
3507                                 }                3507                                 }
3508                         },                       3508                         },
3509                         /* Capture */            3509                         /* Capture */
3510                         {                        3510                         {
3511                                 QUIRK_DATA_AU    3511                                 QUIRK_DATA_AUDIOFORMAT(2) {
3512                                         .form    3512                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3513                                         .chan    3513                                         .channels = 2,
3514                                         .fmt_    3514                                         .fmt_bits = 24,
3515                                         .ifac    3515                                         .iface = 2,
3516                                         .alts    3516                                         .altsetting = 1,
3517                                         .alts    3517                                         .altset_idx = 1,
3518                                         .endp    3518                                         .endpoint = 0x82,
3519                                         .ep_a    3519                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3520                                                  3520                                                    USB_ENDPOINT_SYNC_ASYNC |
3521                                                  3521                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3522                                         .rate    3522                                         .rates = SNDRV_PCM_RATE_96000,
3523                                         .rate    3523                                         .rate_min = 96000,
3524                                         .rate    3524                                         .rate_max = 96000,
3525                                         .nr_r    3525                                         .nr_rates = 1,
3526                                         .rate    3526                                         .rate_table = (unsigned int[]) { 96000 },
3527                                         .cloc    3527                                         .clock = 0x29
3528                                 }                3528                                 }
3529                         },                       3529                         },
3530                         QUIRK_COMPOSITE_END      3530                         QUIRK_COMPOSITE_END
3531                 }                                3531                 }
3532         }                                        3532         }
3533 },                                               3533 },
3534 {                                                3534 {
3535         /*                                       3535         /*
3536          * Fiero SC-01 (firmware v1.1.0)         3536          * Fiero SC-01 (firmware v1.1.0)
3537          */                                      3537          */
3538         USB_DEVICE(0x2b53, 0x0031),              3538         USB_DEVICE(0x2b53, 0x0031),
3539         QUIRK_DRIVER_INFO {                      3539         QUIRK_DRIVER_INFO {
3540                 .vendor_name = "Fiero",          3540                 .vendor_name = "Fiero",
3541                 .product_name = "SC-01",         3541                 .product_name = "SC-01",
3542                 QUIRK_DATA_COMPOSITE {           3542                 QUIRK_DATA_COMPOSITE {
3543                         { QUIRK_DATA_STANDARD    3543                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3544                         /* Playback */           3544                         /* Playback */
3545                         {                        3545                         {
3546                                 QUIRK_DATA_AU    3546                                 QUIRK_DATA_AUDIOFORMAT(1) {
3547                                         .form    3547                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3548                                         .chan    3548                                         .channels = 2,
3549                                         .fmt_    3549                                         .fmt_bits = 24,
3550                                         .ifac    3550                                         .iface = 1,
3551                                         .alts    3551                                         .altsetting = 1,
3552                                         .alts    3552                                         .altset_idx = 1,
3553                                         .endp    3553                                         .endpoint = 0x01,
3554                                         .ep_a    3554                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3555                                                  3555                                                    USB_ENDPOINT_SYNC_ASYNC,
3556                                         .rate    3556                                         .rates = SNDRV_PCM_RATE_48000 |
3557                                                  3557                                                  SNDRV_PCM_RATE_96000,
3558                                         .rate    3558                                         .rate_min = 48000,
3559                                         .rate    3559                                         .rate_max = 96000,
3560                                         .nr_r    3560                                         .nr_rates = 2,
3561                                         .rate    3561                                         .rate_table = (unsigned int[]) { 48000, 96000 },
3562                                         .cloc    3562                                         .clock = 0x29
3563                                 }                3563                                 }
3564                         },                       3564                         },
3565                         /* Capture */            3565                         /* Capture */
3566                         {                        3566                         {
3567                                 QUIRK_DATA_AU    3567                                 QUIRK_DATA_AUDIOFORMAT(2) {
3568                                         .form    3568                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3569                                         .chan    3569                                         .channels = 2,
3570                                         .fmt_    3570                                         .fmt_bits = 24,
3571                                         .ifac    3571                                         .iface = 2,
3572                                         .alts    3572                                         .altsetting = 1,
3573                                         .alts    3573                                         .altset_idx = 1,
3574                                         .endp    3574                                         .endpoint = 0x82,
3575                                         .ep_a    3575                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3576                                                  3576                                                    USB_ENDPOINT_SYNC_ASYNC |
3577                                                  3577                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3578                                         .rate    3578                                         .rates = SNDRV_PCM_RATE_48000 |
3579                                                  3579                                                  SNDRV_PCM_RATE_96000,
3580                                         .rate    3580                                         .rate_min = 48000,
3581                                         .rate    3581                                         .rate_max = 96000,
3582                                         .nr_r    3582                                         .nr_rates = 2,
3583                                         .rate    3583                                         .rate_table = (unsigned int[]) { 48000, 96000 },
3584                                         .cloc    3584                                         .clock = 0x29
3585                                 }                3585                                 }
3586                         },                       3586                         },
3587                         QUIRK_COMPOSITE_END      3587                         QUIRK_COMPOSITE_END
3588                 }                                3588                 }
3589         }                                        3589         }
3590 },                                               3590 },
3591 {                                                3591 {
3592         /* Advanced modes of the Mythware XA0    3592         /* Advanced modes of the Mythware XA001AU.
3593          * For the standard mode, Mythware XA    3593          * For the standard mode, Mythware XA001AU has ID ffad:a001
3594          */                                      3594          */
3595         USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001    3595         USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001),
3596         QUIRK_DRIVER_INFO {                      3596         QUIRK_DRIVER_INFO {
3597                 .vendor_name = "Mythware",       3597                 .vendor_name = "Mythware",
3598                 .product_name = "XA001AU",       3598                 .product_name = "XA001AU",
3599                 QUIRK_DATA_COMPOSITE {           3599                 QUIRK_DATA_COMPOSITE {
3600                         { QUIRK_DATA_IGNORE(0    3600                         { QUIRK_DATA_IGNORE(0) },
3601                         { QUIRK_DATA_STANDARD    3601                         { QUIRK_DATA_STANDARD_AUDIO(1) },
3602                         { QUIRK_DATA_STANDARD    3602                         { QUIRK_DATA_STANDARD_AUDIO(2) },
3603                         QUIRK_COMPOSITE_END      3603                         QUIRK_COMPOSITE_END
3604                 }                                3604                 }
3605         }                                        3605         }
3606 },                                               3606 },
3607 {                                                3607 {
3608         /* Only claim interface 0 */             3608         /* Only claim interface 0 */
3609         .match_flags = USB_DEVICE_ID_MATCH_VE    3609         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
3610                        USB_DEVICE_ID_MATCH_PR    3610                        USB_DEVICE_ID_MATCH_PRODUCT |
3611                        USB_DEVICE_ID_MATCH_IN    3611                        USB_DEVICE_ID_MATCH_INT_CLASS |
3612                        USB_DEVICE_ID_MATCH_IN    3612                        USB_DEVICE_ID_MATCH_INT_NUMBER,
3613         .idVendor = 0x2a39,                      3613         .idVendor = 0x2a39,
3614         .idProduct = 0x3f8c,                     3614         .idProduct = 0x3f8c,
3615         .bInterfaceClass = USB_CLASS_VENDOR_S    3615         .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
3616         .bInterfaceNumber = 0,                   3616         .bInterfaceNumber = 0,
3617         QUIRK_DRIVER_INFO {                      3617         QUIRK_DRIVER_INFO {
3618                 QUIRK_DATA_COMPOSITE {           3618                 QUIRK_DATA_COMPOSITE {
3619                         /*                       3619                         /*
3620                          * Three modes depend    3620                          * Three modes depending on sample rate band,
3621                          * with different cha    3621                          * with different channel counts for in/out
3622                          */                      3622                          */
3623                         { QUIRK_DATA_STANDARD    3623                         { QUIRK_DATA_STANDARD_MIXER(0) },
3624                         {                        3624                         {
3625                                 QUIRK_DATA_AU    3625                                 QUIRK_DATA_AUDIOFORMAT(0) {
3626                                         .form    3626                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3627                                         .chan    3627                                         .channels = 34, // outputs
3628                                         .fmt_    3628                                         .fmt_bits = 24,
3629                                         .ifac    3629                                         .iface = 0,
3630                                         .alts    3630                                         .altsetting = 1,
3631                                         .alts    3631                                         .altset_idx = 1,
3632                                         .endp    3632                                         .endpoint = 0x02,
3633                                         .ep_i    3633                                         .ep_idx = 1,
3634                                         .ep_a    3634                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3635                                                  3635                                                 USB_ENDPOINT_SYNC_ASYNC,
3636                                         .rate    3636                                         .rates = SNDRV_PCM_RATE_32000 |
3637                                                  3637                                                 SNDRV_PCM_RATE_44100 |
3638                                                  3638                                                 SNDRV_PCM_RATE_48000,
3639                                         .rate    3639                                         .rate_min = 32000,
3640                                         .rate    3640                                         .rate_max = 48000,
3641                                         .nr_r    3641                                         .nr_rates = 3,
3642                                         .rate    3642                                         .rate_table = (unsigned int[]) {
3643                                                  3643                                                 32000, 44100, 48000,
3644                                         },       3644                                         },
3645                                         .sync    3645                                         .sync_ep = 0x81,
3646                                         .sync    3646                                         .sync_iface = 0,
3647                                         .sync    3647                                         .sync_altsetting = 1,
3648                                         .sync    3648                                         .sync_ep_idx = 0,
3649                                         .impl    3649                                         .implicit_fb = 1,
3650                                 },               3650                                 },
3651                         },                       3651                         },
3652                         {                        3652                         {
3653                                 QUIRK_DATA_AU    3653                                 QUIRK_DATA_AUDIOFORMAT(0) {
3654                                         .form    3654                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3655                                         .chan    3655                                         .channels = 18, // outputs
3656                                         .fmt_    3656                                         .fmt_bits = 24,
3657                                         .ifac    3657                                         .iface = 0,
3658                                         .alts    3658                                         .altsetting = 1,
3659                                         .alts    3659                                         .altset_idx = 1,
3660                                         .endp    3660                                         .endpoint = 0x02,
3661                                         .ep_i    3661                                         .ep_idx = 1,
3662                                         .ep_a    3662                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3663                                                  3663                                                 USB_ENDPOINT_SYNC_ASYNC,
3664                                         .rate    3664                                         .rates = SNDRV_PCM_RATE_64000 |
3665                                                  3665                                                 SNDRV_PCM_RATE_88200 |
3666                                                  3666                                                 SNDRV_PCM_RATE_96000,
3667                                         .rate    3667                                         .rate_min = 64000,
3668                                         .rate    3668                                         .rate_max = 96000,
3669                                         .nr_r    3669                                         .nr_rates = 3,
3670                                         .rate    3670                                         .rate_table = (unsigned int[]) {
3671                                                  3671                                                 64000, 88200, 96000,
3672                                         },       3672                                         },
3673                                         .sync    3673                                         .sync_ep = 0x81,
3674                                         .sync    3674                                         .sync_iface = 0,
3675                                         .sync    3675                                         .sync_altsetting = 1,
3676                                         .sync    3676                                         .sync_ep_idx = 0,
3677                                         .impl    3677                                         .implicit_fb = 1,
3678                                 },               3678                                 },
3679                         },                       3679                         },
3680                         {                        3680                         {
3681                                 QUIRK_DATA_AU    3681                                 QUIRK_DATA_AUDIOFORMAT(0) {
3682                                         .form    3682                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3683                                         .chan    3683                                         .channels = 10, // outputs
3684                                         .fmt_    3684                                         .fmt_bits = 24,
3685                                         .ifac    3685                                         .iface = 0,
3686                                         .alts    3686                                         .altsetting = 1,
3687                                         .alts    3687                                         .altset_idx = 1,
3688                                         .endp    3688                                         .endpoint = 0x02,
3689                                         .ep_i    3689                                         .ep_idx = 1,
3690                                         .ep_a    3690                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3691                                                  3691                                                 USB_ENDPOINT_SYNC_ASYNC,
3692                                         .rate    3692                                         .rates = SNDRV_PCM_RATE_KNOT |
3693                                                  3693                                                 SNDRV_PCM_RATE_176400 |
3694                                                  3694                                                 SNDRV_PCM_RATE_192000,
3695                                         .rate    3695                                         .rate_min = 128000,
3696                                         .rate    3696                                         .rate_max = 192000,
3697                                         .nr_r    3697                                         .nr_rates = 3,
3698                                         .rate    3698                                         .rate_table = (unsigned int[]) {
3699                                                  3699                                                 128000, 176400, 192000,
3700                                         },       3700                                         },
3701                                         .sync    3701                                         .sync_ep = 0x81,
3702                                         .sync    3702                                         .sync_iface = 0,
3703                                         .sync    3703                                         .sync_altsetting = 1,
3704                                         .sync    3704                                         .sync_ep_idx = 0,
3705                                         .impl    3705                                         .implicit_fb = 1,
3706                                 },               3706                                 },
3707                         },                       3707                         },
3708                         {                        3708                         {
3709                                 QUIRK_DATA_AU    3709                                 QUIRK_DATA_AUDIOFORMAT(0) {
3710                                         .form    3710                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3711                                         .chan    3711                                         .channels = 32, // inputs
3712                                         .fmt_    3712                                         .fmt_bits = 24,
3713                                         .ifac    3713                                         .iface = 0,
3714                                         .alts    3714                                         .altsetting = 1,
3715                                         .alts    3715                                         .altset_idx = 1,
3716                                         .endp    3716                                         .endpoint = 0x81,
3717                                         .ep_a    3717                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3718                                                  3718                                                 USB_ENDPOINT_SYNC_ASYNC,
3719                                         .rate    3719                                         .rates = SNDRV_PCM_RATE_32000 |
3720                                                  3720                                                 SNDRV_PCM_RATE_44100 |
3721                                                  3721                                                 SNDRV_PCM_RATE_48000,
3722                                         .rate    3722                                         .rate_min = 32000,
3723                                         .rate    3723                                         .rate_max = 48000,
3724                                         .nr_r    3724                                         .nr_rates = 3,
3725                                         .rate    3725                                         .rate_table = (unsigned int[]) {
3726                                                  3726                                                 32000, 44100, 48000,
3727                                         }        3727                                         }
3728                                 }                3728                                 }
3729                         },                       3729                         },
3730                         {                        3730                         {
3731                                 QUIRK_DATA_AU    3731                                 QUIRK_DATA_AUDIOFORMAT(0) {
3732                                         .form    3732                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3733                                         .chan    3733                                         .channels = 16, // inputs
3734                                         .fmt_    3734                                         .fmt_bits = 24,
3735                                         .ifac    3735                                         .iface = 0,
3736                                         .alts    3736                                         .altsetting = 1,
3737                                         .alts    3737                                         .altset_idx = 1,
3738                                         .endp    3738                                         .endpoint = 0x81,
3739                                         .ep_a    3739                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3740                                                  3740                                                 USB_ENDPOINT_SYNC_ASYNC,
3741                                         .rate    3741                                         .rates = SNDRV_PCM_RATE_64000 |
3742                                                  3742                                                 SNDRV_PCM_RATE_88200 |
3743                                                  3743                                                 SNDRV_PCM_RATE_96000,
3744                                         .rate    3744                                         .rate_min = 64000,
3745                                         .rate    3745                                         .rate_max = 96000,
3746                                         .nr_r    3746                                         .nr_rates = 3,
3747                                         .rate    3747                                         .rate_table = (unsigned int[]) {
3748                                                  3748                                                 64000, 88200, 96000,
3749                                         }        3749                                         }
3750                                 }                3750                                 }
3751                         },                       3751                         },
3752                         {                        3752                         {
3753                                 QUIRK_DATA_AU    3753                                 QUIRK_DATA_AUDIOFORMAT(0) {
3754                                         .form    3754                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3755                                         .chan    3755                                         .channels = 8, // inputs
3756                                         .fmt_    3756                                         .fmt_bits = 24,
3757                                         .ifac    3757                                         .iface = 0,
3758                                         .alts    3758                                         .altsetting = 1,
3759                                         .alts    3759                                         .altset_idx = 1,
3760                                         .endp    3760                                         .endpoint = 0x81,
3761                                         .ep_a    3761                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3762                                                  3762                                                 USB_ENDPOINT_SYNC_ASYNC,
3763                                         .rate    3763                                         .rates = SNDRV_PCM_RATE_KNOT |
3764                                                  3764                                                 SNDRV_PCM_RATE_176400 |
3765                                                  3765                                                 SNDRV_PCM_RATE_192000,
3766                                         .rate    3766                                         .rate_min = 128000,
3767                                         .rate    3767                                         .rate_max = 192000,
3768                                         .nr_r    3768                                         .nr_rates = 3,
3769                                         .rate    3769                                         .rate_table = (unsigned int[]) {
3770                                                  3770                                                 128000, 176400, 192000,
3771                                         }        3771                                         }
3772                                 }                3772                                 }
3773                         },                       3773                         },
3774                         QUIRK_COMPOSITE_END      3774                         QUIRK_COMPOSITE_END
3775                 }                                3775                 }
3776         }                                        3776         }
3777 },                                               3777 },
3778 #undef USB_DEVICE_VENDOR_SPEC                    3778 #undef USB_DEVICE_VENDOR_SPEC
3779 #undef USB_AUDIO_DEVICE                          3779 #undef USB_AUDIO_DEVICE
3780                                                  3780 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php