~ [ 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 (Version linux-6.12-rc7) and /sound/usb/quirks-table.h (Version linux-6.1.116)


  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_ << 
2337                                         .chan    2336                                         .channels = 4,
2338                                         .ifac    2337                                         .iface = 2,
2339                                         .alts    2338                                         .altsetting = 1,
2340                                         .alts    2339                                         .altset_idx = 1,
2341                                         .attr    2340                                         .attributes = 0x00,
2342                                         .endp !! 2341                                         .endpoint = 0x01,
2343                                         .ep_a    2342                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2344                                                  2343                                                 USB_ENDPOINT_SYNC_ASYNC,
2345                                         .rate !! 2344                                         .rates = SNDRV_PCM_RATE_48000,
2346                                               !! 2345                                         .rate_min = 48000,
2347                                         .rate !! 2346                                         .rate_max = 48000,
2348                                         .rate !! 2347                                         .nr_rates = 1,
2349                                         .nr_r << 
2350                                         .rate    2348                                         .rate_table = (unsigned int[]) {
2351                                               !! 2349                                                 48000
2352                                         },    !! 2350                                         }
2353                                         .sync << 
2354                                         .sync << 
2355                                         .sync << 
2356                                         .sync << 
2357                                         .impl << 
2358                                 }                2351                                 }
2359                         },                       2352                         },
2360                         {                        2353                         {
2361                                 QUIRK_DATA_AU    2354                                 QUIRK_DATA_AUDIOFORMAT(3) {
2362                                         .form    2355                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2363                                         .fmt_ << 
2364                                         .chan    2356                                         .channels = 4,
2365                                         .ifac    2357                                         .iface = 3,
2366                                         .alts    2358                                         .altsetting = 1,
2367                                         .alts    2359                                         .altset_idx = 1,
                                                   >> 2360                                         .endpoint = 0x81,
2368                                         .attr    2361                                         .attributes = 0x00,
2369                                         .endp << 
2370                                         .ep_a    2362                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2371                                                  2363                                                 USB_ENDPOINT_SYNC_ASYNC,
2372                                         .maxp    2364                                         .maxpacksize = 0x009c,
2373                                         .rate !! 2365                                         .rates = SNDRV_PCM_RATE_48000,
2374                                               !! 2366                                         .rate_min = 48000,
2375                                         .rate !! 2367                                         .rate_max = 48000,
2376                                         .rate !! 2368                                         .nr_rates = 1,
2377                                         .nr_r << 
2378                                         .rate    2369                                         .rate_table = (unsigned int[]) {
2379                                               !! 2370                                                 48000
2380                                         },    !! 2371                                         }
2381                                         .impl << 
2382                                 }                2372                                 }
2383                         },                       2373                         },
2384                         {                        2374                         {
2385                                 QUIRK_DATA_MI    2375                                 QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) {
2386                                         .out_    2376                                         .out_cables = 0x0001,
2387                                         .in_c    2377                                         .in_cables  = 0x0001
2388                                 }                2378                                 }
2389                         },                       2379                         },
2390                         QUIRK_COMPOSITE_END      2380                         QUIRK_COMPOSITE_END
2391                 }                                2381                 }
2392         }                                        2382         }
2393 },                                               2383 },
2394 {                                                2384 {
2395         /* Tascam US122 MKII - playback-only     2385         /* Tascam US122 MKII - playback-only support */
2396         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021    2386         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021),
2397         QUIRK_DRIVER_INFO {                      2387         QUIRK_DRIVER_INFO {
2398                 .vendor_name = "TASCAM",         2388                 .vendor_name = "TASCAM",
2399                 .product_name = "US122 MKII",    2389                 .product_name = "US122 MKII",
2400                 QUIRK_DATA_COMPOSITE {           2390                 QUIRK_DATA_COMPOSITE {
2401                         { QUIRK_DATA_IGNORE(0    2391                         { QUIRK_DATA_IGNORE(0) },
2402                         {                        2392                         {
2403                                 QUIRK_DATA_AU    2393                                 QUIRK_DATA_AUDIOFORMAT(1) {
2404                                         .form    2394                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2405                                         .chan    2395                                         .channels = 2,
2406                                         .ifac    2396                                         .iface = 1,
2407                                         .alts    2397                                         .altsetting = 1,
2408                                         .alts    2398                                         .altset_idx = 1,
2409                                         .attr    2399                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2410                                         .endp    2400                                         .endpoint = 0x02,
2411                                         .ep_a    2401                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2412                                         .rate    2402                                         .rates = SNDRV_PCM_RATE_44100 |
2413                                                  2403                                                  SNDRV_PCM_RATE_48000 |
2414                                                  2404                                                  SNDRV_PCM_RATE_88200 |
2415                                                  2405                                                  SNDRV_PCM_RATE_96000,
2416                                         .rate    2406                                         .rate_min = 44100,
2417                                         .rate    2407                                         .rate_max = 96000,
2418                                         .nr_r    2408                                         .nr_rates = 4,
2419                                         .rate    2409                                         .rate_table = (unsigned int[]) {
2420                                                  2410                                                 44100, 48000, 88200, 96000
2421                                         }        2411                                         }
2422                                 }                2412                                 }
2423                         },                       2413                         },
2424                         QUIRK_COMPOSITE_END      2414                         QUIRK_COMPOSITE_END
2425                 }                                2415                 }
2426         }                                        2416         }
2427 },                                               2417 },
2428                                                  2418 
2429 /* Denon DN-X1600 */                             2419 /* Denon DN-X1600 */
2430 {                                                2420 {
2431         USB_AUDIO_DEVICE(0x154e, 0x500e),        2421         USB_AUDIO_DEVICE(0x154e, 0x500e),
2432         QUIRK_DRIVER_INFO {                      2422         QUIRK_DRIVER_INFO {
2433                 .vendor_name = "Denon",          2423                 .vendor_name = "Denon",
2434                 .product_name = "DN-X1600",      2424                 .product_name = "DN-X1600",
2435                 QUIRK_DATA_COMPOSITE{            2425                 QUIRK_DATA_COMPOSITE{
2436                         { QUIRK_DATA_IGNORE(0    2426                         { QUIRK_DATA_IGNORE(0) },
2437                         {                        2427                         {
2438                                 QUIRK_DATA_AU    2428                                 QUIRK_DATA_AUDIOFORMAT(1) {
2439                                         .form    2429                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2440                                         .chan    2430                                         .channels = 8,
2441                                         .ifac    2431                                         .iface = 1,
2442                                         .alts    2432                                         .altsetting = 1,
2443                                         .alts    2433                                         .altset_idx = 1,
2444                                         .attr    2434                                         .attributes = 0x0,
2445                                         .endp    2435                                         .endpoint = 0x01,
2446                                         .ep_a    2436                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2447                                                  2437                                                 USB_ENDPOINT_SYNC_ADAPTIVE,
2448                                         .maxp    2438                                         .maxpacksize = 0x138,
2449                                         .rate    2439                                         .rates = SNDRV_PCM_RATE_48000,
2450                                         .rate    2440                                         .rate_min = 48000,
2451                                         .rate    2441                                         .rate_max = 48000,
2452                                         .nr_r    2442                                         .nr_rates = 1,
2453                                         .rate    2443                                         .rate_table = (unsigned int[]) {
2454                                                  2444                                                 48000
2455                                         }        2445                                         }
2456                                 }                2446                                 }
2457                         },                       2447                         },
2458                         {                        2448                         {
2459                                 QUIRK_DATA_AU    2449                                 QUIRK_DATA_AUDIOFORMAT(2) {
2460                                         .form    2450                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2461                                         .chan    2451                                         .channels = 8,
2462                                         .ifac    2452                                         .iface = 2,
2463                                         .alts    2453                                         .altsetting = 1,
2464                                         .alts    2454                                         .altset_idx = 1,
2465                                         .attr    2455                                         .attributes = 0x0,
2466                                         .endp    2456                                         .endpoint = 0x85,
2467                                         .ep_a    2457                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2468                                                  2458                                                 USB_ENDPOINT_SYNC_ADAPTIVE,
2469                                         .maxp    2459                                         .maxpacksize = 0x138,
2470                                         .rate    2460                                         .rates = SNDRV_PCM_RATE_48000,
2471                                         .rate    2461                                         .rate_min = 48000,
2472                                         .rate    2462                                         .rate_max = 48000,
2473                                         .nr_r    2463                                         .nr_rates = 1,
2474                                         .rate    2464                                         .rate_table = (unsigned int[]) {
2475                                                  2465                                                 48000
2476                                         }        2466                                         }
2477                                 }                2467                                 }
2478                         },                       2468                         },
2479                         { QUIRK_DATA_STANDARD    2469                         { QUIRK_DATA_STANDARD_MIDI(4) },
2480                         QUIRK_COMPOSITE_END      2470                         QUIRK_COMPOSITE_END
2481                 }                                2471                 }
2482         }                                        2472         }
2483 },                                               2473 },
2484                                                  2474 
2485 /* Microsoft XboxLive Headset/Xbox Communicat    2475 /* Microsoft XboxLive Headset/Xbox Communicator */
2486 {                                                2476 {
2487         USB_DEVICE(0x045e, 0x0283),              2477         USB_DEVICE(0x045e, 0x0283),
2488         .bInterfaceClass = USB_CLASS_PER_INTE    2478         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2489         QUIRK_DRIVER_INFO {                      2479         QUIRK_DRIVER_INFO {
2490                 .vendor_name = "Microsoft",      2480                 .vendor_name = "Microsoft",
2491                 .product_name = "XboxLive Hea    2481                 .product_name = "XboxLive Headset/Xbox Communicator",
2492                 QUIRK_DATA_COMPOSITE {           2482                 QUIRK_DATA_COMPOSITE {
2493                         {                        2483                         {
2494                                 /* playback *    2484                                 /* playback */
2495                                 QUIRK_DATA_AU    2485                                 QUIRK_DATA_AUDIOFORMAT(0) {
2496                                         .form    2486                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2497                                         .chan    2487                                         .channels = 1,
2498                                         .ifac    2488                                         .iface = 0,
2499                                         .alts    2489                                         .altsetting = 0,
2500                                         .alts    2490                                         .altset_idx = 0,
2501                                         .attr    2491                                         .attributes = 0,
2502                                         .endp    2492                                         .endpoint = 0x04,
2503                                         .ep_a    2493                                         .ep_attr = 0x05,
2504                                         .rate    2494                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2505                                         .rate    2495                                         .rate_min = 22050,
2506                                         .rate    2496                                         .rate_max = 22050
2507                                 }                2497                                 }
2508                         },                       2498                         },
2509                         {                        2499                         {
2510                                 /* capture */    2500                                 /* capture */
2511                                 QUIRK_DATA_AU    2501                                 QUIRK_DATA_AUDIOFORMAT(1) {
2512                                         .form    2502                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2513                                         .chan    2503                                         .channels = 1,
2514                                         .ifac    2504                                         .iface = 1,
2515                                         .alts    2505                                         .altsetting = 0,
2516                                         .alts    2506                                         .altset_idx = 0,
2517                                         .attr    2507                                         .attributes = 0,
2518                                         .endp    2508                                         .endpoint = 0x85,
2519                                         .ep_a    2509                                         .ep_attr = 0x05,
2520                                         .rate    2510                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2521                                         .rate    2511                                         .rate_min = 16000,
2522                                         .rate    2512                                         .rate_max = 16000
2523                                 }                2513                                 }
2524                         },                       2514                         },
2525                         QUIRK_COMPOSITE_END      2515                         QUIRK_COMPOSITE_END
2526                 }                                2516                 }
2527         }                                        2517         }
2528 },                                               2518 },
2529                                                  2519 
2530 /* Reloop Play */                                2520 /* Reloop Play */
2531 {                                                2521 {
2532         USB_DEVICE(0x200c, 0x100b),              2522         USB_DEVICE(0x200c, 0x100b),
2533         .bInterfaceClass = USB_CLASS_PER_INTE    2523         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2534         QUIRK_DRIVER_INFO {                      2524         QUIRK_DRIVER_INFO {
2535                 QUIRK_DATA_COMPOSITE {           2525                 QUIRK_DATA_COMPOSITE {
2536                         { QUIRK_DATA_STANDARD    2526                         { QUIRK_DATA_STANDARD_MIXER(0) },
2537                         {                        2527                         {
2538                                 QUIRK_DATA_AU    2528                                 QUIRK_DATA_AUDIOFORMAT(1) {
2539                                         .form    2529                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2540                                         .chan    2530                                         .channels = 4,
2541                                         .ifac    2531                                         .iface = 1,
2542                                         .alts    2532                                         .altsetting = 1,
2543                                         .alts    2533                                         .altset_idx = 1,
2544                                         .attr    2534                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2545                                         .endp    2535                                         .endpoint = 0x01,
2546                                         .ep_a    2536                                         .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,
2547                                         .rate    2537                                         .rates = SNDRV_PCM_RATE_44100 |
2548                                                  2538                                                  SNDRV_PCM_RATE_48000,
2549                                         .rate    2539                                         .rate_min = 44100,
2550                                         .rate    2540                                         .rate_max = 48000,
2551                                         .nr_r    2541                                         .nr_rates = 2,
2552                                         .rate    2542                                         .rate_table = (unsigned int[]) {
2553                                                  2543                                                 44100, 48000
2554                                         }        2544                                         }
2555                                 }                2545                                 }
2556                         },                       2546                         },
2557                         QUIRK_COMPOSITE_END      2547                         QUIRK_COMPOSITE_END
2558                 }                                2548                 }
2559         }                                        2549         }
2560 },                                               2550 },
2561                                                  2551 
2562 {                                                2552 {
2563         /*                                       2553         /*
2564          * ZOOM R16/24 in audio interface mod    2554          * ZOOM R16/24 in audio interface mode.
2565          * Playback requires an extra four by    2555          * Playback requires an extra four byte LE length indicator
2566          * at the start of each isochronous p    2556          * at the start of each isochronous packet. This quirk is
2567          * enabled in create_standard_audio_q    2557          * enabled in create_standard_audio_quirk().
2568          */                                      2558          */
2569         USB_DEVICE(0x1686, 0x00dd),              2559         USB_DEVICE(0x1686, 0x00dd),
2570         QUIRK_DRIVER_INFO {                      2560         QUIRK_DRIVER_INFO {
2571                 QUIRK_DATA_COMPOSITE {           2561                 QUIRK_DATA_COMPOSITE {
2572                         { QUIRK_DATA_STANDARD    2562                         { QUIRK_DATA_STANDARD_AUDIO(1) }, /* Playback  */
2573                         { QUIRK_DATA_STANDARD    2563                         { QUIRK_DATA_STANDARD_AUDIO(2) }, /* Capture */
2574                         { QUIRK_DATA_STANDARD    2564                         { QUIRK_DATA_STANDARD_MIDI(3) }, /* Midi */
2575                         QUIRK_COMPOSITE_END      2565                         QUIRK_COMPOSITE_END
2576                 }                                2566                 }
2577         }                                        2567         }
2578 },                                               2568 },
2579                                                  2569 
2580 {                                                2570 {
2581         /*                                       2571         /*
2582          * Some USB MIDI devices don't have a    2572          * Some USB MIDI devices don't have an audio control interface,
2583          * so we have to grab MIDI streaming     2573          * so we have to grab MIDI streaming interfaces here.
2584          */                                      2574          */
2585         .match_flags = USB_DEVICE_ID_MATCH_IN    2575         .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
2586                        USB_DEVICE_ID_MATCH_IN    2576                        USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2587         .bInterfaceClass = USB_CLASS_AUDIO,      2577         .bInterfaceClass = USB_CLASS_AUDIO,
2588         .bInterfaceSubClass = USB_SUBCLASS_MI    2578         .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
2589         QUIRK_DRIVER_INFO {                      2579         QUIRK_DRIVER_INFO {
2590                 QUIRK_DATA_STANDARD_MIDI(QUIR    2580                 QUIRK_DATA_STANDARD_MIDI(QUIRK_ANY_INTERFACE)
2591         }                                        2581         }
2592 },                                               2582 },
2593                                                  2583 
2594 /* Rane SL-1 */                                  2584 /* Rane SL-1 */
2595 {                                                2585 {
2596         USB_DEVICE(0x13e5, 0x0001),              2586         USB_DEVICE(0x13e5, 0x0001),
2597         QUIRK_DRIVER_INFO {                      2587         QUIRK_DRIVER_INFO {
2598                 QUIRK_DATA_STANDARD_AUDIO(QUI    2588                 QUIRK_DATA_STANDARD_AUDIO(QUIRK_ANY_INTERFACE)
2599         }                                        2589         }
2600 },                                               2590 },
2601                                                  2591 
2602 /* disabled due to regression for other devic    2592 /* disabled due to regression for other devices;
2603  * see https://bugzilla.kernel.org/show_bug.c    2593  * see https://bugzilla.kernel.org/show_bug.cgi?id=199905
2604  */                                              2594  */
2605 #if 0                                            2595 #if 0
2606 {                                                2596 {
2607         /*                                       2597         /*
2608          * Nura's first gen headphones use Ca    2598          * Nura's first gen headphones use Cambridge Silicon Radio's vendor
2609          * ID, but it looks like the product     2599          * ID, but it looks like the product ID actually is only for Nura.
2610          * The capture interface does not wor    2600          * The capture interface does not work at all (even on Windows),
2611          * and only the 48 kHz sample rate wo    2601          * and only the 48 kHz sample rate works for the playback interface.
2612          */                                      2602          */
2613         USB_DEVICE(0x0a12, 0x1243),              2603         USB_DEVICE(0x0a12, 0x1243),
2614         QUIRK_DRIVER_INFO {                      2604         QUIRK_DRIVER_INFO {
2615                 QUIRK_DATA_COMPOSITE {           2605                 QUIRK_DATA_COMPOSITE {
2616                         { QUIRK_DATA_STANDARD    2606                         { QUIRK_DATA_STANDARD_MIXER(0) },
2617                         { QUIRK_DATA_IGNORE(1    2607                         { QUIRK_DATA_IGNORE(1) }, /* Capture */
2618                         /* Playback */           2608                         /* Playback */
2619                         {                        2609                         {
2620                                 QUIRK_DATA_AU    2610                                 QUIRK_DATA_AUDIOFORMAT(2) {
2621                                         .form    2611                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2622                                         .chan    2612                                         .channels = 2,
2623                                         .ifac    2613                                         .iface = 2,
2624                                         .alts    2614                                         .altsetting = 1,
2625                                         .alts    2615                                         .altset_idx = 1,
2626                                         .attr    2616                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2627                                                  2617                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2628                                         .endp    2618                                         .endpoint = 0x03,
2629                                         .ep_a    2619                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2630                                         .rate    2620                                         .rates = SNDRV_PCM_RATE_48000,
2631                                         .rate    2621                                         .rate_min = 48000,
2632                                         .rate    2622                                         .rate_max = 48000,
2633                                         .nr_r    2623                                         .nr_rates = 1,
2634                                         .rate    2624                                         .rate_table = (unsigned int[]) {
2635                                                  2625                                                 48000
2636                                         }        2626                                         }
2637                                 }                2627                                 }
2638                         },                       2628                         },
2639                         QUIRK_COMPOSITE_END      2629                         QUIRK_COMPOSITE_END
2640                 }                                2630                 }
2641         }                                        2631         }
2642 },                                               2632 },
2643 #endif /* disabled */                            2633 #endif /* disabled */
2644                                                  2634 
2645 {                                                2635 {
2646         /*                                       2636         /*
2647          * Bower's & Wilkins PX headphones on    2637          * Bower's & Wilkins PX headphones only support the 48 kHz sample rate
2648          * even though it advertises more. Th    2638          * even though it advertises more. The capture interface doesn't work
2649          * even on windows.                      2639          * even on windows.
2650          */                                      2640          */
2651         USB_DEVICE(0x19b5, 0x0021),              2641         USB_DEVICE(0x19b5, 0x0021),
2652         QUIRK_DRIVER_INFO {                      2642         QUIRK_DRIVER_INFO {
2653                 QUIRK_DATA_COMPOSITE {           2643                 QUIRK_DATA_COMPOSITE {
2654                         { QUIRK_DATA_STANDARD    2644                         { QUIRK_DATA_STANDARD_MIXER(0) },
2655                         /* Playback */           2645                         /* Playback */
2656                         {                        2646                         {
2657                                 QUIRK_DATA_AU    2647                                 QUIRK_DATA_AUDIOFORMAT(1) {
2658                                         .form    2648                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2659                                         .chan    2649                                         .channels = 2,
2660                                         .ifac    2650                                         .iface = 1,
2661                                         .alts    2651                                         .altsetting = 1,
2662                                         .alts    2652                                         .altset_idx = 1,
2663                                         .attr    2653                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2664                                                  2654                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2665                                         .endp    2655                                         .endpoint = 0x03,
2666                                         .ep_a    2656                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2667                                         .rate    2657                                         .rates = SNDRV_PCM_RATE_48000,
2668                                         .rate    2658                                         .rate_min = 48000,
2669                                         .rate    2659                                         .rate_max = 48000,
2670                                         .nr_r    2660                                         .nr_rates = 1,
2671                                         .rate    2661                                         .rate_table = (unsigned int[]) {
2672                                                  2662                                                 48000
2673                                         }        2663                                         }
2674                                 }                2664                                 }
2675                         },                       2665                         },
2676                         QUIRK_COMPOSITE_END      2666                         QUIRK_COMPOSITE_END
2677                 }                                2667                 }
2678         }                                        2668         }
2679 },                                               2669 },
2680 /* MOTU Microbook II */                          2670 /* MOTU Microbook II */
2681 {                                                2671 {
2682         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004    2672         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004),
2683         QUIRK_DRIVER_INFO {                      2673         QUIRK_DRIVER_INFO {
2684                 .vendor_name = "MOTU",           2674                 .vendor_name = "MOTU",
2685                 .product_name = "MicroBookII"    2675                 .product_name = "MicroBookII",
2686                 QUIRK_DATA_COMPOSITE {           2676                 QUIRK_DATA_COMPOSITE {
2687                         { QUIRK_DATA_STANDARD    2677                         { QUIRK_DATA_STANDARD_MIXER(0) },
2688                         {                        2678                         {
2689                                 QUIRK_DATA_AU    2679                                 QUIRK_DATA_AUDIOFORMAT(0) {
2690                                         .form    2680                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2691                                         .chan    2681                                         .channels = 6,
2692                                         .ifac    2682                                         .iface = 0,
2693                                         .alts    2683                                         .altsetting = 1,
2694                                         .alts    2684                                         .altset_idx = 1,
2695                                         .attr    2685                                         .attributes = 0,
2696                                         .endp    2686                                         .endpoint = 0x84,
2697                                         .rate    2687                                         .rates = SNDRV_PCM_RATE_96000,
2698                                         .ep_a    2688                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2699                                                  2689                                                    USB_ENDPOINT_SYNC_ASYNC,
2700                                         .rate    2690                                         .rate_min = 96000,
2701                                         .rate    2691                                         .rate_max = 96000,
2702                                         .nr_r    2692                                         .nr_rates = 1,
2703                                         .maxp    2693                                         .maxpacksize = 0x00d8,
2704                                         .rate    2694                                         .rate_table = (unsigned int[]) {
2705                                                  2695                                                 96000
2706                                         }        2696                                         }
2707                                 }                2697                                 }
2708                         },                       2698                         },
2709                         {                        2699                         {
2710                                 QUIRK_DATA_AU    2700                                 QUIRK_DATA_AUDIOFORMAT(0) {
2711                                         .form    2701                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2712                                         .chan    2702                                         .channels = 8,
2713                                         .ifac    2703                                         .iface = 0,
2714                                         .alts    2704                                         .altsetting = 1,
2715                                         .alts    2705                                         .altset_idx = 1,
2716                                         .attr    2706                                         .attributes = 0,
2717                                         .endp    2707                                         .endpoint = 0x03,
2718                                         .ep_i    2708                                         .ep_idx = 1,
2719                                         .rate    2709                                         .rates = SNDRV_PCM_RATE_96000,
2720                                         .ep_a    2710                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2721                                                  2711                                                    USB_ENDPOINT_SYNC_ASYNC,
2722                                         .rate    2712                                         .rate_min = 96000,
2723                                         .rate    2713                                         .rate_max = 96000,
2724                                         .nr_r    2714                                         .nr_rates = 1,
2725                                         .maxp    2715                                         .maxpacksize = 0x0120,
2726                                         .rate    2716                                         .rate_table = (unsigned int[]) {
2727                                                  2717                                                 96000
2728                                         }        2718                                         }
2729                                 }                2719                                 }
2730                         },                       2720                         },
2731                         QUIRK_COMPOSITE_END      2721                         QUIRK_COMPOSITE_END
2732                 }                                2722                 }
2733         }                                        2723         }
2734 },                                               2724 },
2735 {                                                2725 {
2736         /*                                       2726         /*
2737          * PIONEER DJ DDJ-SX3                    2727          * PIONEER DJ DDJ-SX3
2738          * PCM is 12 channels out, 10 channel    2728          * PCM is 12 channels out, 10 channels in @ 44.1 fixed
2739          * interface 0, vendor class alt sett    2729          * interface 0, vendor class alt setting 1 for endpoints 5 and 0x86
2740          * The feedback for the output is the    2730          * The feedback for the output is the input.
2741          */                                      2731          */
2742         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023    2732         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023),
2743         QUIRK_DRIVER_INFO {                      2733         QUIRK_DRIVER_INFO {
2744                 QUIRK_DATA_COMPOSITE {           2734                 QUIRK_DATA_COMPOSITE {
2745                         {                        2735                         {
2746                                 QUIRK_DATA_AU    2736                                 QUIRK_DATA_AUDIOFORMAT(0) {
2747                                         .form    2737                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2748                                         .chan    2738                                         .channels = 12,
2749                                         .ifac    2739                                         .iface = 0,
2750                                         .alts    2740                                         .altsetting = 1,
2751                                         .alts    2741                                         .altset_idx = 1,
2752                                         .endp    2742                                         .endpoint = 0x05,
2753                                         .ep_a    2743                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2754                                                  2744                                                    USB_ENDPOINT_SYNC_ASYNC,
2755                                         .rate    2745                                         .rates = SNDRV_PCM_RATE_44100,
2756                                         .rate    2746                                         .rate_min = 44100,
2757                                         .rate    2747                                         .rate_max = 44100,
2758                                         .nr_r    2748                                         .nr_rates = 1,
2759                                         .rate    2749                                         .rate_table = (unsigned int[]) { 44100 }
2760                                 }                2750                                 }
2761                         },                       2751                         },
2762                         {                        2752                         {
2763                                 QUIRK_DATA_AU    2753                                 QUIRK_DATA_AUDIOFORMAT(0) {
2764                                         .form    2754                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2765                                         .chan    2755                                         .channels = 10,
2766                                         .ifac    2756                                         .iface = 0,
2767                                         .alts    2757                                         .altsetting = 1,
2768                                         .alts    2758                                         .altset_idx = 1,
2769                                         .endp    2759                                         .endpoint = 0x86,
2770                                         .ep_i    2760                                         .ep_idx = 1,
2771                                         .ep_a    2761                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2772                                                  2762                                                  USB_ENDPOINT_SYNC_ASYNC|
2773                                                  2763                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2774                                         .rate    2764                                         .rates = SNDRV_PCM_RATE_44100,
2775                                         .rate    2765                                         .rate_min = 44100,
2776                                         .rate    2766                                         .rate_max = 44100,
2777                                         .nr_r    2767                                         .nr_rates = 1,
2778                                         .rate    2768                                         .rate_table = (unsigned int[]) { 44100 }
2779                                 }                2769                                 }
2780                         },                       2770                         },
2781                         QUIRK_COMPOSITE_END      2771                         QUIRK_COMPOSITE_END
2782                 }                                2772                 }
2783         }                                        2773         }
2784 },                                               2774 },
2785 {                                                2775 {
2786         /*                                       2776         /*
2787          * Pioneer DJ DJM-250MK2                 2777          * Pioneer DJ DJM-250MK2
2788          * PCM is 8 channels out @ 48 fixed (    2778          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
2789          * and 8 channels in @ 48 fixed (endp    2779          * and 8 channels in @ 48 fixed (endpoint 0x82).
2790          *                                       2780          *
2791          * Both playback and recording is wor    2781          * Both playback and recording is working, even simultaneously.
2792          *                                       2782          *
2793          * Playback channels could be mapped     2783          * Playback channels could be mapped to:
2794          *  - CH1                                2784          *  - CH1
2795          *  - CH2                                2785          *  - CH2
2796          *  - AUX                                2786          *  - AUX
2797          *                                       2787          *
2798          * Recording channels could be mapped    2788          * Recording channels could be mapped to:
2799          *  - Post CH1 Fader                     2789          *  - Post CH1 Fader
2800          *  - Post CH2 Fader                     2790          *  - Post CH2 Fader
2801          *  - Cross Fader A                      2791          *  - Cross Fader A
2802          *  - Cross Fader B                      2792          *  - Cross Fader B
2803          *  - MIC                                2793          *  - MIC
2804          *  - AUX                                2794          *  - AUX
2805          *  - REC OUT                            2795          *  - REC OUT
2806          *                                       2796          *
2807          * There is remaining problem with re    2797          * There is remaining problem with recording directly from PHONO/LINE.
2808          * If we map a channel to:               2798          * If we map a channel to:
2809          *  - CH1 Control Tone PHONO             2799          *  - CH1 Control Tone PHONO
2810          *  - CH1 Control Tone LINE              2800          *  - CH1 Control Tone LINE
2811          *  - CH2 Control Tone PHONO             2801          *  - CH2 Control Tone PHONO
2812          *  - CH2 Control Tone LINE              2802          *  - CH2 Control Tone LINE
2813          * it is silent.                         2803          * it is silent.
2814          * There is no signal even on other o    2804          * There is no signal even on other operating systems with official drivers.
2815          * The signal appears only when a sup    2805          * The signal appears only when a supported application is started.
2816          * This needs to be investigated yet.    2806          * This needs to be investigated yet...
2817          * (there is quite a lot communicatio    2807          * (there is quite a lot communication on the USB in both directions)
2818          *                                       2808          *
2819          * In current version this mixer coul    2809          * In current version this mixer could be used for playback
2820          * and for recording from vinyls (thr    2810          * and for recording from vinyls (through Post CH* Fader)
2821          * but not for DVS (Digital Vinyl Sys    2811          * but not for DVS (Digital Vinyl Systems) like in Mixxx.
2822          */                                      2812          */
2823         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017    2813         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),
2824         QUIRK_DRIVER_INFO {                      2814         QUIRK_DRIVER_INFO {
2825                 QUIRK_DATA_COMPOSITE {           2815                 QUIRK_DATA_COMPOSITE {
2826                         {                        2816                         {
2827                                 QUIRK_DATA_AU    2817                                 QUIRK_DATA_AUDIOFORMAT(0) {
2828                                         .form    2818                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2829                                         .chan    2819                                         .channels = 8, // outputs
2830                                         .ifac    2820                                         .iface = 0,
2831                                         .alts    2821                                         .altsetting = 1,
2832                                         .alts    2822                                         .altset_idx = 1,
2833                                         .endp    2823                                         .endpoint = 0x01,
2834                                         .ep_a    2824                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2835                                                  2825                                                 USB_ENDPOINT_SYNC_ASYNC,
2836                                         .rate    2826                                         .rates = SNDRV_PCM_RATE_48000,
2837                                         .rate    2827                                         .rate_min = 48000,
2838                                         .rate    2828                                         .rate_max = 48000,
2839                                         .nr_r    2829                                         .nr_rates = 1,
2840                                         .rate    2830                                         .rate_table = (unsigned int[]) { 48000 }
2841                                         }        2831                                         }
2842                         },                       2832                         },
2843                         {                        2833                         {
2844                                 QUIRK_DATA_AU    2834                                 QUIRK_DATA_AUDIOFORMAT(0) {
2845                                         .form    2835                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2846                                         .chan    2836                                         .channels = 8, // inputs
2847                                         .ifac    2837                                         .iface = 0,
2848                                         .alts    2838                                         .altsetting = 1,
2849                                         .alts    2839                                         .altset_idx = 1,
2850                                         .endp    2840                                         .endpoint = 0x82,
2851                                         .ep_i    2841                                         .ep_idx = 1,
2852                                         .ep_a    2842                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2853                                                  2843                                                 USB_ENDPOINT_SYNC_ASYNC|
2854                                                  2844                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
2855                                         .rate    2845                                         .rates = SNDRV_PCM_RATE_48000,
2856                                         .rate    2846                                         .rate_min = 48000,
2857                                         .rate    2847                                         .rate_max = 48000,
2858                                         .nr_r    2848                                         .nr_rates = 1,
2859                                         .rate    2849                                         .rate_table = (unsigned int[]) { 48000 }
2860                                 }                2850                                 }
2861                         },                       2851                         },
2862                         QUIRK_COMPOSITE_END      2852                         QUIRK_COMPOSITE_END
2863                 }                                2853                 }
2864         }                                        2854         }
2865 },                                               2855 },
2866 {                                                2856 {
2867         /*                                       2857         /*
2868          * PIONEER DJ DDJ-RB                     2858          * PIONEER DJ DDJ-RB
2869          * PCM is 4 channels out, 2 dummy cha    2859          * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed
2870          * The feedback for the output is the    2860          * The feedback for the output is the dummy input.
2871          */                                      2861          */
2872         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e    2862         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),
2873         QUIRK_DRIVER_INFO {                      2863         QUIRK_DRIVER_INFO {
2874                 QUIRK_DATA_COMPOSITE {           2864                 QUIRK_DATA_COMPOSITE {
2875                         {                        2865                         {
2876                                 QUIRK_DATA_AU    2866                                 QUIRK_DATA_AUDIOFORMAT(0) {
2877                                         .form    2867                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2878                                         .chan    2868                                         .channels = 4,
2879                                         .ifac    2869                                         .iface = 0,
2880                                         .alts    2870                                         .altsetting = 1,
2881                                         .alts    2871                                         .altset_idx = 1,
2882                                         .endp    2872                                         .endpoint = 0x01,
2883                                         .ep_a    2873                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2884                                                  2874                                                    USB_ENDPOINT_SYNC_ASYNC,
2885                                         .rate    2875                                         .rates = SNDRV_PCM_RATE_44100,
2886                                         .rate    2876                                         .rate_min = 44100,
2887                                         .rate    2877                                         .rate_max = 44100,
2888                                         .nr_r    2878                                         .nr_rates = 1,
2889                                         .rate    2879                                         .rate_table = (unsigned int[]) { 44100 }
2890                                 }                2880                                 }
2891                         },                       2881                         },
2892                         {                        2882                         {
2893                                 QUIRK_DATA_AU    2883                                 QUIRK_DATA_AUDIOFORMAT(0) {
2894                                         .form    2884                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2895                                         .chan    2885                                         .channels = 2,
2896                                         .ifac    2886                                         .iface = 0,
2897                                         .alts    2887                                         .altsetting = 1,
2898                                         .alts    2888                                         .altset_idx = 1,
2899                                         .endp    2889                                         .endpoint = 0x82,
2900                                         .ep_i    2890                                         .ep_idx = 1,
2901                                         .ep_a    2891                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2902                                                  2892                                                  USB_ENDPOINT_SYNC_ASYNC|
2903                                                  2893                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2904                                         .rate    2894                                         .rates = SNDRV_PCM_RATE_44100,
2905                                         .rate    2895                                         .rate_min = 44100,
2906                                         .rate    2896                                         .rate_max = 44100,
2907                                         .nr_r    2897                                         .nr_rates = 1,
2908                                         .rate    2898                                         .rate_table = (unsigned int[]) { 44100 }
2909                                 }                2899                                 }
2910                         },                       2900                         },
2911                         QUIRK_COMPOSITE_END      2901                         QUIRK_COMPOSITE_END
2912                 }                                2902                 }
2913         }                                        2903         }
2914 },                                               2904 },
2915                                                  2905 
2916 {                                                2906 {
2917         /*                                       2907         /*
2918          * PIONEER DJ DDJ-RR                     2908          * PIONEER DJ DDJ-RR
2919          * PCM is 6 channels out & 4 channels    2909          * PCM is 6 channels out & 4 channels in @ 44.1 fixed
2920          */                                      2910          */
2921         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d    2911         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d),
2922         QUIRK_DRIVER_INFO {                      2912         QUIRK_DRIVER_INFO {
2923                 QUIRK_DATA_COMPOSITE {           2913                 QUIRK_DATA_COMPOSITE {
2924                         {                        2914                         {
2925                                 QUIRK_DATA_AU    2915                                 QUIRK_DATA_AUDIOFORMAT(0) {
2926                                         .form    2916                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2927                                         .chan    2917                                         .channels = 6, //Master, Headphones & Booth
2928                                         .ifac    2918                                         .iface = 0,
2929                                         .alts    2919                                         .altsetting = 1,
2930                                         .alts    2920                                         .altset_idx = 1,
2931                                         .endp    2921                                         .endpoint = 0x01,
2932                                         .ep_a    2922                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2933                                                  2923                                                    USB_ENDPOINT_SYNC_ASYNC,
2934                                         .rate    2924                                         .rates = SNDRV_PCM_RATE_44100,
2935                                         .rate    2925                                         .rate_min = 44100,
2936                                         .rate    2926                                         .rate_max = 44100,
2937                                         .nr_r    2927                                         .nr_rates = 1,
2938                                         .rate    2928                                         .rate_table = (unsigned int[]) { 44100 }
2939                                 }                2929                                 }
2940                         },                       2930                         },
2941                         {                        2931                         {
2942                                 QUIRK_DATA_AU    2932                                 QUIRK_DATA_AUDIOFORMAT(0) {
2943                                         .form    2933                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2944                                         .chan    2934                                         .channels = 4, //2x RCA inputs (CH1 & CH2)
2945                                         .ifac    2935                                         .iface = 0,
2946                                         .alts    2936                                         .altsetting = 1,
2947                                         .alts    2937                                         .altset_idx = 1,
2948                                         .endp    2938                                         .endpoint = 0x82,
2949                                         .ep_i    2939                                         .ep_idx = 1,
2950                                         .ep_a    2940                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2951                                                  2941                                                  USB_ENDPOINT_SYNC_ASYNC|
2952                                                  2942                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2953                                         .rate    2943                                         .rates = SNDRV_PCM_RATE_44100,
2954                                         .rate    2944                                         .rate_min = 44100,
2955                                         .rate    2945                                         .rate_max = 44100,
2956                                         .nr_r    2946                                         .nr_rates = 1,
2957                                         .rate    2947                                         .rate_table = (unsigned int[]) { 44100 }
2958                                 }                2948                                 }
2959                         },                       2949                         },
2960                         QUIRK_COMPOSITE_END      2950                         QUIRK_COMPOSITE_END
2961                 }                                2951                 }
2962         }                                        2952         }
2963 },                                               2953 },
2964                                                  2954 
2965 {                                                2955 {
2966         /*                                       2956         /*
2967          * PIONEER DJ DDJ-SR2                    2957          * PIONEER DJ DDJ-SR2
2968          * PCM is 4 channels out, 6 channels     2958          * PCM is 4 channels out, 6 channels in @ 44.1 fixed
2969          * The Feedback for the output is the    2959          * The Feedback for the output is the input
2970          */                                      2960          */
2971         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e    2961         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e),
2972         QUIRK_DRIVER_INFO {                      2962         QUIRK_DRIVER_INFO {
2973                 QUIRK_DATA_COMPOSITE {           2963                 QUIRK_DATA_COMPOSITE {
2974                         {                        2964                         {
2975                                 QUIRK_DATA_AU    2965                                 QUIRK_DATA_AUDIOFORMAT(0) {
2976                                         .form    2966                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2977                                         .chan    2967                                         .channels = 4,
2978                                         .ifac    2968                                         .iface = 0,
2979                                         .alts    2969                                         .altsetting = 1,
2980                                         .alts    2970                                         .altset_idx = 1,
2981                                         .endp    2971                                         .endpoint = 0x01,
2982                                         .ep_a    2972                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2983                                                  2973                                                 USB_ENDPOINT_SYNC_ASYNC,
2984                                         .rate    2974                                         .rates = SNDRV_PCM_RATE_44100,
2985                                         .rate    2975                                         .rate_min = 44100,
2986                                         .rate    2976                                         .rate_max = 44100,
2987                                         .nr_r    2977                                         .nr_rates = 1,
2988                                         .rate    2978                                         .rate_table = (unsigned int[]) { 44100 }
2989                                 }                2979                                 }
2990                         },                       2980                         },
2991                         {                        2981                         {
2992                                 QUIRK_DATA_AU    2982                                 QUIRK_DATA_AUDIOFORMAT(0) {
2993                                         .form    2983                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2994                                         .chan    2984                                         .channels = 6,
2995                                         .ifac    2985                                         .iface = 0,
2996                                         .alts    2986                                         .altsetting = 1,
2997                                         .alts    2987                                         .altset_idx = 1,
2998                                         .endp    2988                                         .endpoint = 0x82,
2999                                         .ep_i    2989                                         .ep_idx = 1,
3000                                         .ep_a    2990                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3001                                                  2991                                                 USB_ENDPOINT_SYNC_ASYNC|
3002                                         USB_E    2992                                         USB_ENDPOINT_USAGE_IMPLICIT_FB,
3003                                         .rate    2993                                         .rates = SNDRV_PCM_RATE_44100,
3004                                         .rate    2994                                         .rate_min = 44100,
3005                                         .rate    2995                                         .rate_max = 44100,
3006                                         .nr_r    2996                                         .nr_rates = 1,
3007                                         .rate    2997                                         .rate_table = (unsigned int[]) { 44100 }
3008                                 }                2998                                 }
3009                         },                       2999                         },
3010                         QUIRK_COMPOSITE_END      3000                         QUIRK_COMPOSITE_END
3011                 }                                3001                 }
3012         }                                        3002         }
3013 },                                               3003 },
3014                                                  3004 
3015 {                                                3005 {
3016         /*                                       3006         /*
3017          * Pioneer DJ DJM-900NXS2                3007          * Pioneer DJ DJM-900NXS2
3018          * 10 channels playback & 12 channels    3008          * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE
3019          */                                      3009          */
3020         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a    3010         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a),
3021         QUIRK_DRIVER_INFO {                      3011         QUIRK_DRIVER_INFO {
3022                 QUIRK_DATA_COMPOSITE {           3012                 QUIRK_DATA_COMPOSITE {
3023                         {                        3013                         {
3024                                 QUIRK_DATA_AU    3014                                 QUIRK_DATA_AUDIOFORMAT(0) {
3025                                         .form    3015                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3026                                         .chan    3016                                         .channels = 10,
3027                                         .ifac    3017                                         .iface = 0,
3028                                         .alts    3018                                         .altsetting = 1,
3029                                         .alts    3019                                         .altset_idx = 1,
3030                                         .endp    3020                                         .endpoint = 0x01,
3031                                         .ep_a    3021                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3032                                             U    3022                                             USB_ENDPOINT_SYNC_ASYNC,
3033                                         .rate    3023                                         .rates = SNDRV_PCM_RATE_44100|
3034                                             S    3024                                             SNDRV_PCM_RATE_48000|
3035                                             S    3025                                             SNDRV_PCM_RATE_96000,
3036                                         .rate    3026                                         .rate_min = 44100,
3037                                         .rate    3027                                         .rate_max = 96000,
3038                                         .nr_r    3028                                         .nr_rates = 3,
3039                                         .rate    3029                                         .rate_table = (unsigned int[]) {
3040                                                  3030                                                 44100, 48000, 96000
3041                                         }        3031                                         }
3042                                 }                3032                                 }
3043                         },                       3033                         },
3044                         {                        3034                         {
3045                                 QUIRK_DATA_AU    3035                                 QUIRK_DATA_AUDIOFORMAT(0) {
3046                                         .form    3036                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3047                                         .chan    3037                                         .channels = 12,
3048                                         .ifac    3038                                         .iface = 0,
3049                                         .alts    3039                                         .altsetting = 1,
3050                                         .alts    3040                                         .altset_idx = 1,
3051                                         .endp    3041                                         .endpoint = 0x82,
3052                                         .ep_i    3042                                         .ep_idx = 1,
3053                                         .ep_a    3043                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3054                                             U    3044                                             USB_ENDPOINT_SYNC_ASYNC|
3055                                             U    3045                                             USB_ENDPOINT_USAGE_IMPLICIT_FB,
3056                                         .rate    3046                                         .rates = SNDRV_PCM_RATE_44100|
3057                                             S    3047                                             SNDRV_PCM_RATE_48000|
3058                                             S    3048                                             SNDRV_PCM_RATE_96000,
3059                                         .rate    3049                                         .rate_min = 44100,
3060                                         .rate    3050                                         .rate_max = 96000,
3061                                         .nr_r    3051                                         .nr_rates = 3,
3062                                         .rate    3052                                         .rate_table = (unsigned int[]) {
3063                                                  3053                                                 44100, 48000, 96000
3064                                         }        3054                                         }
3065                                 }                3055                                 }
3066                         },                       3056                         },
3067                         QUIRK_COMPOSITE_END      3057                         QUIRK_COMPOSITE_END
3068                 }                                3058                 }
3069         }                                        3059         }
3070 },                                               3060 },
3071                                                  3061 
3072 {                                                3062 {
3073         /*                                       3063         /*
3074          * PIONEER DJ DDJ-800                    3064          * PIONEER DJ DDJ-800
3075          * PCM is 6 channels out, 6 channels     3065          * PCM is 6 channels out, 6 channels in @ 44.1 fixed
3076          * The Feedback for the output is the    3066          * The Feedback for the output is the input
3077          */                                      3067          */
3078         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029    3068         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029),
3079         QUIRK_DRIVER_INFO {                      3069         QUIRK_DRIVER_INFO {
3080                 QUIRK_DATA_COMPOSITE {           3070                 QUIRK_DATA_COMPOSITE {
3081                         {                        3071                         {
3082                                 QUIRK_DATA_AU    3072                                 QUIRK_DATA_AUDIOFORMAT(0) {
3083                                         .form    3073                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3084                                         .chan    3074                                         .channels = 6,
3085                                         .ifac    3075                                         .iface = 0,
3086                                         .alts    3076                                         .altsetting = 1,
3087                                         .alts    3077                                         .altset_idx = 1,
3088                                         .endp    3078                                         .endpoint = 0x01,
3089                                         .ep_a    3079                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3090                                                  3080                                                 USB_ENDPOINT_SYNC_ASYNC,
3091                                         .rate    3081                                         .rates = SNDRV_PCM_RATE_44100,
3092                                         .rate    3082                                         .rate_min = 44100,
3093                                         .rate    3083                                         .rate_max = 44100,
3094                                         .nr_r    3084                                         .nr_rates = 1,
3095                                         .rate    3085                                         .rate_table = (unsigned int[]) { 44100 }
3096                                 }                3086                                 }
3097                         },                       3087                         },
3098                         {                        3088                         {
3099                                 QUIRK_DATA_AU    3089                                 QUIRK_DATA_AUDIOFORMAT(0) {
3100                                         .form    3090                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3101                                         .chan    3091                                         .channels = 6,
3102                                         .ifac    3092                                         .iface = 0,
3103                                         .alts    3093                                         .altsetting = 1,
3104                                         .alts    3094                                         .altset_idx = 1,
3105                                         .endp    3095                                         .endpoint = 0x82,
3106                                         .ep_i    3096                                         .ep_idx = 1,
3107                                         .ep_a    3097                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3108                                                  3098                                                 USB_ENDPOINT_SYNC_ASYNC|
3109                                         USB_E    3099                                         USB_ENDPOINT_USAGE_IMPLICIT_FB,
3110                                         .rate    3100                                         .rates = SNDRV_PCM_RATE_44100,
3111                                         .rate    3101                                         .rate_min = 44100,
3112                                         .rate    3102                                         .rate_max = 44100,
3113                                         .nr_r    3103                                         .nr_rates = 1,
3114                                         .rate    3104                                         .rate_table = (unsigned int[]) { 44100 }
3115                                 }                3105                                 }
3116                         },                       3106                         },
3117                         QUIRK_COMPOSITE_END      3107                         QUIRK_COMPOSITE_END
3118                 }                                3108                 }
3119         }                                        3109         }
3120 },                                               3110 },
3121                                                  3111 
3122 /*                                               3112 /*
3123  * MacroSilicon MS2100/MS2106 based AV captur    3113  * MacroSilicon MS2100/MS2106 based AV capture cards
3124  *                                               3114  *
3125  * These claim 96kHz 1ch in the descriptors,     3115  * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3126  * They also need QUIRK_FLAG_ALIGN_TRANSFER,     3116  * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if
3127  * they pretend to be 96kHz mono as a workaro    3117  * they pretend to be 96kHz mono as a workaround for stereo being broken
3128  * by that...                                    3118  * by that...
3129  *                                               3119  *
3130  * They also have an issue with initial strea    3120  * They also have an issue with initial stream alignment that causes the
3131  * channels to be swapped and out of phase, w    3121  * channels to be swapped and out of phase, which is dealt with in quirks.c.
3132  */                                              3122  */
3133 {                                                3123 {
3134         USB_AUDIO_DEVICE(0x534d, 0x0021),        3124         USB_AUDIO_DEVICE(0x534d, 0x0021),
3135         QUIRK_DRIVER_INFO {                      3125         QUIRK_DRIVER_INFO {
3136                 .vendor_name = "MacroSilicon"    3126                 .vendor_name = "MacroSilicon",
3137                 .product_name = "MS210x",        3127                 .product_name = "MS210x",
3138                 QUIRK_DATA_COMPOSITE {           3128                 QUIRK_DATA_COMPOSITE {
3139                         { QUIRK_DATA_STANDARD    3129                         { QUIRK_DATA_STANDARD_MIXER(2) },
3140                         {                        3130                         {
3141                                 QUIRK_DATA_AU    3131                                 QUIRK_DATA_AUDIOFORMAT(3) {
3142                                         .form    3132                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
3143                                         .chan    3133                                         .channels = 2,
3144                                         .ifac    3134                                         .iface = 3,
3145                                         .alts    3135                                         .altsetting = 1,
3146                                         .alts    3136                                         .altset_idx = 1,
3147                                         .attr    3137                                         .attributes = 0,
3148                                         .endp    3138                                         .endpoint = 0x82,
3149                                         .ep_a    3139                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3150                                                  3140                                                 USB_ENDPOINT_SYNC_ASYNC,
3151                                         .rate    3141                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
3152                                         .rate    3142                                         .rate_min = 48000,
3153                                         .rate    3143                                         .rate_max = 48000,
3154                                 }                3144                                 }
3155                         },                       3145                         },
3156                         QUIRK_COMPOSITE_END      3146                         QUIRK_COMPOSITE_END
3157                 }                                3147                 }
3158         }                                        3148         }
3159 },                                               3149 },
3160                                                  3150 
3161 /*                                               3151 /*
3162  * MacroSilicon MS2109 based HDMI capture car    3152  * MacroSilicon MS2109 based HDMI capture cards
3163  *                                               3153  *
3164  * These claim 96kHz 1ch in the descriptors,     3154  * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3165  * They also need QUIRK_FLAG_ALIGN_TRANSFER,     3155  * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if
3166  * they pretend to be 96kHz mono as a workaro    3156  * they pretend to be 96kHz mono as a workaround for stereo being broken
3167  * by that...                                    3157  * by that...
3168  *                                               3158  *
3169  * They also have an issue with initial strea    3159  * They also have an issue with initial stream alignment that causes the
3170  * channels to be swapped and out of phase, w    3160  * channels to be swapped and out of phase, which is dealt with in quirks.c.
3171  */                                              3161  */
3172 {                                                3162 {
3173         USB_AUDIO_DEVICE(0x534d, 0x2109),        3163         USB_AUDIO_DEVICE(0x534d, 0x2109),
3174         QUIRK_DRIVER_INFO {                      3164         QUIRK_DRIVER_INFO {
3175                 .vendor_name = "MacroSilicon"    3165                 .vendor_name = "MacroSilicon",
3176                 .product_name = "MS2109",        3166                 .product_name = "MS2109",
3177                 QUIRK_DATA_COMPOSITE {           3167                 QUIRK_DATA_COMPOSITE {
3178                         { QUIRK_DATA_STANDARD    3168                         { QUIRK_DATA_STANDARD_MIXER(2) },
3179                         {                        3169                         {
3180                                 QUIRK_DATA_AU    3170                                 QUIRK_DATA_AUDIOFORMAT(3) {
3181                                         .form    3171                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
3182                                         .chan    3172                                         .channels = 2,
3183                                         .ifac    3173                                         .iface = 3,
3184                                         .alts    3174                                         .altsetting = 1,
3185                                         .alts    3175                                         .altset_idx = 1,
3186                                         .attr    3176                                         .attributes = 0,
3187                                         .endp    3177                                         .endpoint = 0x82,
3188                                         .ep_a    3178                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3189                                                  3179                                                 USB_ENDPOINT_SYNC_ASYNC,
3190                                         .rate    3180                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
3191                                         .rate    3181                                         .rate_min = 48000,
3192                                         .rate    3182                                         .rate_max = 48000,
3193                                 }                3183                                 }
3194                         },                       3184                         },
3195                         QUIRK_COMPOSITE_END      3185                         QUIRK_COMPOSITE_END
3196                 }                                3186                 }
3197         }                                        3187         }
3198 },                                               3188 },
3199 {                                                3189 {
3200         /*                                       3190         /*
3201          * Pioneer DJ DJM-750                    3191          * Pioneer DJ DJM-750
3202          * 8 channels playback & 8 channels c    3192          * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE
3203          */                                      3193          */
3204         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f    3194         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),
3205         QUIRK_DRIVER_INFO {                      3195         QUIRK_DRIVER_INFO {
3206                 QUIRK_DATA_COMPOSITE {           3196                 QUIRK_DATA_COMPOSITE {
3207                         {                        3197                         {
3208                                 QUIRK_DATA_AU    3198                                 QUIRK_DATA_AUDIOFORMAT(0) {
3209                                         .form    3199                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3210                                         .chan    3200                                         .channels = 8,
3211                                         .ifac    3201                                         .iface = 0,
3212                                         .alts    3202                                         .altsetting = 1,
3213                                         .alts    3203                                         .altset_idx = 1,
3214                                         .endp    3204                                         .endpoint = 0x05,
3215                                         .ep_a    3205                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3216                                             U    3206                                             USB_ENDPOINT_SYNC_ASYNC,
3217                                         .rate    3207                                         .rates = SNDRV_PCM_RATE_44100|
3218                                                  3208                                                 SNDRV_PCM_RATE_48000|
3219                                                  3209                                                 SNDRV_PCM_RATE_96000,
3220                                         .rate    3210                                         .rate_min = 44100,
3221                                         .rate    3211                                         .rate_max = 96000,
3222                                         .nr_r    3212                                         .nr_rates = 3,
3223                                         .rate    3213                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3224                                 }                3214                                 }
3225                         },                       3215                         },
3226                         {                        3216                         {
3227                                 QUIRK_DATA_AU    3217                                 QUIRK_DATA_AUDIOFORMAT(0) {
3228                                         .form    3218                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3229                                         .chan    3219                                         .channels = 8,
3230                                         .ifac    3220                                         .iface = 0,
3231                                         .alts    3221                                         .altsetting = 1,
3232                                         .alts    3222                                         .altset_idx = 1,
3233                                         .endp    3223                                         .endpoint = 0x86,
3234                                         .ep_i    3224                                         .ep_idx = 1,
3235                                         .ep_a    3225                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3236                                                  3226                                                 USB_ENDPOINT_SYNC_ASYNC|
3237                                                  3227                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3238                                         .rate    3228                                         .rates = SNDRV_PCM_RATE_44100|
3239                                                  3229                                                 SNDRV_PCM_RATE_48000|
3240                                                  3230                                                 SNDRV_PCM_RATE_96000,
3241                                         .rate    3231                                         .rate_min = 44100,
3242                                         .rate    3232                                         .rate_max = 96000,
3243                                         .nr_r    3233                                         .nr_rates = 3,
3244                                         .rate    3234                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3245                                 }                3235                                 }
3246                         },                       3236                         },
3247                         QUIRK_COMPOSITE_END      3237                         QUIRK_COMPOSITE_END
3248                 }                                3238                 }
3249         }                                        3239         }
3250 },                                               3240 },
3251 {                                                3241 {
3252         /*                                       3242         /*
3253          * Pioneer DJ DJM-750MK2                 3243          * Pioneer DJ DJM-750MK2
3254          * 10 channels playback & 12 channels    3244          * 10 channels playback & 12 channels capture @ 48kHz S24LE
3255          */                                      3245          */
3256         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b    3246         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b),
3257         QUIRK_DRIVER_INFO {                      3247         QUIRK_DRIVER_INFO {
3258                 QUIRK_DATA_COMPOSITE {           3248                 QUIRK_DATA_COMPOSITE {
3259                         {                        3249                         {
3260                                 QUIRK_DATA_AU    3250                                 QUIRK_DATA_AUDIOFORMAT(0) {
3261                                         .form    3251                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3262                                         .chan    3252                                         .channels = 10,
3263                                         .ifac    3253                                         .iface = 0,
3264                                         .alts    3254                                         .altsetting = 1,
3265                                         .alts    3255                                         .altset_idx = 1,
3266                                         .endp    3256                                         .endpoint = 0x01,
3267                                         .ep_a    3257                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3268                                             U    3258                                             USB_ENDPOINT_SYNC_ASYNC,
3269                                         .rate    3259                                         .rates = SNDRV_PCM_RATE_48000,
3270                                         .rate    3260                                         .rate_min = 48000,
3271                                         .rate    3261                                         .rate_max = 48000,
3272                                         .nr_r    3262                                         .nr_rates = 1,
3273                                         .rate    3263                                         .rate_table = (unsigned int[]) {
3274                                                  3264                                                 48000
3275                                         }        3265                                         }
3276                                 }                3266                                 }
3277                         },                       3267                         },
3278                         {                        3268                         {
3279                                 QUIRK_DATA_AU    3269                                 QUIRK_DATA_AUDIOFORMAT(0) {
3280                                         .form    3270                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3281                                         .chan    3271                                         .channels = 12,
3282                                         .ifac    3272                                         .iface = 0,
3283                                         .alts    3273                                         .altsetting = 1,
3284                                         .alts    3274                                         .altset_idx = 1,
3285                                         .endp    3275                                         .endpoint = 0x82,
3286                                         .ep_i    3276                                         .ep_idx = 1,
3287                                         .ep_a    3277                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3288                                                  3278                                                 USB_ENDPOINT_SYNC_ASYNC|
3289                                                  3279                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3290                                         .rate    3280                                         .rates = SNDRV_PCM_RATE_48000,
3291                                         .rate    3281                                         .rate_min = 48000,
3292                                         .rate    3282                                         .rate_max = 48000,
3293                                         .nr_r    3283                                         .nr_rates = 1,
3294                                         .rate    3284                                         .rate_table = (unsigned int[]) { 48000 }
3295                                 }                3285                                 }
3296                         },                       3286                         },
3297                         QUIRK_COMPOSITE_END      3287                         QUIRK_COMPOSITE_END
3298                 }                                3288                 }
3299         }                                        3289         }
3300 },                                               3290 },
3301 {                                                3291 {
3302         /*                                       3292         /*
3303          * Pioneer DJ DJM-850                    3293          * Pioneer DJ DJM-850
3304          * 8 channels playback and 8 channels    3294          * 8 channels playback and 8 channels capture @ 44.1/48/96kHz S24LE
3305          * Playback on EP 0x05                   3295          * Playback on EP 0x05
3306          * Capture on EP 0x86                    3296          * Capture on EP 0x86
3307          */                                      3297          */
3308         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163    3298         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163),
3309         QUIRK_DRIVER_INFO {                      3299         QUIRK_DRIVER_INFO {
3310                 QUIRK_DATA_COMPOSITE {           3300                 QUIRK_DATA_COMPOSITE {
3311                         {                        3301                         {
3312                                 QUIRK_DATA_AU    3302                                 QUIRK_DATA_AUDIOFORMAT(0) {
3313                                         .form    3303                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3314                                         .chan    3304                                         .channels = 8,
3315                                         .ifac    3305                                         .iface = 0,
3316                                         .alts    3306                                         .altsetting = 1,
3317                                         .alts    3307                                         .altset_idx = 1,
3318                                         .endp    3308                                         .endpoint = 0x05,
3319                                         .ep_a    3309                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3320                                             U    3310                                             USB_ENDPOINT_SYNC_ASYNC|
3321                                                  3311                                                 USB_ENDPOINT_USAGE_DATA,
3322                                         .rate    3312                                         .rates = SNDRV_PCM_RATE_44100|
3323                                                  3313                                                 SNDRV_PCM_RATE_48000|
3324                                                  3314                                                 SNDRV_PCM_RATE_96000,
3325                                         .rate    3315                                         .rate_min = 44100,
3326                                         .rate    3316                                         .rate_max = 96000,
3327                                         .nr_r    3317                                         .nr_rates = 3,
3328                                         .rate    3318                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3329                                 }                3319                                 }
3330                         },                       3320                         },
3331                         {                        3321                         {
3332                                 QUIRK_DATA_AU    3322                                 QUIRK_DATA_AUDIOFORMAT(0) {
3333                                         .form    3323                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3334                                         .chan    3324                                         .channels = 8,
3335                                         .ifac    3325                                         .iface = 0,
3336                                         .alts    3326                                         .altsetting = 1,
3337                                         .alts    3327                                         .altset_idx = 1,
3338                                         .endp    3328                                         .endpoint = 0x86,
3339                                         .ep_i    3329                                         .ep_idx = 1,
3340                                         .ep_a    3330                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3341                                                  3331                                                 USB_ENDPOINT_SYNC_ASYNC|
3342                                                  3332                                                 USB_ENDPOINT_USAGE_DATA,
3343                                         .rate    3333                                         .rates = SNDRV_PCM_RATE_44100|
3344                                                  3334                                                 SNDRV_PCM_RATE_48000|
3345                                                  3335                                                 SNDRV_PCM_RATE_96000,
3346                                         .rate    3336                                         .rate_min = 44100,
3347                                         .rate    3337                                         .rate_max = 96000,
3348                                         .nr_r    3338                                         .nr_rates = 3,
3349                                         .rate    3339                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3350                                 }                3340                                 }
3351                         },                       3341                         },
3352                         QUIRK_COMPOSITE_END      3342                         QUIRK_COMPOSITE_END
3353                 }                                3343                 }
3354         }                                        3344         }
3355 },                                               3345 },
3356 {                                                3346 {
3357         /*                                       3347         /*
3358          * Pioneer DJ DJM-450                    3348          * Pioneer DJ DJM-450
3359          * PCM is 8 channels out @ 48 fixed (    3349          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
3360          * and 8 channels in @ 48 fixed (endp    3350          * and 8 channels in @ 48 fixed (endpoint 0x82).
3361          */                                      3351          */
3362         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013    3352         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),
3363         QUIRK_DRIVER_INFO {                      3353         QUIRK_DRIVER_INFO {
3364                 QUIRK_DATA_COMPOSITE {           3354                 QUIRK_DATA_COMPOSITE {
3365                         {                        3355                         {
3366                                 QUIRK_DATA_AU    3356                                 QUIRK_DATA_AUDIOFORMAT(0) {
3367                                         .form    3357                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3368                                         .chan    3358                                         .channels = 8, // outputs
3369                                         .ifac    3359                                         .iface = 0,
3370                                         .alts    3360                                         .altsetting = 1,
3371                                         .alts    3361                                         .altset_idx = 1,
3372                                         .endp    3362                                         .endpoint = 0x01,
3373                                         .ep_a    3363                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3374                                                  3364                                                 USB_ENDPOINT_SYNC_ASYNC,
3375                                         .rate    3365                                         .rates = SNDRV_PCM_RATE_48000,
3376                                         .rate    3366                                         .rate_min = 48000,
3377                                         .rate    3367                                         .rate_max = 48000,
3378                                         .nr_r    3368                                         .nr_rates = 1,
3379                                         .rate    3369                                         .rate_table = (unsigned int[]) { 48000 }
3380                                         }        3370                                         }
3381                         },                       3371                         },
3382                         {                        3372                         {
3383                                 QUIRK_DATA_AU    3373                                 QUIRK_DATA_AUDIOFORMAT(0) {
3384                                         .form    3374                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3385                                         .chan    3375                                         .channels = 8, // inputs
3386                                         .ifac    3376                                         .iface = 0,
3387                                         .alts    3377                                         .altsetting = 1,
3388                                         .alts    3378                                         .altset_idx = 1,
3389                                         .endp    3379                                         .endpoint = 0x82,
3390                                         .ep_i    3380                                         .ep_idx = 1,
3391                                         .ep_a    3381                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3392                                                  3382                                                 USB_ENDPOINT_SYNC_ASYNC|
3393                                                  3383                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3394                                         .rate    3384                                         .rates = SNDRV_PCM_RATE_48000,
3395                                         .rate    3385                                         .rate_min = 48000,
3396                                         .rate    3386                                         .rate_max = 48000,
3397                                         .nr_r    3387                                         .nr_rates = 1,
3398                                         .rate    3388                                         .rate_table = (unsigned int[]) { 48000 }
3399                                 }                3389                                 }
3400                         },                       3390                         },
3401                         QUIRK_COMPOSITE_END      3391                         QUIRK_COMPOSITE_END
3402                 }                                3392                 }
3403         }                                        3393         }
3404 },                                               3394 },
3405 {                                                3395 {
3406         /*                                       3396         /*
3407          * Sennheiser GSP670                     3397          * Sennheiser GSP670
3408          * Change order of interfaces loaded     3398          * Change order of interfaces loaded
3409          */                                      3399          */
3410         USB_DEVICE(0x1395, 0x0300),              3400         USB_DEVICE(0x1395, 0x0300),
3411         .bInterfaceClass = USB_CLASS_PER_INTE    3401         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
3412         QUIRK_DRIVER_INFO {                      3402         QUIRK_DRIVER_INFO {
3413                 QUIRK_DATA_COMPOSITE {           3403                 QUIRK_DATA_COMPOSITE {
3414                         // Communication         3404                         // Communication
3415                         { QUIRK_DATA_STANDARD    3405                         { QUIRK_DATA_STANDARD_AUDIO(3) },
3416                         // Recording             3406                         // Recording
3417                         { QUIRK_DATA_STANDARD    3407                         { QUIRK_DATA_STANDARD_AUDIO(4) },
3418                         // Main                  3408                         // Main
3419                         { QUIRK_DATA_STANDARD    3409                         { QUIRK_DATA_STANDARD_AUDIO(1) },
3420                         QUIRK_COMPOSITE_END      3410                         QUIRK_COMPOSITE_END
3421                 }                                3411                 }
3422         }                                        3412         }
3423 },                                               3413 },
3424 {                                                3414 {
3425         /*                                       3415         /*
3426          * Fiero SC-01 (firmware v1.0.0 @ 48     3416          * Fiero SC-01 (firmware v1.0.0 @ 48 kHz)
3427          */                                      3417          */
3428         USB_DEVICE(0x2b53, 0x0023),              3418         USB_DEVICE(0x2b53, 0x0023),
3429         QUIRK_DRIVER_INFO {                      3419         QUIRK_DRIVER_INFO {
3430                 .vendor_name = "Fiero",          3420                 .vendor_name = "Fiero",
3431                 .product_name = "SC-01",         3421                 .product_name = "SC-01",
3432                 QUIRK_DATA_COMPOSITE {           3422                 QUIRK_DATA_COMPOSITE {
3433                         { QUIRK_DATA_STANDARD    3423                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3434                         /* Playback */           3424                         /* Playback */
3435                         {                        3425                         {
3436                                 QUIRK_DATA_AU    3426                                 QUIRK_DATA_AUDIOFORMAT(1) {
3437                                         .form    3427                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3438                                         .chan    3428                                         .channels = 2,
3439                                         .fmt_    3429                                         .fmt_bits = 24,
3440                                         .ifac    3430                                         .iface = 1,
3441                                         .alts    3431                                         .altsetting = 1,
3442                                         .alts    3432                                         .altset_idx = 1,
3443                                         .endp    3433                                         .endpoint = 0x01,
3444                                         .ep_a    3434                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3445                                                  3435                                                    USB_ENDPOINT_SYNC_ASYNC,
3446                                         .rate    3436                                         .rates = SNDRV_PCM_RATE_48000,
3447                                         .rate    3437                                         .rate_min = 48000,
3448                                         .rate    3438                                         .rate_max = 48000,
3449                                         .nr_r    3439                                         .nr_rates = 1,
3450                                         .rate    3440                                         .rate_table = (unsigned int[]) { 48000 },
3451                                         .cloc    3441                                         .clock = 0x29
3452                                 }                3442                                 }
3453                         },                       3443                         },
3454                         /* Capture */            3444                         /* Capture */
3455                         {                        3445                         {
3456                                 QUIRK_DATA_AU    3446                                 QUIRK_DATA_AUDIOFORMAT(2) {
3457                                         .form    3447                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3458                                         .chan    3448                                         .channels = 2,
3459                                         .fmt_    3449                                         .fmt_bits = 24,
3460                                         .ifac    3450                                         .iface = 2,
3461                                         .alts    3451                                         .altsetting = 1,
3462                                         .alts    3452                                         .altset_idx = 1,
3463                                         .endp    3453                                         .endpoint = 0x82,
3464                                         .ep_a    3454                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3465                                                  3455                                                    USB_ENDPOINT_SYNC_ASYNC |
3466                                                  3456                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3467                                         .rate    3457                                         .rates = SNDRV_PCM_RATE_48000,
3468                                         .rate    3458                                         .rate_min = 48000,
3469                                         .rate    3459                                         .rate_max = 48000,
3470                                         .nr_r    3460                                         .nr_rates = 1,
3471                                         .rate    3461                                         .rate_table = (unsigned int[]) { 48000 },
3472                                         .cloc    3462                                         .clock = 0x29
3473                                 }                3463                                 }
3474                         },                       3464                         },
3475                         QUIRK_COMPOSITE_END      3465                         QUIRK_COMPOSITE_END
3476                 }                                3466                 }
3477         }                                        3467         }
3478 },                                               3468 },
3479 {                                                3469 {
3480         /*                                       3470         /*
3481          * Fiero SC-01 (firmware v1.0.0 @ 96     3471          * Fiero SC-01 (firmware v1.0.0 @ 96 kHz)
3482          */                                      3472          */
3483         USB_DEVICE(0x2b53, 0x0024),              3473         USB_DEVICE(0x2b53, 0x0024),
3484         QUIRK_DRIVER_INFO {                      3474         QUIRK_DRIVER_INFO {
3485                 .vendor_name = "Fiero",          3475                 .vendor_name = "Fiero",
3486                 .product_name = "SC-01",         3476                 .product_name = "SC-01",
3487                 QUIRK_DATA_COMPOSITE {           3477                 QUIRK_DATA_COMPOSITE {
3488                         { QUIRK_DATA_STANDARD    3478                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3489                         /* Playback */           3479                         /* Playback */
3490                         {                        3480                         {
3491                                 QUIRK_DATA_AU    3481                                 QUIRK_DATA_AUDIOFORMAT(1) {
3492                                         .form    3482                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3493                                         .chan    3483                                         .channels = 2,
3494                                         .fmt_    3484                                         .fmt_bits = 24,
3495                                         .ifac    3485                                         .iface = 1,
3496                                         .alts    3486                                         .altsetting = 1,
3497                                         .alts    3487                                         .altset_idx = 1,
3498                                         .endp    3488                                         .endpoint = 0x01,
3499                                         .ep_a    3489                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3500                                                  3490                                                    USB_ENDPOINT_SYNC_ASYNC,
3501                                         .rate    3491                                         .rates = SNDRV_PCM_RATE_96000,
3502                                         .rate    3492                                         .rate_min = 96000,
3503                                         .rate    3493                                         .rate_max = 96000,
3504                                         .nr_r    3494                                         .nr_rates = 1,
3505                                         .rate    3495                                         .rate_table = (unsigned int[]) { 96000 },
3506                                         .cloc    3496                                         .clock = 0x29
3507                                 }                3497                                 }
3508                         },                       3498                         },
3509                         /* Capture */            3499                         /* Capture */
3510                         {                        3500                         {
3511                                 QUIRK_DATA_AU    3501                                 QUIRK_DATA_AUDIOFORMAT(2) {
3512                                         .form    3502                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3513                                         .chan    3503                                         .channels = 2,
3514                                         .fmt_    3504                                         .fmt_bits = 24,
3515                                         .ifac    3505                                         .iface = 2,
3516                                         .alts    3506                                         .altsetting = 1,
3517                                         .alts    3507                                         .altset_idx = 1,
3518                                         .endp    3508                                         .endpoint = 0x82,
3519                                         .ep_a    3509                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3520                                                  3510                                                    USB_ENDPOINT_SYNC_ASYNC |
3521                                                  3511                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3522                                         .rate    3512                                         .rates = SNDRV_PCM_RATE_96000,
3523                                         .rate    3513                                         .rate_min = 96000,
3524                                         .rate    3514                                         .rate_max = 96000,
3525                                         .nr_r    3515                                         .nr_rates = 1,
3526                                         .rate    3516                                         .rate_table = (unsigned int[]) { 96000 },
3527                                         .cloc    3517                                         .clock = 0x29
3528                                 }                3518                                 }
3529                         },                       3519                         },
3530                         QUIRK_COMPOSITE_END      3520                         QUIRK_COMPOSITE_END
3531                 }                                3521                 }
3532         }                                        3522         }
3533 },                                               3523 },
3534 {                                                3524 {
3535         /*                                       3525         /*
3536          * Fiero SC-01 (firmware v1.1.0)         3526          * Fiero SC-01 (firmware v1.1.0)
3537          */                                      3527          */
3538         USB_DEVICE(0x2b53, 0x0031),              3528         USB_DEVICE(0x2b53, 0x0031),
3539         QUIRK_DRIVER_INFO {                      3529         QUIRK_DRIVER_INFO {
3540                 .vendor_name = "Fiero",          3530                 .vendor_name = "Fiero",
3541                 .product_name = "SC-01",         3531                 .product_name = "SC-01",
3542                 QUIRK_DATA_COMPOSITE {           3532                 QUIRK_DATA_COMPOSITE {
3543                         { QUIRK_DATA_STANDARD    3533                         { QUIRK_DATA_STANDARD_AUDIO(0) },
3544                         /* Playback */           3534                         /* Playback */
3545                         {                        3535                         {
3546                                 QUIRK_DATA_AU    3536                                 QUIRK_DATA_AUDIOFORMAT(1) {
3547                                         .form    3537                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3548                                         .chan    3538                                         .channels = 2,
3549                                         .fmt_    3539                                         .fmt_bits = 24,
3550                                         .ifac    3540                                         .iface = 1,
3551                                         .alts    3541                                         .altsetting = 1,
3552                                         .alts    3542                                         .altset_idx = 1,
3553                                         .endp    3543                                         .endpoint = 0x01,
3554                                         .ep_a    3544                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3555                                                  3545                                                    USB_ENDPOINT_SYNC_ASYNC,
3556                                         .rate    3546                                         .rates = SNDRV_PCM_RATE_48000 |
3557                                                  3547                                                  SNDRV_PCM_RATE_96000,
3558                                         .rate    3548                                         .rate_min = 48000,
3559                                         .rate    3549                                         .rate_max = 96000,
3560                                         .nr_r    3550                                         .nr_rates = 2,
3561                                         .rate    3551                                         .rate_table = (unsigned int[]) { 48000, 96000 },
3562                                         .cloc    3552                                         .clock = 0x29
3563                                 }                3553                                 }
3564                         },                       3554                         },
3565                         /* Capture */            3555                         /* Capture */
3566                         {                        3556                         {
3567                                 QUIRK_DATA_AU    3557                                 QUIRK_DATA_AUDIOFORMAT(2) {
3568                                         .form    3558                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
3569                                         .chan    3559                                         .channels = 2,
3570                                         .fmt_    3560                                         .fmt_bits = 24,
3571                                         .ifac    3561                                         .iface = 2,
3572                                         .alts    3562                                         .altsetting = 1,
3573                                         .alts    3563                                         .altset_idx = 1,
3574                                         .endp    3564                                         .endpoint = 0x82,
3575                                         .ep_a    3565                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3576                                                  3566                                                    USB_ENDPOINT_SYNC_ASYNC |
3577                                                  3567                                                    USB_ENDPOINT_USAGE_IMPLICIT_FB,
3578                                         .rate    3568                                         .rates = SNDRV_PCM_RATE_48000 |
3579                                                  3569                                                  SNDRV_PCM_RATE_96000,
3580                                         .rate    3570                                         .rate_min = 48000,
3581                                         .rate    3571                                         .rate_max = 96000,
3582                                         .nr_r    3572                                         .nr_rates = 2,
3583                                         .rate    3573                                         .rate_table = (unsigned int[]) { 48000, 96000 },
3584                                         .cloc    3574                                         .clock = 0x29
3585                                 }                3575                                 }
3586                         },                       3576                         },
3587                         QUIRK_COMPOSITE_END      3577                         QUIRK_COMPOSITE_END
3588                 }                                3578                 }
3589         }                                        3579         }
3590 },                                               3580 },
3591 {                                                3581 {
3592         /* Advanced modes of the Mythware XA0    3582         /* Advanced modes of the Mythware XA001AU.
3593          * For the standard mode, Mythware XA    3583          * For the standard mode, Mythware XA001AU has ID ffad:a001
3594          */                                      3584          */
3595         USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001    3585         USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001),
3596         QUIRK_DRIVER_INFO {                      3586         QUIRK_DRIVER_INFO {
3597                 .vendor_name = "Mythware",       3587                 .vendor_name = "Mythware",
3598                 .product_name = "XA001AU",       3588                 .product_name = "XA001AU",
3599                 QUIRK_DATA_COMPOSITE {           3589                 QUIRK_DATA_COMPOSITE {
3600                         { QUIRK_DATA_IGNORE(0    3590                         { QUIRK_DATA_IGNORE(0) },
3601                         { QUIRK_DATA_STANDARD    3591                         { QUIRK_DATA_STANDARD_AUDIO(1) },
3602                         { QUIRK_DATA_STANDARD    3592                         { QUIRK_DATA_STANDARD_AUDIO(2) },
3603                         QUIRK_COMPOSITE_END      3593                         QUIRK_COMPOSITE_END
3604                 }                                3594                 }
3605         }                                        3595         }
3606 },                                               3596 },
3607 {                                             !! 3597 
3608         /* Only claim interface 0 */          << 
3609         .match_flags = USB_DEVICE_ID_MATCH_VE << 
3610                        USB_DEVICE_ID_MATCH_PR << 
3611                        USB_DEVICE_ID_MATCH_IN << 
3612                        USB_DEVICE_ID_MATCH_IN << 
3613         .idVendor = 0x2a39,                   << 
3614         .idProduct = 0x3f8c,                  << 
3615         .bInterfaceClass = USB_CLASS_VENDOR_S << 
3616         .bInterfaceNumber = 0,                << 
3617         QUIRK_DRIVER_INFO {                   << 
3618                 QUIRK_DATA_COMPOSITE {        << 
3619                         /*                    << 
3620                          * Three modes depend << 
3621                          * with different cha << 
3622                          */                   << 
3623                         { QUIRK_DATA_STANDARD << 
3624                         {                     << 
3625                                 QUIRK_DATA_AU << 
3626                                         .form << 
3627                                         .chan << 
3628                                         .fmt_ << 
3629                                         .ifac << 
3630                                         .alts << 
3631                                         .alts << 
3632                                         .endp << 
3633                                         .ep_i << 
3634                                         .ep_a << 
3635                                               << 
3636                                         .rate << 
3637                                               << 
3638                                               << 
3639                                         .rate << 
3640                                         .rate << 
3641                                         .nr_r << 
3642                                         .rate << 
3643                                               << 
3644                                         },    << 
3645                                         .sync << 
3646                                         .sync << 
3647                                         .sync << 
3648                                         .sync << 
3649                                         .impl << 
3650                                 },            << 
3651                         },                    << 
3652                         {                     << 
3653                                 QUIRK_DATA_AU << 
3654                                         .form << 
3655                                         .chan << 
3656                                         .fmt_ << 
3657                                         .ifac << 
3658                                         .alts << 
3659                                         .alts << 
3660                                         .endp << 
3661                                         .ep_i << 
3662                                         .ep_a << 
3663                                               << 
3664                                         .rate << 
3665                                               << 
3666                                               << 
3667                                         .rate << 
3668                                         .rate << 
3669                                         .nr_r << 
3670                                         .rate << 
3671                                               << 
3672                                         },    << 
3673                                         .sync << 
3674                                         .sync << 
3675                                         .sync << 
3676                                         .sync << 
3677                                         .impl << 
3678                                 },            << 
3679                         },                    << 
3680                         {                     << 
3681                                 QUIRK_DATA_AU << 
3682                                         .form << 
3683                                         .chan << 
3684                                         .fmt_ << 
3685                                         .ifac << 
3686                                         .alts << 
3687                                         .alts << 
3688                                         .endp << 
3689                                         .ep_i << 
3690                                         .ep_a << 
3691                                               << 
3692                                         .rate << 
3693                                               << 
3694                                               << 
3695                                         .rate << 
3696                                         .rate << 
3697                                         .nr_r << 
3698                                         .rate << 
3699                                               << 
3700                                         },    << 
3701                                         .sync << 
3702                                         .sync << 
3703                                         .sync << 
3704                                         .sync << 
3705                                         .impl << 
3706                                 },            << 
3707                         },                    << 
3708                         {                     << 
3709                                 QUIRK_DATA_AU << 
3710                                         .form << 
3711                                         .chan << 
3712                                         .fmt_ << 
3713                                         .ifac << 
3714                                         .alts << 
3715                                         .alts << 
3716                                         .endp << 
3717                                         .ep_a << 
3718                                               << 
3719                                         .rate << 
3720                                               << 
3721                                               << 
3722                                         .rate << 
3723                                         .rate << 
3724                                         .nr_r << 
3725                                         .rate << 
3726                                               << 
3727                                         }     << 
3728                                 }             << 
3729                         },                    << 
3730                         {                     << 
3731                                 QUIRK_DATA_AU << 
3732                                         .form << 
3733                                         .chan << 
3734                                         .fmt_ << 
3735                                         .ifac << 
3736                                         .alts << 
3737                                         .alts << 
3738                                         .endp << 
3739                                         .ep_a << 
3740                                               << 
3741                                         .rate << 
3742                                               << 
3743                                               << 
3744                                         .rate << 
3745                                         .rate << 
3746                                         .nr_r << 
3747                                         .rate << 
3748                                               << 
3749                                         }     << 
3750                                 }             << 
3751                         },                    << 
3752                         {                     << 
3753                                 QUIRK_DATA_AU << 
3754                                         .form << 
3755                                         .chan << 
3756                                         .fmt_ << 
3757                                         .ifac << 
3758                                         .alts << 
3759                                         .alts << 
3760                                         .endp << 
3761                                         .ep_a << 
3762                                               << 
3763                                         .rate << 
3764                                               << 
3765                                               << 
3766                                         .rate << 
3767                                         .rate << 
3768                                         .nr_r << 
3769                                         .rate << 
3770                                               << 
3771                                         }     << 
3772                                 }             << 
3773                         },                    << 
3774                         QUIRK_COMPOSITE_END   << 
3775                 }                             << 
3776         }                                     << 
3777 },                                            << 
3778 #undef USB_DEVICE_VENDOR_SPEC                    3598 #undef USB_DEVICE_VENDOR_SPEC
3779 #undef USB_AUDIO_DEVICE                          3599 #undef USB_AUDIO_DEVICE
3780                                                  3600 

~ [ 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