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