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