3792 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * ALSA USB Audio Driver4 *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 with18 * 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_SPEC27 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_AUDIOCONTROL37 38/* Quirk .driver_info, followed by the definition of the quirk entry;39 * put like QUIRK_DRIVER_INFO { ... } in each entry of the quirk table40 */41#define QUIRK_DRIVER_INFO \42 .driver_info = (unsigned long)&(const struct snd_usb_audio_quirk)43 44/*45 * Macros for quirk data entries46 */47 48/* Quirk data entry for ignoring the interface */49#define QUIRK_DATA_IGNORE(_ifno) \50 .ifnum = (_ifno), .type = QUIRK_IGNORE_INTERFACE51/* Quirk data entry for a standard audio interface */52#define QUIRK_DATA_STANDARD_AUDIO(_ifno) \53 .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_INTERFACE54/* Quirk data entry for a standard MIDI interface */55#define QUIRK_DATA_STANDARD_MIDI(_ifno) \56 .ifnum = (_ifno), .type = QUIRK_MIDI_STANDARD_INTERFACE57/* Quirk data entry for a standard mixer interface */58#define QUIRK_DATA_STANDARD_MIXER(_ifno) \59 .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_MIXER60 61/* Quirk data entry for Yamaha MIDI */62#define QUIRK_DATA_MIDI_YAMAHA(_ifno) \63 .ifnum = (_ifno), .type = QUIRK_MIDI_YAMAHA64/* Quirk data entry for Edirol UAxx */65#define QUIRK_DATA_EDIROL_UAXX(_ifno) \66 .ifnum = (_ifno), .type = QUIRK_AUDIO_EDIROL_UAXX67/* Quirk data entry for raw bytes interface */68#define QUIRK_DATA_RAW_BYTES(_ifno) \69 .ifnum = (_ifno), .type = QUIRK_MIDI_RAW_BYTES70 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_END76 * 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 definition85 * 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 definition94 * 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_FTDI123 }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 the160 * hardware and 24 bits give chopped audio, so only report the one working161 * 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_END186 },187 },188},189 190/*191 * HP Wireless Audio192 * When not ignored, causes instability issues for some users, forcing them to193 * 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_END209 }210 }211},212 213/*214 * Logitech QuickCam: bDeviceClass is vendor-specific, so generic interface215 * 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 devices227 */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}245YAMAHA_DEVICE(0x1000, "UX256"),246YAMAHA_DEVICE(0x1001, "MU1000"),247YAMAHA_DEVICE(0x1002, "MU2000"),248YAMAHA_DEVICE(0x1003, "MU500"),249YAMAHA_INTERFACE(0x1004, 3, "UW500"),250YAMAHA_DEVICE(0x1005, "MOTIF6"),251YAMAHA_DEVICE(0x1006, "MOTIF7"),252YAMAHA_DEVICE(0x1007, "MOTIF8"),253YAMAHA_DEVICE(0x1008, "UX96"),254YAMAHA_DEVICE(0x1009, "UX16"),255YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),256YAMAHA_DEVICE(0x100c, "UC-MX"),257YAMAHA_DEVICE(0x100d, "UC-KX"),258YAMAHA_DEVICE(0x100e, "S08"),259YAMAHA_DEVICE(0x100f, "CLP-150"),260YAMAHA_DEVICE(0x1010, "CLP-170"),261YAMAHA_DEVICE(0x1011, "P-250"),262YAMAHA_DEVICE(0x1012, "TYROS"),263YAMAHA_DEVICE(0x1013, "PF-500"),264YAMAHA_DEVICE(0x1014, "S90"),265YAMAHA_DEVICE(0x1015, "MOTIF-R"),266YAMAHA_DEVICE(0x1016, "MDP-5"),267YAMAHA_DEVICE(0x1017, "CVP-204"),268YAMAHA_DEVICE(0x1018, "CVP-206"),269YAMAHA_DEVICE(0x1019, "CVP-208"),270YAMAHA_DEVICE(0x101a, "CVP-210"),271YAMAHA_DEVICE(0x101b, "PSR-1100"),272YAMAHA_DEVICE(0x101c, "PSR-2100"),273YAMAHA_DEVICE(0x101d, "CLP-175"),274YAMAHA_DEVICE(0x101e, "PSR-K1"),275YAMAHA_DEVICE(0x101f, "EZ-J24"),276YAMAHA_DEVICE(0x1020, "EZ-250i"),277YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),278YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),279YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),280YAMAHA_DEVICE(0x1024, "CVP-301"),281YAMAHA_DEVICE(0x1025, "CVP-303"),282YAMAHA_DEVICE(0x1026, "CVP-305"),283YAMAHA_DEVICE(0x1027, "CVP-307"),284YAMAHA_DEVICE(0x1028, "CVP-309"),285YAMAHA_DEVICE(0x1029, "CVP-309GP"),286YAMAHA_DEVICE(0x102a, "PSR-1500"),287YAMAHA_DEVICE(0x102b, "PSR-3000"),288YAMAHA_DEVICE(0x102e, "ELS-01/01C"),289YAMAHA_DEVICE(0x1030, "PSR-295/293"),290YAMAHA_DEVICE(0x1031, "DGX-205/203"),291YAMAHA_DEVICE(0x1032, "DGX-305"),292YAMAHA_DEVICE(0x1033, "DGX-505"),293YAMAHA_DEVICE(0x1034, NULL),294YAMAHA_DEVICE(0x1035, NULL),295YAMAHA_DEVICE(0x1036, NULL),296YAMAHA_DEVICE(0x1037, NULL),297YAMAHA_DEVICE(0x1038, NULL),298YAMAHA_DEVICE(0x1039, NULL),299YAMAHA_DEVICE(0x103a, NULL),300YAMAHA_DEVICE(0x103b, NULL),301YAMAHA_DEVICE(0x103c, NULL),302YAMAHA_DEVICE(0x103d, NULL),303YAMAHA_DEVICE(0x103e, NULL),304YAMAHA_DEVICE(0x103f, NULL),305YAMAHA_DEVICE(0x1040, NULL),306YAMAHA_DEVICE(0x1041, NULL),307YAMAHA_DEVICE(0x1042, NULL),308YAMAHA_DEVICE(0x1043, NULL),309YAMAHA_DEVICE(0x1044, NULL),310YAMAHA_DEVICE(0x1045, NULL),311YAMAHA_INTERFACE(0x104e, 0, NULL),312YAMAHA_DEVICE(0x104f, NULL),313YAMAHA_DEVICE(0x1050, NULL),314YAMAHA_DEVICE(0x1051, NULL),315YAMAHA_DEVICE(0x1052, NULL),316YAMAHA_INTERFACE(0x1053, 0, NULL),317YAMAHA_INTERFACE(0x1054, 0, NULL),318YAMAHA_DEVICE(0x1055, NULL),319YAMAHA_DEVICE(0x1056, NULL),320YAMAHA_DEVICE(0x1057, NULL),321YAMAHA_DEVICE(0x1058, NULL),322YAMAHA_DEVICE(0x1059, NULL),323YAMAHA_DEVICE(0x105a, NULL),324YAMAHA_DEVICE(0x105b, NULL),325YAMAHA_DEVICE(0x105c, NULL),326YAMAHA_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_END337 }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_END350 }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_END364 }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_END377 }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_END390 }391 }392},393{394 USB_DEVICE(0x0499, 0x1718),395 QUIRK_DRIVER_INFO {396 /* .vendor_name = "Yamaha", */397 /* .product_name = "P-125", */398 QUIRK_DATA_COMPOSITE {399 { QUIRK_DATA_STANDARD_AUDIO(1) },400 { QUIRK_DATA_STANDARD_AUDIO(2) },401 { QUIRK_DATA_MIDI_YAMAHA(3) },402 QUIRK_COMPOSITE_END403 }404 }405},406YAMAHA_DEVICE(0x2000, "DGP-7"),407YAMAHA_DEVICE(0x2001, "DGP-5"),408YAMAHA_DEVICE(0x2002, NULL),409YAMAHA_DEVICE(0x2003, NULL),410YAMAHA_DEVICE(0x5000, "CS1D"),411YAMAHA_DEVICE(0x5001, "DSP1D"),412YAMAHA_DEVICE(0x5002, "DME32"),413YAMAHA_DEVICE(0x5003, "DM2000"),414YAMAHA_DEVICE(0x5004, "02R96"),415YAMAHA_DEVICE(0x5005, "ACU16-C"),416YAMAHA_DEVICE(0x5006, "NHB32-C"),417YAMAHA_DEVICE(0x5007, "DM1000"),418YAMAHA_DEVICE(0x5008, "01V96"),419YAMAHA_DEVICE(0x5009, "SPX2000"),420YAMAHA_DEVICE(0x500a, "PM5D"),421YAMAHA_DEVICE(0x500b, "DME64N"),422YAMAHA_DEVICE(0x500c, "DME24N"),423YAMAHA_DEVICE(0x500d, NULL),424YAMAHA_DEVICE(0x500e, NULL),425YAMAHA_DEVICE(0x500f, NULL),426YAMAHA_DEVICE(0x7000, "DTX"),427YAMAHA_DEVICE(0x7010, "UB99"),428#undef YAMAHA_DEVICE429#undef YAMAHA_INTERFACE430/* this catches most recent vendor-specific Yamaha devices */431{432 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |433 USB_DEVICE_ID_MATCH_INT_CLASS,434 .idVendor = 0x0499,435 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,436 QUIRK_DRIVER_INFO {437 .ifnum = QUIRK_ANY_INTERFACE,438 .type = QUIRK_AUTODETECT439 }440},441 442/*443 * Roland/RolandED/Edirol/BOSS devices444 */445{446 USB_DEVICE(0x0582, 0x0000),447 QUIRK_DRIVER_INFO {448 .vendor_name = "Roland",449 .product_name = "UA-100",450 QUIRK_DATA_COMPOSITE {451 {452 QUIRK_DATA_AUDIOFORMAT(0) {453 .formats = SNDRV_PCM_FMTBIT_S16_LE,454 .channels = 4,455 .iface = 0,456 .altsetting = 1,457 .altset_idx = 1,458 .attributes = 0,459 .endpoint = 0x01,460 .ep_attr = 0x09,461 .rates = SNDRV_PCM_RATE_CONTINUOUS,462 .rate_min = 44100,463 .rate_max = 44100,464 }465 },466 {467 QUIRK_DATA_AUDIOFORMAT(1) {468 .formats = SNDRV_PCM_FMTBIT_S16_LE,469 .channels = 2,470 .iface = 1,471 .altsetting = 1,472 .altset_idx = 1,473 .attributes = UAC_EP_CS_ATTR_FILL_MAX,474 .endpoint = 0x81,475 .ep_attr = 0x05,476 .rates = SNDRV_PCM_RATE_CONTINUOUS,477 .rate_min = 44100,478 .rate_max = 44100,479 }480 },481 {482 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {483 .out_cables = 0x0007,484 .in_cables = 0x0007485 }486 },487 QUIRK_COMPOSITE_END488 }489 }490},491{492 USB_DEVICE(0x0582, 0x0002),493 QUIRK_DRIVER_INFO {494 .vendor_name = "EDIROL",495 .product_name = "UM-4",496 QUIRK_DATA_COMPOSITE {497 { QUIRK_DATA_IGNORE(0) },498 { QUIRK_DATA_IGNORE(1) },499 {500 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {501 .out_cables = 0x000f,502 .in_cables = 0x000f503 }504 },505 QUIRK_COMPOSITE_END506 }507 }508},509{510 USB_DEVICE(0x0582, 0x0003),511 QUIRK_DRIVER_INFO {512 .vendor_name = "Roland",513 .product_name = "SC-8850",514 QUIRK_DATA_COMPOSITE {515 { QUIRK_DATA_IGNORE(0) },516 { QUIRK_DATA_IGNORE(1) },517 {518 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {519 .out_cables = 0x003f,520 .in_cables = 0x003f521 }522 },523 QUIRK_COMPOSITE_END524 }525 }526},527{528 USB_DEVICE(0x0582, 0x0004),529 QUIRK_DRIVER_INFO {530 .vendor_name = "Roland",531 .product_name = "U-8",532 QUIRK_DATA_COMPOSITE {533 { QUIRK_DATA_IGNORE(0) },534 { QUIRK_DATA_IGNORE(1) },535 {536 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {537 .out_cables = 0x0005,538 .in_cables = 0x0005539 }540 },541 QUIRK_COMPOSITE_END542 }543 }544},545{546 /* Has ID 0x0099 when not in "Advanced Driver" mode.547 * The UM-2EX has only one input, but we cannot detect this. */548 USB_DEVICE(0x0582, 0x0005),549 QUIRK_DRIVER_INFO {550 .vendor_name = "EDIROL",551 .product_name = "UM-2",552 QUIRK_DATA_COMPOSITE {553 { QUIRK_DATA_IGNORE(0) },554 { QUIRK_DATA_IGNORE(1) },555 {556 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {557 .out_cables = 0x0003,558 .in_cables = 0x0003559 }560 },561 QUIRK_COMPOSITE_END562 }563 }564},565{566 USB_DEVICE(0x0582, 0x0007),567 QUIRK_DRIVER_INFO {568 .vendor_name = "Roland",569 .product_name = "SC-8820",570 QUIRK_DATA_COMPOSITE {571 { QUIRK_DATA_IGNORE(0) },572 { QUIRK_DATA_IGNORE(1) },573 {574 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {575 .out_cables = 0x0013,576 .in_cables = 0x0013577 }578 },579 QUIRK_COMPOSITE_END580 }581 }582},583{584 USB_DEVICE(0x0582, 0x0008),585 QUIRK_DRIVER_INFO {586 .vendor_name = "Roland",587 .product_name = "PC-300",588 QUIRK_DATA_COMPOSITE {589 { QUIRK_DATA_IGNORE(0) },590 { QUIRK_DATA_IGNORE(1) },591 {592 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {593 .out_cables = 0x0001,594 .in_cables = 0x0001595 }596 },597 QUIRK_COMPOSITE_END598 }599 }600},601{602 /* has ID 0x009d when not in "Advanced Driver" mode */603 USB_DEVICE(0x0582, 0x0009),604 QUIRK_DRIVER_INFO {605 .vendor_name = "EDIROL",606 .product_name = "UM-1",607 QUIRK_DATA_COMPOSITE {608 { QUIRK_DATA_IGNORE(0) },609 { QUIRK_DATA_IGNORE(1) },610 {611 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {612 .out_cables = 0x0001,613 .in_cables = 0x0001614 }615 },616 QUIRK_COMPOSITE_END617 }618 }619},620{621 USB_DEVICE(0x0582, 0x000b),622 QUIRK_DRIVER_INFO {623 .vendor_name = "Roland",624 .product_name = "SK-500",625 QUIRK_DATA_COMPOSITE {626 { QUIRK_DATA_IGNORE(0) },627 { QUIRK_DATA_IGNORE(1) },628 {629 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {630 .out_cables = 0x0013,631 .in_cables = 0x0013632 }633 },634 QUIRK_COMPOSITE_END635 }636 }637},638{639 /* thanks to Emiliano Grilli <emillo@libero.it>640 * for helping researching this data */641 USB_DEVICE(0x0582, 0x000c),642 QUIRK_DRIVER_INFO {643 .vendor_name = "Roland",644 .product_name = "SC-D70",645 QUIRK_DATA_COMPOSITE {646 { QUIRK_DATA_STANDARD_AUDIO(0) },647 { QUIRK_DATA_STANDARD_AUDIO(1) },648 {649 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {650 .out_cables = 0x0007,651 .in_cables = 0x0007652 }653 },654 QUIRK_COMPOSITE_END655 }656 }657},658{ /*659 * This quirk is for the "Advanced Driver" mode of the Edirol UA-5.660 * If the advanced mode switch at the back of the unit is off, the661 * UA-5 has ID 0x0582/0x0011 and is standard compliant (no quirks),662 * but offers only 16-bit PCM.663 * In advanced mode, the UA-5 will output S24_3LE samples (two664 * channels) at the rate indicated on the front switch, including665 * the 96kHz sample rate.666 */667 USB_DEVICE(0x0582, 0x0010),668 QUIRK_DRIVER_INFO {669 .vendor_name = "EDIROL",670 .product_name = "UA-5",671 QUIRK_DATA_COMPOSITE {672 { QUIRK_DATA_STANDARD_AUDIO(1) },673 { QUIRK_DATA_STANDARD_AUDIO(2) },674 QUIRK_COMPOSITE_END675 }676 }677},678{679 /* has ID 0x0013 when not in "Advanced Driver" mode */680 USB_DEVICE(0x0582, 0x0012),681 QUIRK_DRIVER_INFO {682 .vendor_name = "Roland",683 .product_name = "XV-5050",684 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {685 .out_cables = 0x0001,686 .in_cables = 0x0001687 }688 }689},690{691 /* has ID 0x0015 when not in "Advanced Driver" mode */692 USB_DEVICE(0x0582, 0x0014),693 QUIRK_DRIVER_INFO {694 .vendor_name = "EDIROL",695 .product_name = "UM-880",696 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {697 .out_cables = 0x01ff,698 .in_cables = 0x01ff699 }700 }701},702{703 /* has ID 0x0017 when not in "Advanced Driver" mode */704 USB_DEVICE(0x0582, 0x0016),705 QUIRK_DRIVER_INFO {706 .vendor_name = "EDIROL",707 .product_name = "SD-90",708 QUIRK_DATA_COMPOSITE {709 { QUIRK_DATA_STANDARD_AUDIO(0) },710 { QUIRK_DATA_STANDARD_AUDIO(1) },711 {712 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {713 .out_cables = 0x000f,714 .in_cables = 0x000f715 }716 },717 QUIRK_COMPOSITE_END718 }719 }720},721{722 /* has ID 0x001c when not in "Advanced Driver" mode */723 USB_DEVICE(0x0582, 0x001b),724 QUIRK_DRIVER_INFO {725 .vendor_name = "Roland",726 .product_name = "MMP-2",727 QUIRK_DATA_COMPOSITE {728 { QUIRK_DATA_IGNORE(0) },729 { QUIRK_DATA_IGNORE(1) },730 {731 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {732 .out_cables = 0x0001,733 .in_cables = 0x0001734 }735 },736 QUIRK_COMPOSITE_END737 }738 }739},740{741 /* has ID 0x001e when not in "Advanced Driver" mode */742 USB_DEVICE(0x0582, 0x001d),743 QUIRK_DRIVER_INFO {744 .vendor_name = "Roland",745 .product_name = "V-SYNTH",746 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {747 .out_cables = 0x0001,748 .in_cables = 0x0001749 }750 }751},752{753 /* has ID 0x0024 when not in "Advanced Driver" mode */754 USB_DEVICE(0x0582, 0x0023),755 QUIRK_DRIVER_INFO {756 .vendor_name = "EDIROL",757 .product_name = "UM-550",758 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {759 .out_cables = 0x003f,760 .in_cables = 0x003f761 }762 }763},764{765 /*766 * This quirk is for the "Advanced Driver" mode. If off, the UA-20767 * has ID 0x0026 and is standard compliant, but has only 16-bit PCM768 * and no MIDI.769 */770 USB_DEVICE(0x0582, 0x0025),771 QUIRK_DRIVER_INFO {772 .vendor_name = "EDIROL",773 .product_name = "UA-20",774 QUIRK_DATA_COMPOSITE {775 { QUIRK_DATA_IGNORE(0) },776 {777 QUIRK_DATA_AUDIOFORMAT(1) {778 .formats = SNDRV_PCM_FMTBIT_S24_3LE,779 .channels = 2,780 .iface = 1,781 .altsetting = 1,782 .altset_idx = 1,783 .attributes = 0,784 .endpoint = 0x01,785 .ep_attr = 0x01,786 .rates = SNDRV_PCM_RATE_CONTINUOUS,787 .rate_min = 44100,788 .rate_max = 44100,789 }790 },791 {792 QUIRK_DATA_AUDIOFORMAT(2) {793 .formats = SNDRV_PCM_FMTBIT_S24_3LE,794 .channels = 2,795 .iface = 2,796 .altsetting = 1,797 .altset_idx = 1,798 .attributes = 0,799 .endpoint = 0x82,800 .ep_attr = 0x01,801 .rates = SNDRV_PCM_RATE_CONTINUOUS,802 .rate_min = 44100,803 .rate_max = 44100,804 }805 },806 {807 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {808 .out_cables = 0x0001,809 .in_cables = 0x0001810 }811 },812 QUIRK_COMPOSITE_END813 }814 }815},816{817 /* has ID 0x0028 when not in "Advanced Driver" mode */818 USB_DEVICE(0x0582, 0x0027),819 QUIRK_DRIVER_INFO {820 .vendor_name = "EDIROL",821 .product_name = "SD-20",822 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {823 .out_cables = 0x0003,824 .in_cables = 0x0007825 }826 }827},828{829 /* has ID 0x002a when not in "Advanced Driver" mode */830 USB_DEVICE(0x0582, 0x0029),831 QUIRK_DRIVER_INFO {832 .vendor_name = "EDIROL",833 .product_name = "SD-80",834 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {835 .out_cables = 0x000f,836 .in_cables = 0x000f837 }838 }839},840{ /*841 * This quirk is for the "Advanced" modes of the Edirol UA-700.842 * If the sample format switch is not in an advanced setting, the843 * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks),844 * but offers only 16-bit PCM and no MIDI.845 */846 USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b),847 QUIRK_DRIVER_INFO {848 .vendor_name = "EDIROL",849 .product_name = "UA-700",850 QUIRK_DATA_COMPOSITE {851 { QUIRK_DATA_EDIROL_UAXX(1) },852 { QUIRK_DATA_EDIROL_UAXX(2) },853 { QUIRK_DATA_EDIROL_UAXX(3) },854 QUIRK_COMPOSITE_END855 }856 }857},858{859 /* has ID 0x002e when not in "Advanced Driver" mode */860 USB_DEVICE(0x0582, 0x002d),861 QUIRK_DRIVER_INFO {862 .vendor_name = "Roland",863 .product_name = "XV-2020",864 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {865 .out_cables = 0x0001,866 .in_cables = 0x0001867 }868 }869},870{871 /* has ID 0x0030 when not in "Advanced Driver" mode */872 USB_DEVICE(0x0582, 0x002f),873 QUIRK_DRIVER_INFO {874 .vendor_name = "Roland",875 .product_name = "VariOS",876 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {877 .out_cables = 0x0007,878 .in_cables = 0x0007879 }880 }881},882{883 /* has ID 0x0034 when not in "Advanced Driver" mode */884 USB_DEVICE(0x0582, 0x0033),885 QUIRK_DRIVER_INFO {886 .vendor_name = "EDIROL",887 .product_name = "PCR",888 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {889 .out_cables = 0x0003,890 .in_cables = 0x0007891 }892 }893},894{895 /*896 * Has ID 0x0038 when not in "Advanced Driver" mode;897 * later revisions use IDs 0x0054 and 0x00a2.898 */899 USB_DEVICE(0x0582, 0x0037),900 QUIRK_DRIVER_INFO {901 .vendor_name = "Roland",902 .product_name = "Digital Piano",903 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {904 .out_cables = 0x0001,905 .in_cables = 0x0001906 }907 }908},909{910 /*911 * This quirk is for the "Advanced Driver" mode. If off, the GS-10912 * has ID 0x003c and is standard compliant, but has only 16-bit PCM913 * and no MIDI.914 */915 USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b),916 QUIRK_DRIVER_INFO {917 .vendor_name = "BOSS",918 .product_name = "GS-10",919 QUIRK_DATA_COMPOSITE {920 { QUIRK_DATA_STANDARD_AUDIO(1) },921 { QUIRK_DATA_STANDARD_AUDIO(2) },922 { QUIRK_DATA_STANDARD_MIDI(3) },923 QUIRK_COMPOSITE_END924 }925 }926},927{928 /* has ID 0x0041 when not in "Advanced Driver" mode */929 USB_DEVICE(0x0582, 0x0040),930 QUIRK_DRIVER_INFO {931 .vendor_name = "Roland",932 .product_name = "GI-20",933 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {934 .out_cables = 0x0001,935 .in_cables = 0x0001936 }937 }938},939{940 /* has ID 0x0043 when not in "Advanced Driver" mode */941 USB_DEVICE(0x0582, 0x0042),942 QUIRK_DRIVER_INFO {943 .vendor_name = "Roland",944 .product_name = "RS-70",945 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {946 .out_cables = 0x0001,947 .in_cables = 0x0001948 }949 }950},951{952 /* has ID 0x0049 when not in "Advanced Driver" mode */953 USB_DEVICE(0x0582, 0x0047),954 QUIRK_DRIVER_INFO {955 /* .vendor_name = "EDIROL", */956 /* .product_name = "UR-80", */957 QUIRK_DATA_COMPOSITE {958 /* in the 96 kHz modes, only interface 1 is there */959 { QUIRK_DATA_STANDARD_AUDIO(1) },960 { QUIRK_DATA_STANDARD_AUDIO(2) },961 QUIRK_COMPOSITE_END962 }963 }964},965{966 /* has ID 0x004a when not in "Advanced Driver" mode */967 USB_DEVICE(0x0582, 0x0048),968 QUIRK_DRIVER_INFO {969 /* .vendor_name = "EDIROL", */970 /* .product_name = "UR-80", */971 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {972 .out_cables = 0x0003,973 .in_cables = 0x0007974 }975 }976},977{978 /* has ID 0x004e when not in "Advanced Driver" mode */979 USB_DEVICE(0x0582, 0x004c),980 QUIRK_DRIVER_INFO {981 .vendor_name = "EDIROL",982 .product_name = "PCR-A",983 QUIRK_DATA_COMPOSITE {984 { QUIRK_DATA_STANDARD_AUDIO(1) },985 { QUIRK_DATA_STANDARD_AUDIO(2) },986 QUIRK_COMPOSITE_END987 }988 }989},990{991 /* has ID 0x004f when not in "Advanced Driver" mode */992 USB_DEVICE(0x0582, 0x004d),993 QUIRK_DRIVER_INFO {994 .vendor_name = "EDIROL",995 .product_name = "PCR-A",996 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {997 .out_cables = 0x0003,998 .in_cables = 0x0007999 }1000 }1001},1002{1003 /*1004 * This quirk is for the "Advanced Driver" mode. If off, the UA-3FX1005 * is standard compliant, but has only 16-bit PCM.1006 */1007 USB_DEVICE(0x0582, 0x0050),1008 QUIRK_DRIVER_INFO {1009 .vendor_name = "EDIROL",1010 .product_name = "UA-3FX",1011 QUIRK_DATA_COMPOSITE {1012 { QUIRK_DATA_STANDARD_AUDIO(1) },1013 { QUIRK_DATA_STANDARD_AUDIO(2) },1014 QUIRK_COMPOSITE_END1015 }1016 }1017},1018{1019 USB_DEVICE(0x0582, 0x0052),1020 QUIRK_DRIVER_INFO {1021 .vendor_name = "EDIROL",1022 .product_name = "UM-1SX",1023 QUIRK_DATA_STANDARD_MIDI(0)1024 }1025},1026{1027 USB_DEVICE(0x0582, 0x0060),1028 QUIRK_DRIVER_INFO {1029 .vendor_name = "Roland",1030 .product_name = "EXR Series",1031 QUIRK_DATA_STANDARD_MIDI(0)1032 }1033},1034{1035 /* has ID 0x0066 when not in "Advanced Driver" mode */1036 USB_DEVICE(0x0582, 0x0064),1037 QUIRK_DRIVER_INFO {1038 /* .vendor_name = "EDIROL", */1039 /* .product_name = "PCR-1", */1040 QUIRK_DATA_COMPOSITE {1041 { QUIRK_DATA_STANDARD_AUDIO(1) },1042 { QUIRK_DATA_STANDARD_AUDIO(2) },1043 QUIRK_COMPOSITE_END1044 }1045 }1046},1047{1048 /* has ID 0x0067 when not in "Advanced Driver" mode */1049 USB_DEVICE(0x0582, 0x0065),1050 QUIRK_DRIVER_INFO {1051 /* .vendor_name = "EDIROL", */1052 /* .product_name = "PCR-1", */1053 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1054 .out_cables = 0x0001,1055 .in_cables = 0x00031056 }1057 }1058},1059{1060 /* has ID 0x006e when not in "Advanced Driver" mode */1061 USB_DEVICE(0x0582, 0x006d),1062 QUIRK_DRIVER_INFO {1063 .vendor_name = "Roland",1064 .product_name = "FANTOM-X",1065 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1066 .out_cables = 0x0001,1067 .in_cables = 0x00011068 }1069 }1070},1071{ /*1072 * This quirk is for the "Advanced" modes of the Edirol UA-25.1073 * If the switch is not in an advanced setting, the UA-25 has1074 * ID 0x0582/0x0073 and is standard compliant (no quirks), but1075 * offers only 16-bit PCM at 44.1 kHz and no MIDI.1076 */1077 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074),1078 QUIRK_DRIVER_INFO {1079 .vendor_name = "EDIROL",1080 .product_name = "UA-25",1081 QUIRK_DATA_COMPOSITE {1082 { QUIRK_DATA_EDIROL_UAXX(0) },1083 { QUIRK_DATA_EDIROL_UAXX(1) },1084 { QUIRK_DATA_EDIROL_UAXX(2) },1085 QUIRK_COMPOSITE_END1086 }1087 }1088},1089{1090 /* has ID 0x0076 when not in "Advanced Driver" mode */1091 USB_DEVICE(0x0582, 0x0075),1092 QUIRK_DRIVER_INFO {1093 .vendor_name = "BOSS",1094 .product_name = "DR-880",1095 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1096 .out_cables = 0x0001,1097 .in_cables = 0x00011098 }1099 }1100},1101{1102 /* has ID 0x007b when not in "Advanced Driver" mode */1103 USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a),1104 QUIRK_DRIVER_INFO {1105 .vendor_name = "Roland",1106 /* "RD" or "RD-700SX"? */1107 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1108 .out_cables = 0x0003,1109 .in_cables = 0x00031110 }1111 }1112},1113{1114 /* has ID 0x0081 when not in "Advanced Driver" mode */1115 USB_DEVICE(0x0582, 0x0080),1116 QUIRK_DRIVER_INFO {1117 .vendor_name = "Roland",1118 .product_name = "G-70",1119 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1120 .out_cables = 0x0001,1121 .in_cables = 0x00011122 }1123 }1124},1125{1126 /* has ID 0x008c when not in "Advanced Driver" mode */1127 USB_DEVICE(0x0582, 0x008b),1128 QUIRK_DRIVER_INFO {1129 .vendor_name = "EDIROL",1130 .product_name = "PC-50",1131 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1132 .out_cables = 0x0001,1133 .in_cables = 0x00011134 }1135 }1136},1137{1138 /*1139 * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX1140 * is standard compliant, but has only 16-bit PCM and no MIDI.1141 */1142 USB_DEVICE(0x0582, 0x00a3),1143 QUIRK_DRIVER_INFO {1144 .vendor_name = "EDIROL",1145 .product_name = "UA-4FX",1146 QUIRK_DATA_COMPOSITE {1147 { QUIRK_DATA_EDIROL_UAXX(0) },1148 { QUIRK_DATA_EDIROL_UAXX(1) },1149 { QUIRK_DATA_EDIROL_UAXX(2) },1150 QUIRK_COMPOSITE_END1151 }1152 }1153},1154{1155 /* Edirol M-16DX */1156 USB_DEVICE(0x0582, 0x00c4),1157 QUIRK_DRIVER_INFO {1158 QUIRK_DATA_COMPOSITE {1159 { QUIRK_DATA_STANDARD_AUDIO(0) },1160 { QUIRK_DATA_STANDARD_AUDIO(1) },1161 {1162 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {1163 .out_cables = 0x0001,1164 .in_cables = 0x00011165 }1166 },1167 QUIRK_COMPOSITE_END1168 }1169 }1170},1171{1172 /* Advanced modes of the Edirol UA-25EX.1173 * For the standard mode, UA-25EX has ID 0582:00e7, which1174 * offers only 16-bit PCM at 44.1 kHz and no MIDI.1175 */1176 USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6),1177 QUIRK_DRIVER_INFO {1178 .vendor_name = "EDIROL",1179 .product_name = "UA-25EX",1180 QUIRK_DATA_COMPOSITE {1181 { QUIRK_DATA_EDIROL_UAXX(0) },1182 { QUIRK_DATA_EDIROL_UAXX(1) },1183 { QUIRK_DATA_EDIROL_UAXX(2) },1184 QUIRK_COMPOSITE_END1185 }1186 }1187},1188{1189 /* Edirol UM-3G */1190 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),1191 QUIRK_DRIVER_INFO {1192 QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) {1193 .out_cables = 0x0007,1194 .in_cables = 0x00071195 }1196 }1197},1198{1199 /* BOSS ME-25 */1200 USB_DEVICE(0x0582, 0x0113),1201 QUIRK_DRIVER_INFO {1202 QUIRK_DATA_COMPOSITE {1203 { QUIRK_DATA_STANDARD_AUDIO(0) },1204 { QUIRK_DATA_STANDARD_AUDIO(1) },1205 {1206 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {1207 .out_cables = 0x0001,1208 .in_cables = 0x00011209 }1210 },1211 QUIRK_COMPOSITE_END1212 }1213 }1214},1215{1216 /* only 44.1 kHz works at the moment */1217 USB_DEVICE(0x0582, 0x0120),1218 QUIRK_DRIVER_INFO {1219 /* .vendor_name = "Roland", */1220 /* .product_name = "OCTO-CAPTURE", */1221 QUIRK_DATA_COMPOSITE {1222 {1223 QUIRK_DATA_AUDIOFORMAT(0) {1224 .formats = SNDRV_PCM_FMTBIT_S32_LE,1225 .channels = 10,1226 .iface = 0,1227 .altsetting = 1,1228 .altset_idx = 1,1229 .endpoint = 0x05,1230 .ep_attr = 0x05,1231 .rates = SNDRV_PCM_RATE_44100,1232 .rate_min = 44100,1233 .rate_max = 44100,1234 .nr_rates = 1,1235 .rate_table = (unsigned int[]) { 44100 }1236 }1237 },1238 {1239 QUIRK_DATA_AUDIOFORMAT(1) {1240 .formats = SNDRV_PCM_FMTBIT_S32_LE,1241 .channels = 12,1242 .iface = 1,1243 .altsetting = 1,1244 .altset_idx = 1,1245 .endpoint = 0x85,1246 .ep_attr = 0x25,1247 .rates = SNDRV_PCM_RATE_44100,1248 .rate_min = 44100,1249 .rate_max = 44100,1250 .nr_rates = 1,1251 .rate_table = (unsigned int[]) { 44100 }1252 }1253 },1254 {1255 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {1256 .out_cables = 0x0001,1257 .in_cables = 0x00011258 }1259 },1260 { QUIRK_DATA_IGNORE(3) },1261 { QUIRK_DATA_IGNORE(4) },1262 QUIRK_COMPOSITE_END1263 }1264 }1265},1266{1267 /* only 44.1 kHz works at the moment */1268 USB_DEVICE(0x0582, 0x012f),1269 QUIRK_DRIVER_INFO {1270 /* .vendor_name = "Roland", */1271 /* .product_name = "QUAD-CAPTURE", */1272 QUIRK_DATA_COMPOSITE {1273 {1274 QUIRK_DATA_AUDIOFORMAT(0) {1275 .formats = SNDRV_PCM_FMTBIT_S32_LE,1276 .channels = 4,1277 .iface = 0,1278 .altsetting = 1,1279 .altset_idx = 1,1280 .endpoint = 0x05,1281 .ep_attr = 0x05,1282 .rates = SNDRV_PCM_RATE_44100,1283 .rate_min = 44100,1284 .rate_max = 44100,1285 .nr_rates = 1,1286 .rate_table = (unsigned int[]) { 44100 }1287 }1288 },1289 {1290 QUIRK_DATA_AUDIOFORMAT(1) {1291 .formats = SNDRV_PCM_FMTBIT_S32_LE,1292 .channels = 6,1293 .iface = 1,1294 .altsetting = 1,1295 .altset_idx = 1,1296 .endpoint = 0x85,1297 .ep_attr = 0x25,1298 .rates = SNDRV_PCM_RATE_44100,1299 .rate_min = 44100,1300 .rate_max = 44100,1301 .nr_rates = 1,1302 .rate_table = (unsigned int[]) { 44100 }1303 }1304 },1305 {1306 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {1307 .out_cables = 0x0001,1308 .in_cables = 0x00011309 }1310 },1311 { QUIRK_DATA_IGNORE(3) },1312 { QUIRK_DATA_IGNORE(4) },1313 QUIRK_COMPOSITE_END1314 }1315 }1316},1317{1318 USB_DEVICE(0x0582, 0x0159),1319 QUIRK_DRIVER_INFO {1320 /* .vendor_name = "Roland", */1321 /* .product_name = "UA-22", */1322 QUIRK_DATA_COMPOSITE {1323 { QUIRK_DATA_STANDARD_AUDIO(0) },1324 { QUIRK_DATA_STANDARD_AUDIO(1) },1325 {1326 QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) {1327 .out_cables = 0x0001,1328 .in_cables = 0x00011329 }1330 },1331 QUIRK_COMPOSITE_END1332 }1333 }1334},1335 1336/* UA101 and co are supported by another driver */1337{1338 USB_DEVICE(0x0582, 0x0044), /* UA-1000 high speed */1339 QUIRK_DRIVER_INFO {1340 .ifnum = QUIRK_NODEV_INTERFACE1341 },1342},1343{1344 USB_DEVICE(0x0582, 0x007d), /* UA-101 high speed */1345 QUIRK_DRIVER_INFO {1346 .ifnum = QUIRK_NODEV_INTERFACE1347 },1348},1349{1350 USB_DEVICE(0x0582, 0x008d), /* UA-101 full speed */1351 QUIRK_DRIVER_INFO {1352 .ifnum = QUIRK_NODEV_INTERFACE1353 },1354},1355 1356/* this catches most recent vendor-specific Roland devices */1357{1358 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |1359 USB_DEVICE_ID_MATCH_INT_CLASS,1360 .idVendor = 0x0582,1361 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,1362 QUIRK_DRIVER_INFO {1363 .ifnum = QUIRK_ANY_INTERFACE,1364 .type = QUIRK_AUTODETECT1365 }1366},1367 1368/* Guillemot devices */1369{1370 /*1371 * This is for the "Windows Edition" where the external MIDI ports are1372 * the only MIDI ports; the control data is reported through HID1373 * interfaces. The "Macintosh Edition" has ID 0xd002 and uses standard1374 * compliant USB MIDI ports for external MIDI and controls.1375 */1376 USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000),1377 QUIRK_DRIVER_INFO {1378 .vendor_name = "Hercules",1379 .product_name = "DJ Console (WE)",1380 QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) {1381 .out_cables = 0x0001,1382 .in_cables = 0x00011383 }1384 }1385},1386 1387/* Midiman/M-Audio devices */1388{1389 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002),1390 QUIRK_DRIVER_INFO {1391 .vendor_name = "M-Audio",1392 .product_name = "MidiSport 2x2",1393 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1394 .out_cables = 0x0003,1395 .in_cables = 0x00031396 }1397 }1398},1399{1400 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011),1401 QUIRK_DRIVER_INFO {1402 .vendor_name = "M-Audio",1403 .product_name = "MidiSport 1x1",1404 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1405 .out_cables = 0x0001,1406 .in_cables = 0x00011407 }1408 }1409},1410{1411 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015),1412 QUIRK_DRIVER_INFO {1413 .vendor_name = "M-Audio",1414 .product_name = "Keystation",1415 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1416 .out_cables = 0x0001,1417 .in_cables = 0x00011418 }1419 }1420},1421{1422 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021),1423 QUIRK_DRIVER_INFO {1424 .vendor_name = "M-Audio",1425 .product_name = "MidiSport 4x4",1426 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1427 .out_cables = 0x000f,1428 .in_cables = 0x000f1429 }1430 }1431},1432{1433 /*1434 * For hardware revision 1.05; in the later revisions (1.10 and1435 * 1.21), 0x1031 is the ID for the device without firmware.1436 * Thanks to Olaf Giesbrecht <Olaf_Giesbrecht@yahoo.de>1437 */1438 USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109),1439 QUIRK_DRIVER_INFO {1440 .vendor_name = "M-Audio",1441 .product_name = "MidiSport 8x8",1442 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1443 .out_cables = 0x01ff,1444 .in_cables = 0x01ff1445 }1446 }1447},1448{1449 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033),1450 QUIRK_DRIVER_INFO {1451 .vendor_name = "M-Audio",1452 .product_name = "MidiSport 8x8",1453 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1454 .out_cables = 0x01ff,1455 .in_cables = 0x01ff1456 }1457 }1458},1459{1460 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041),1461 QUIRK_DRIVER_INFO {1462 .vendor_name = "M-Audio",1463 .product_name = "MidiSport 2x4",1464 QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) {1465 .out_cables = 0x000f,1466 .in_cables = 0x00031467 }1468 }1469},1470{1471 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001),1472 QUIRK_DRIVER_INFO {1473 .vendor_name = "M-Audio",1474 .product_name = "Quattro",1475 QUIRK_DATA_COMPOSITE {1476 /*1477 * Interfaces 0-2 are "Windows-compatible", 16-bit only,1478 * and share endpoints with the other interfaces.1479 * Ignore them. The other interfaces can do 24 bits,1480 * but captured samples are big-endian (see usbaudio.c).1481 */1482 { QUIRK_DATA_IGNORE(0) },1483 { QUIRK_DATA_IGNORE(1) },1484 { QUIRK_DATA_IGNORE(2) },1485 { QUIRK_DATA_IGNORE(3) },1486 { QUIRK_DATA_STANDARD_AUDIO(4) },1487 { QUIRK_DATA_STANDARD_AUDIO(5) },1488 { QUIRK_DATA_IGNORE(6) },1489 { QUIRK_DATA_STANDARD_AUDIO(7) },1490 { QUIRK_DATA_STANDARD_AUDIO(8) },1491 {1492 QUIRK_DATA_MIDI_MIDIMAN(9) {1493 .out_cables = 0x0001,1494 .in_cables = 0x00011495 }1496 },1497 QUIRK_COMPOSITE_END1498 }1499 }1500},1501{1502 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003),1503 QUIRK_DRIVER_INFO {1504 .vendor_name = "M-Audio",1505 .product_name = "AudioPhile",1506 QUIRK_DATA_MIDI_MIDIMAN(6) {1507 .out_cables = 0x0001,1508 .in_cables = 0x00011509 }1510 }1511},1512{1513 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008),1514 QUIRK_DRIVER_INFO {1515 .vendor_name = "M-Audio",1516 .product_name = "Ozone",1517 QUIRK_DATA_MIDI_MIDIMAN(3) {1518 .out_cables = 0x0001,1519 .in_cables = 0x00011520 }1521 }1522},1523{1524 USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d),1525 QUIRK_DRIVER_INFO {1526 .vendor_name = "M-Audio",1527 .product_name = "OmniStudio",1528 QUIRK_DATA_COMPOSITE {1529 { QUIRK_DATA_IGNORE(0) },1530 { QUIRK_DATA_IGNORE(1) },1531 { QUIRK_DATA_IGNORE(2) },1532 { QUIRK_DATA_IGNORE(3) },1533 { QUIRK_DATA_STANDARD_AUDIO(4) },1534 { QUIRK_DATA_STANDARD_AUDIO(5) },1535 { QUIRK_DATA_IGNORE(6) },1536 { QUIRK_DATA_STANDARD_AUDIO(7) },1537 { QUIRK_DATA_STANDARD_AUDIO(8) },1538 {1539 QUIRK_DATA_MIDI_MIDIMAN(9) {1540 .out_cables = 0x0001,1541 .in_cables = 0x00011542 }1543 },1544 QUIRK_COMPOSITE_END1545 }1546 }1547},1548{1549 USB_DEVICE(0x0763, 0x2019),1550 QUIRK_DRIVER_INFO {1551 /* .vendor_name = "M-Audio", */1552 /* .product_name = "Ozone Academic", */1553 QUIRK_DATA_COMPOSITE {1554 { QUIRK_DATA_STANDARD_AUDIO(0) },1555 { QUIRK_DATA_STANDARD_AUDIO(1) },1556 { QUIRK_DATA_STANDARD_AUDIO(2) },1557 {1558 QUIRK_DATA_MIDI_MIDIMAN(3) {1559 .out_cables = 0x0001,1560 .in_cables = 0x00011561 }1562 },1563 QUIRK_COMPOSITE_END1564 }1565 }1566},1567{1568 /* M-Audio Micro */1569 USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a),1570},1571{1572 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),1573 QUIRK_DRIVER_INFO {1574 /* .vendor_name = "M-Audio", */1575 /* .product_name = "Fast Track C400", */1576 QUIRK_DATA_COMPOSITE {1577 { QUIRK_DATA_STANDARD_MIXER(1) },1578 /* Playback */1579 {1580 QUIRK_DATA_AUDIOFORMAT(2) {1581 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1582 .channels = 6,1583 .iface = 2,1584 .altsetting = 1,1585 .altset_idx = 1,1586 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1587 .endpoint = 0x01,1588 .ep_attr = 0x09,1589 .rates = SNDRV_PCM_RATE_44100 |1590 SNDRV_PCM_RATE_48000 |1591 SNDRV_PCM_RATE_88200 |1592 SNDRV_PCM_RATE_96000,1593 .rate_min = 44100,1594 .rate_max = 96000,1595 .nr_rates = 4,1596 .rate_table = (unsigned int[]) {1597 44100, 48000, 88200, 960001598 },1599 .clock = 0x80,1600 }1601 },1602 /* Capture */1603 {1604 QUIRK_DATA_AUDIOFORMAT(3) {1605 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1606 .channels = 4,1607 .iface = 3,1608 .altsetting = 1,1609 .altset_idx = 1,1610 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1611 .endpoint = 0x81,1612 .ep_attr = 0x05,1613 .rates = SNDRV_PCM_RATE_44100 |1614 SNDRV_PCM_RATE_48000 |1615 SNDRV_PCM_RATE_88200 |1616 SNDRV_PCM_RATE_96000,1617 .rate_min = 44100,1618 .rate_max = 96000,1619 .nr_rates = 4,1620 .rate_table = (unsigned int[]) {1621 44100, 48000, 88200, 960001622 },1623 .clock = 0x80,1624 }1625 },1626 /* MIDI: Interface = 4*/1627 QUIRK_COMPOSITE_END1628 }1629 }1630},1631{1632 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031),1633 QUIRK_DRIVER_INFO {1634 /* .vendor_name = "M-Audio", */1635 /* .product_name = "Fast Track C600", */1636 QUIRK_DATA_COMPOSITE {1637 { QUIRK_DATA_STANDARD_MIXER(1) },1638 /* Playback */1639 {1640 QUIRK_DATA_AUDIOFORMAT(2) {1641 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1642 .channels = 8,1643 .iface = 2,1644 .altsetting = 1,1645 .altset_idx = 1,1646 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1647 .endpoint = 0x01,1648 .ep_attr = 0x09,1649 .rates = SNDRV_PCM_RATE_44100 |1650 SNDRV_PCM_RATE_48000 |1651 SNDRV_PCM_RATE_88200 |1652 SNDRV_PCM_RATE_96000,1653 .rate_min = 44100,1654 .rate_max = 96000,1655 .nr_rates = 4,1656 .rate_table = (unsigned int[]) {1657 44100, 48000, 88200, 960001658 },1659 .clock = 0x80,1660 }1661 },1662 /* Capture */1663 {1664 QUIRK_DATA_AUDIOFORMAT(3) {1665 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1666 .channels = 6,1667 .iface = 3,1668 .altsetting = 1,1669 .altset_idx = 1,1670 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1671 .endpoint = 0x81,1672 .ep_attr = 0x05,1673 .rates = SNDRV_PCM_RATE_44100 |1674 SNDRV_PCM_RATE_48000 |1675 SNDRV_PCM_RATE_88200 |1676 SNDRV_PCM_RATE_96000,1677 .rate_min = 44100,1678 .rate_max = 96000,1679 .nr_rates = 4,1680 .rate_table = (unsigned int[]) {1681 44100, 48000, 88200, 960001682 },1683 .clock = 0x80,1684 }1685 },1686 /* MIDI: Interface = 4 */1687 QUIRK_COMPOSITE_END1688 }1689 }1690},1691{1692 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080),1693 QUIRK_DRIVER_INFO {1694 /* .vendor_name = "M-Audio", */1695 /* .product_name = "Fast Track Ultra", */1696 QUIRK_DATA_COMPOSITE {1697 { QUIRK_DATA_STANDARD_MIXER(0) },1698 {1699 QUIRK_DATA_AUDIOFORMAT(1) {1700 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1701 .channels = 8,1702 .iface = 1,1703 .altsetting = 1,1704 .altset_idx = 1,1705 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1706 .endpoint = 0x01,1707 .ep_attr = 0x09,1708 .rates = SNDRV_PCM_RATE_44100 |1709 SNDRV_PCM_RATE_48000 |1710 SNDRV_PCM_RATE_88200 |1711 SNDRV_PCM_RATE_96000,1712 .rate_min = 44100,1713 .rate_max = 96000,1714 .nr_rates = 4,1715 .rate_table = (unsigned int[]) {1716 44100, 48000, 88200, 960001717 }1718 }1719 },1720 {1721 QUIRK_DATA_AUDIOFORMAT(2) {1722 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1723 .channels = 8,1724 .iface = 2,1725 .altsetting = 1,1726 .altset_idx = 1,1727 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1728 .endpoint = 0x81,1729 .ep_attr = 0x05,1730 .rates = SNDRV_PCM_RATE_44100 |1731 SNDRV_PCM_RATE_48000 |1732 SNDRV_PCM_RATE_88200 |1733 SNDRV_PCM_RATE_96000,1734 .rate_min = 44100,1735 .rate_max = 96000,1736 .nr_rates = 4,1737 .rate_table = (unsigned int[]) {1738 44100, 48000, 88200, 960001739 }1740 }1741 },1742 /* interface 3 (MIDI) is standard compliant */1743 QUIRK_COMPOSITE_END1744 }1745 }1746},1747{1748 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081),1749 QUIRK_DRIVER_INFO {1750 /* .vendor_name = "M-Audio", */1751 /* .product_name = "Fast Track Ultra 8R", */1752 QUIRK_DATA_COMPOSITE {1753 { QUIRK_DATA_STANDARD_MIXER(0) },1754 {1755 QUIRK_DATA_AUDIOFORMAT(1) {1756 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1757 .channels = 8,1758 .iface = 1,1759 .altsetting = 1,1760 .altset_idx = 1,1761 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1762 .endpoint = 0x01,1763 .ep_attr = 0x09,1764 .rates = SNDRV_PCM_RATE_44100 |1765 SNDRV_PCM_RATE_48000 |1766 SNDRV_PCM_RATE_88200 |1767 SNDRV_PCM_RATE_96000,1768 .rate_min = 44100,1769 .rate_max = 96000,1770 .nr_rates = 4,1771 .rate_table = (unsigned int[]) {1772 44100, 48000, 88200, 960001773 }1774 }1775 },1776 {1777 QUIRK_DATA_AUDIOFORMAT(2) {1778 .formats = SNDRV_PCM_FMTBIT_S24_3LE,1779 .channels = 8,1780 .iface = 2,1781 .altsetting = 1,1782 .altset_idx = 1,1783 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,1784 .endpoint = 0x81,1785 .ep_attr = 0x05,1786 .rates = SNDRV_PCM_RATE_44100 |1787 SNDRV_PCM_RATE_48000 |1788 SNDRV_PCM_RATE_88200 |1789 SNDRV_PCM_RATE_96000,1790 .rate_min = 44100,1791 .rate_max = 96000,1792 .nr_rates = 4,1793 .rate_table = (unsigned int[]) {1794 44100, 48000, 88200, 960001795 }1796 }1797 },1798 /* interface 3 (MIDI) is standard compliant */1799 QUIRK_COMPOSITE_END1800 }1801 }1802},1803 1804/* Casio devices */1805{1806 USB_DEVICE(0x07cf, 0x6801),1807 QUIRK_DRIVER_INFO {1808 .vendor_name = "Casio",1809 .product_name = "PL-40R",1810 QUIRK_DATA_MIDI_YAMAHA(0)1811 }1812},1813{1814 /* this ID is used by several devices without a product ID */1815 USB_DEVICE(0x07cf, 0x6802),1816 QUIRK_DRIVER_INFO {1817 .vendor_name = "Casio",1818 .product_name = "Keyboard",1819 QUIRK_DATA_MIDI_YAMAHA(0)1820 }1821},1822 1823/* Mark of the Unicorn devices */1824{1825 /* thanks to Robert A. Lerche <ral 'at' msbit.com> */1826 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |1827 USB_DEVICE_ID_MATCH_PRODUCT |1828 USB_DEVICE_ID_MATCH_DEV_SUBCLASS,1829 .idVendor = 0x07fd,1830 .idProduct = 0x0001,1831 .bDeviceSubClass = 2,1832 QUIRK_DRIVER_INFO {1833 .vendor_name = "MOTU",1834 .product_name = "Fastlane",1835 QUIRK_DATA_COMPOSITE {1836 { QUIRK_DATA_RAW_BYTES(0) },1837 { QUIRK_DATA_IGNORE(1) },1838 QUIRK_COMPOSITE_END1839 }1840 }1841},1842 1843/* Emagic devices */1844{1845 USB_DEVICE(0x086a, 0x0001),1846 QUIRK_DRIVER_INFO {1847 .vendor_name = "Emagic",1848 .product_name = "Unitor8",1849 QUIRK_DATA_MIDI_EMAGIC(2) {1850 .out_cables = 0x80ff,1851 .in_cables = 0x80ff1852 }1853 }1854},1855{1856 USB_DEVICE(0x086a, 0x0002),1857 QUIRK_DRIVER_INFO {1858 .vendor_name = "Emagic",1859 /* .product_name = "AMT8", */1860 QUIRK_DATA_MIDI_EMAGIC(2) {1861 .out_cables = 0x80ff,1862 .in_cables = 0x80ff1863 }1864 }1865},1866{1867 USB_DEVICE(0x086a, 0x0003),1868 QUIRK_DRIVER_INFO {1869 .vendor_name = "Emagic",1870 /* .product_name = "MT4", */1871 QUIRK_DATA_MIDI_EMAGIC(2) {1872 .out_cables = 0x800f,1873 .in_cables = 0x80031874 }1875 }1876},1877 1878/* KORG devices */1879{1880 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200),1881 QUIRK_DRIVER_INFO {1882 .vendor_name = "KORG, Inc.",1883 /* .product_name = "PANDORA PX5D", */1884 QUIRK_DATA_STANDARD_MIDI(3)1885 }1886},1887 1888{1889 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201),1890 QUIRK_DRIVER_INFO {1891 .vendor_name = "KORG, Inc.",1892 /* .product_name = "ToneLab ST", */1893 QUIRK_DATA_STANDARD_MIDI(3)1894 }1895},1896 1897{1898 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204),1899 QUIRK_DRIVER_INFO {1900 .vendor_name = "KORG, Inc.",1901 /* .product_name = "ToneLab EX", */1902 QUIRK_DATA_STANDARD_MIDI(3)1903 }1904},1905 1906/* AKAI devices */1907{1908 USB_DEVICE(0x09e8, 0x0062),1909 QUIRK_DRIVER_INFO {1910 .vendor_name = "AKAI",1911 .product_name = "MPD16",1912 .ifnum = 0,1913 .type = QUIRK_MIDI_AKAI,1914 }1915},1916 1917{1918 /* Akai MPC Element */1919 USB_DEVICE(0x09e8, 0x0021),1920 QUIRK_DRIVER_INFO {1921 QUIRK_DATA_COMPOSITE {1922 { QUIRK_DATA_IGNORE(0) },1923 { QUIRK_DATA_STANDARD_MIDI(1) },1924 QUIRK_COMPOSITE_END1925 }1926 }1927},1928 1929/* Steinberg devices */1930{1931 /* Steinberg MI2 */1932 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),1933 QUIRK_DRIVER_INFO {1934 QUIRK_DATA_COMPOSITE {1935 { QUIRK_DATA_STANDARD_AUDIO(0) },1936 { QUIRK_DATA_STANDARD_AUDIO(1) },1937 { QUIRK_DATA_STANDARD_AUDIO(2) },1938 {1939 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {1940 .out_cables = 0x0001,1941 .in_cables = 0x00011942 }1943 },1944 QUIRK_COMPOSITE_END1945 }1946 }1947},1948{1949 /* Steinberg MI4 */1950 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),1951 QUIRK_DRIVER_INFO {1952 QUIRK_DATA_COMPOSITE {1953 { QUIRK_DATA_STANDARD_AUDIO(0) },1954 { QUIRK_DATA_STANDARD_AUDIO(1) },1955 { QUIRK_DATA_STANDARD_AUDIO(2) },1956 {1957 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {1958 .out_cables = 0x0001,1959 .in_cables = 0x00011960 }1961 },1962 QUIRK_COMPOSITE_END1963 }1964 }1965},1966 1967/* TerraTec devices */1968{1969 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),1970 QUIRK_DRIVER_INFO {1971 .vendor_name = "TerraTec",1972 .product_name = "PHASE 26",1973 QUIRK_DATA_STANDARD_MIDI(3)1974 }1975},1976{1977 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013),1978 QUIRK_DRIVER_INFO {1979 .vendor_name = "TerraTec",1980 .product_name = "PHASE 26",1981 QUIRK_DATA_STANDARD_MIDI(3)1982 }1983},1984{1985 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014),1986 QUIRK_DRIVER_INFO {1987 .vendor_name = "TerraTec",1988 .product_name = "PHASE 26",1989 QUIRK_DATA_STANDARD_MIDI(3)1990 }1991},1992{1993 USB_DEVICE(0x0ccd, 0x0035),1994 QUIRK_DRIVER_INFO {1995 .vendor_name = "Miditech",1996 .product_name = "Play'n Roll",1997 .ifnum = 0,1998 .type = QUIRK_MIDI_CME1999 }2000},2001 2002/* Stanton ScratchAmp */2003{ USB_DEVICE(0x103d, 0x0100) },2004{ USB_DEVICE(0x103d, 0x0101) },2005 2006/* Novation EMS devices */2007{2008 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001),2009 QUIRK_DRIVER_INFO {2010 .vendor_name = "Novation",2011 .product_name = "ReMOTE Audio/XStation",2012 .ifnum = 4,2013 .type = QUIRK_MIDI_NOVATION2014 }2015},2016{2017 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002),2018 QUIRK_DRIVER_INFO {2019 .vendor_name = "Novation",2020 .product_name = "Speedio",2021 .ifnum = 3,2022 .type = QUIRK_MIDI_NOVATION2023 }2024},2025{2026 USB_DEVICE(0x1235, 0x000a),2027 QUIRK_DRIVER_INFO {2028 /* .vendor_name = "Novation", */2029 /* .product_name = "Nocturn", */2030 QUIRK_DATA_RAW_BYTES(0)2031 }2032},2033{2034 USB_DEVICE(0x1235, 0x000e),2035 QUIRK_DRIVER_INFO {2036 /* .vendor_name = "Novation", */2037 /* .product_name = "Launchpad", */2038 QUIRK_DATA_RAW_BYTES(0)2039 }2040},2041{2042 USB_DEVICE(0x1235, 0x0010),2043 QUIRK_DRIVER_INFO {2044 .vendor_name = "Focusrite",2045 .product_name = "Saffire 6 USB",2046 QUIRK_DATA_COMPOSITE {2047 { QUIRK_DATA_STANDARD_MIXER(0) },2048 {2049 QUIRK_DATA_AUDIOFORMAT(0) {2050 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2051 .channels = 4,2052 .iface = 0,2053 .altsetting = 1,2054 .altset_idx = 1,2055 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,2056 .endpoint = 0x01,2057 .ep_attr = USB_ENDPOINT_XFER_ISOC,2058 .datainterval = 1,2059 .maxpacksize = 0x024c,2060 .rates = SNDRV_PCM_RATE_44100 |2061 SNDRV_PCM_RATE_48000,2062 .rate_min = 44100,2063 .rate_max = 48000,2064 .nr_rates = 2,2065 .rate_table = (unsigned int[]) {2066 44100, 480002067 },2068 .sync_ep = 0x82,2069 .sync_iface = 0,2070 .sync_altsetting = 1,2071 .sync_ep_idx = 1,2072 .implicit_fb = 1,2073 }2074 },2075 {2076 QUIRK_DATA_AUDIOFORMAT(0) {2077 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2078 .channels = 2,2079 .iface = 0,2080 .altsetting = 1,2081 .altset_idx = 1,2082 .attributes = 0,2083 .endpoint = 0x82,2084 .ep_idx = 1,2085 .ep_attr = USB_ENDPOINT_XFER_ISOC,2086 .datainterval = 1,2087 .maxpacksize = 0x0126,2088 .rates = SNDRV_PCM_RATE_44100 |2089 SNDRV_PCM_RATE_48000,2090 .rate_min = 44100,2091 .rate_max = 48000,2092 .nr_rates = 2,2093 .rate_table = (unsigned int[]) {2094 44100, 480002095 }2096 }2097 },2098 { QUIRK_DATA_RAW_BYTES(1) },2099 QUIRK_COMPOSITE_END2100 }2101 }2102},2103{2104 USB_DEVICE(0x1235, 0x0018),2105 QUIRK_DRIVER_INFO {2106 .vendor_name = "Novation",2107 .product_name = "Twitch",2108 QUIRK_DATA_COMPOSITE {2109 {2110 QUIRK_DATA_AUDIOFORMAT(0) {2111 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2112 .channels = 4,2113 .iface = 0,2114 .altsetting = 1,2115 .altset_idx = 1,2116 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,2117 .endpoint = 0x01,2118 .ep_attr = USB_ENDPOINT_XFER_ISOC,2119 .rates = SNDRV_PCM_RATE_44100 |2120 SNDRV_PCM_RATE_48000,2121 .rate_min = 44100,2122 .rate_max = 48000,2123 .nr_rates = 2,2124 .rate_table = (unsigned int[]) {2125 44100, 480002126 }2127 }2128 },2129 { QUIRK_DATA_RAW_BYTES(1) },2130 QUIRK_COMPOSITE_END2131 }2132 }2133},2134{2135 USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661),2136 QUIRK_DRIVER_INFO {2137 .vendor_name = "Novation",2138 .product_name = "ReMOTE25",2139 .ifnum = 0,2140 .type = QUIRK_MIDI_NOVATION2141 }2142},2143 2144/* Access Music devices */2145{2146 /* VirusTI Desktop */2147 USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),2148 QUIRK_DRIVER_INFO {2149 QUIRK_DATA_COMPOSITE {2150 {2151 QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) {2152 .out_cables = 0x0003,2153 .in_cables = 0x00032154 }2155 },2156 { QUIRK_DATA_IGNORE(4) },2157 QUIRK_COMPOSITE_END2158 }2159 }2160},2161 2162/* Native Instruments MK2 series */2163{2164 /* Komplete Audio 6 */2165 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,2166 .idVendor = 0x17cc,2167 .idProduct = 0x1000,2168},2169{2170 /* Traktor Audio 6 */2171 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,2172 .idVendor = 0x17cc,2173 .idProduct = 0x1010,2174},2175{2176 /* Traktor Audio 10 */2177 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,2178 .idVendor = 0x17cc,2179 .idProduct = 0x1020,2180},2181 2182/* QinHeng devices */2183{2184 USB_DEVICE(0x1a86, 0x752d),2185 QUIRK_DRIVER_INFO {2186 .vendor_name = "QinHeng",2187 .product_name = "CH345",2188 .ifnum = 1,2189 .type = QUIRK_MIDI_CH3452190 }2191},2192 2193/* KeithMcMillen Stringport */2194{ USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: should be more restrictive matching */2195 2196/* Miditech devices */2197{2198 USB_DEVICE(0x4752, 0x0011),2199 QUIRK_DRIVER_INFO {2200 .vendor_name = "Miditech",2201 .product_name = "Midistart-2",2202 .ifnum = 0,2203 .type = QUIRK_MIDI_CME2204 }2205},2206 2207/* Central Music devices */2208{2209 /* this ID used by both Miditech MidiStudio-2 and CME UF-x */2210 USB_DEVICE(0x7104, 0x2202),2211 QUIRK_DRIVER_INFO {2212 .ifnum = 0,2213 .type = QUIRK_MIDI_CME2214 }2215},2216 2217/* Digidesign Mbox */2218{2219 /* Thanks to Clemens Ladisch <clemens@ladisch.de> */2220 USB_DEVICE(0x0dba, 0x1000),2221 QUIRK_DRIVER_INFO {2222 .vendor_name = "Digidesign",2223 .product_name = "MBox",2224 QUIRK_DATA_COMPOSITE{2225 { QUIRK_DATA_STANDARD_MIXER(0) },2226 {2227 QUIRK_DATA_AUDIOFORMAT(1) {2228 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2229 .channels = 2,2230 .iface = 1,2231 .altsetting = 1,2232 .altset_idx = 1,2233 .attributes = 0x4,2234 .endpoint = 0x02,2235 .ep_attr = USB_ENDPOINT_XFER_ISOC |2236 USB_ENDPOINT_SYNC_SYNC,2237 .maxpacksize = 0x130,2238 .rates = SNDRV_PCM_RATE_48000,2239 .rate_min = 48000,2240 .rate_max = 48000,2241 .nr_rates = 1,2242 .rate_table = (unsigned int[]) {2243 480002244 }2245 }2246 },2247 {2248 QUIRK_DATA_AUDIOFORMAT(1) {2249 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2250 .channels = 2,2251 .iface = 1,2252 .altsetting = 1,2253 .altset_idx = 1,2254 .attributes = 0x4,2255 .endpoint = 0x81,2256 .ep_idx = 1,2257 .ep_attr = USB_ENDPOINT_XFER_ISOC |2258 USB_ENDPOINT_SYNC_ASYNC,2259 .maxpacksize = 0x130,2260 .rates = SNDRV_PCM_RATE_48000,2261 .rate_min = 48000,2262 .rate_max = 48000,2263 .nr_rates = 1,2264 .rate_table = (unsigned int[]) {2265 480002266 }2267 }2268 },2269 QUIRK_COMPOSITE_END2270 }2271 }2272},2273 2274/* DIGIDESIGN MBOX 2 */2275{2276 USB_DEVICE(0x0dba, 0x3000),2277 QUIRK_DRIVER_INFO {2278 .vendor_name = "Digidesign",2279 .product_name = "Mbox 2",2280 QUIRK_DATA_COMPOSITE {2281 { QUIRK_DATA_IGNORE(0) },2282 { QUIRK_DATA_IGNORE(1) },2283 {2284 QUIRK_DATA_AUDIOFORMAT(2) {2285 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2286 .channels = 2,2287 .iface = 2,2288 .altsetting = 2,2289 .altset_idx = 1,2290 .attributes = 0x00,2291 .endpoint = 0x03,2292 .ep_attr = USB_ENDPOINT_SYNC_ASYNC,2293 .rates = SNDRV_PCM_RATE_48000,2294 .rate_min = 48000,2295 .rate_max = 48000,2296 .nr_rates = 1,2297 .rate_table = (unsigned int[]) {2298 480002299 }2300 }2301 },2302 { QUIRK_DATA_IGNORE(3) },2303 {2304 QUIRK_DATA_AUDIOFORMAT(4) {2305 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2306 .channels = 2,2307 .iface = 4,2308 .altsetting = 2,2309 .altset_idx = 1,2310 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,2311 .endpoint = 0x85,2312 .ep_attr = USB_ENDPOINT_SYNC_SYNC,2313 .rates = SNDRV_PCM_RATE_48000,2314 .rate_min = 48000,2315 .rate_max = 48000,2316 .nr_rates = 1,2317 .rate_table = (unsigned int[]) {2318 480002319 }2320 }2321 },2322 { QUIRK_DATA_IGNORE(5) },2323 {2324 QUIRK_DATA_MIDI_MIDIMAN(6) {2325 .out_ep = 0x02,2326 .out_cables = 0x0001,2327 .in_ep = 0x81,2328 .in_interval = 0x01,2329 .in_cables = 0x00012330 }2331 },2332 QUIRK_COMPOSITE_END2333 }2334 }2335},2336/* DIGIDESIGN MBOX 3 */2337{2338 USB_DEVICE(0x0dba, 0x5000),2339 QUIRK_DRIVER_INFO {2340 .vendor_name = "Digidesign",2341 .product_name = "Mbox 3",2342 QUIRK_DATA_COMPOSITE {2343 { QUIRK_DATA_IGNORE(0) },2344 { QUIRK_DATA_IGNORE(1) },2345 {2346 QUIRK_DATA_AUDIOFORMAT(2) {2347 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2348 .fmt_bits = 24,2349 .channels = 4,2350 .iface = 2,2351 .altsetting = 1,2352 .altset_idx = 1,2353 .attributes = 0x00,2354 .endpoint = USB_RECIP_INTERFACE | USB_DIR_OUT,2355 .ep_attr = USB_ENDPOINT_XFER_ISOC |2356 USB_ENDPOINT_SYNC_ASYNC,2357 .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |2358 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,2359 .rate_min = 44100,2360 .rate_max = 96000,2361 .nr_rates = 4,2362 .rate_table = (unsigned int[]) {2363 44100, 48000, 88200, 960002364 },2365 .sync_ep = USB_RECIP_INTERFACE | USB_DIR_IN,2366 .sync_iface = 3,2367 .sync_altsetting = 1,2368 .sync_ep_idx = 1,2369 .implicit_fb = 1,2370 }2371 },2372 {2373 QUIRK_DATA_AUDIOFORMAT(3) {2374 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2375 .fmt_bits = 24,2376 .channels = 4,2377 .iface = 3,2378 .altsetting = 1,2379 .altset_idx = 1,2380 .attributes = 0x00,2381 .endpoint = USB_RECIP_INTERFACE | USB_DIR_IN,2382 .ep_attr = USB_ENDPOINT_XFER_ISOC |2383 USB_ENDPOINT_SYNC_ASYNC,2384 .maxpacksize = 0x009c,2385 .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |2386 SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,2387 .rate_min = 44100,2388 .rate_max = 96000,2389 .nr_rates = 4,2390 .rate_table = (unsigned int[]) {2391 44100, 48000, 88200, 960002392 },2393 .implicit_fb = 0,2394 }2395 },2396 {2397 QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) {2398 .out_cables = 0x0001,2399 .in_cables = 0x00012400 }2401 },2402 QUIRK_COMPOSITE_END2403 }2404 }2405},2406{2407 /* Tascam US122 MKII - playback-only support */2408 USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021),2409 QUIRK_DRIVER_INFO {2410 .vendor_name = "TASCAM",2411 .product_name = "US122 MKII",2412 QUIRK_DATA_COMPOSITE {2413 { QUIRK_DATA_IGNORE(0) },2414 {2415 QUIRK_DATA_AUDIOFORMAT(1) {2416 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2417 .channels = 2,2418 .iface = 1,2419 .altsetting = 1,2420 .altset_idx = 1,2421 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,2422 .endpoint = 0x02,2423 .ep_attr = USB_ENDPOINT_XFER_ISOC,2424 .rates = SNDRV_PCM_RATE_44100 |2425 SNDRV_PCM_RATE_48000 |2426 SNDRV_PCM_RATE_88200 |2427 SNDRV_PCM_RATE_96000,2428 .rate_min = 44100,2429 .rate_max = 96000,2430 .nr_rates = 4,2431 .rate_table = (unsigned int[]) {2432 44100, 48000, 88200, 960002433 }2434 }2435 },2436 QUIRK_COMPOSITE_END2437 }2438 }2439},2440 2441/* Denon DN-X1600 */2442{2443 USB_AUDIO_DEVICE(0x154e, 0x500e),2444 QUIRK_DRIVER_INFO {2445 .vendor_name = "Denon",2446 .product_name = "DN-X1600",2447 QUIRK_DATA_COMPOSITE{2448 { QUIRK_DATA_IGNORE(0) },2449 {2450 QUIRK_DATA_AUDIOFORMAT(1) {2451 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2452 .channels = 8,2453 .iface = 1,2454 .altsetting = 1,2455 .altset_idx = 1,2456 .attributes = 0x0,2457 .endpoint = 0x01,2458 .ep_attr = USB_ENDPOINT_XFER_ISOC |2459 USB_ENDPOINT_SYNC_ADAPTIVE,2460 .maxpacksize = 0x138,2461 .rates = SNDRV_PCM_RATE_48000,2462 .rate_min = 48000,2463 .rate_max = 48000,2464 .nr_rates = 1,2465 .rate_table = (unsigned int[]) {2466 480002467 }2468 }2469 },2470 {2471 QUIRK_DATA_AUDIOFORMAT(2) {2472 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2473 .channels = 8,2474 .iface = 2,2475 .altsetting = 1,2476 .altset_idx = 1,2477 .attributes = 0x0,2478 .endpoint = 0x85,2479 .ep_attr = USB_ENDPOINT_XFER_ISOC |2480 USB_ENDPOINT_SYNC_ADAPTIVE,2481 .maxpacksize = 0x138,2482 .rates = SNDRV_PCM_RATE_48000,2483 .rate_min = 48000,2484 .rate_max = 48000,2485 .nr_rates = 1,2486 .rate_table = (unsigned int[]) {2487 480002488 }2489 }2490 },2491 { QUIRK_DATA_STANDARD_MIDI(4) },2492 QUIRK_COMPOSITE_END2493 }2494 }2495},2496 2497/* Microsoft XboxLive Headset/Xbox Communicator */2498{2499 USB_DEVICE(0x045e, 0x0283),2500 .bInterfaceClass = USB_CLASS_PER_INTERFACE,2501 QUIRK_DRIVER_INFO {2502 .vendor_name = "Microsoft",2503 .product_name = "XboxLive Headset/Xbox Communicator",2504 QUIRK_DATA_COMPOSITE {2505 {2506 /* playback */2507 QUIRK_DATA_AUDIOFORMAT(0) {2508 .formats = SNDRV_PCM_FMTBIT_S16_LE,2509 .channels = 1,2510 .iface = 0,2511 .altsetting = 0,2512 .altset_idx = 0,2513 .attributes = 0,2514 .endpoint = 0x04,2515 .ep_attr = 0x05,2516 .rates = SNDRV_PCM_RATE_CONTINUOUS,2517 .rate_min = 22050,2518 .rate_max = 220502519 }2520 },2521 {2522 /* capture */2523 QUIRK_DATA_AUDIOFORMAT(1) {2524 .formats = SNDRV_PCM_FMTBIT_S16_LE,2525 .channels = 1,2526 .iface = 1,2527 .altsetting = 0,2528 .altset_idx = 0,2529 .attributes = 0,2530 .endpoint = 0x85,2531 .ep_attr = 0x05,2532 .rates = SNDRV_PCM_RATE_CONTINUOUS,2533 .rate_min = 16000,2534 .rate_max = 160002535 }2536 },2537 QUIRK_COMPOSITE_END2538 }2539 }2540},2541 2542/* Reloop Play */2543{2544 USB_DEVICE(0x200c, 0x100b),2545 .bInterfaceClass = USB_CLASS_PER_INTERFACE,2546 QUIRK_DRIVER_INFO {2547 QUIRK_DATA_COMPOSITE {2548 { QUIRK_DATA_STANDARD_MIXER(0) },2549 {2550 QUIRK_DATA_AUDIOFORMAT(1) {2551 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2552 .channels = 4,2553 .iface = 1,2554 .altsetting = 1,2555 .altset_idx = 1,2556 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,2557 .endpoint = 0x01,2558 .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,2559 .rates = SNDRV_PCM_RATE_44100 |2560 SNDRV_PCM_RATE_48000,2561 .rate_min = 44100,2562 .rate_max = 48000,2563 .nr_rates = 2,2564 .rate_table = (unsigned int[]) {2565 44100, 480002566 }2567 }2568 },2569 QUIRK_COMPOSITE_END2570 }2571 }2572},2573 2574{2575 /*2576 * ZOOM R16/24 in audio interface mode.2577 * Playback requires an extra four byte LE length indicator2578 * at the start of each isochronous packet. This quirk is2579 * enabled in create_standard_audio_quirk().2580 */2581 USB_DEVICE(0x1686, 0x00dd),2582 QUIRK_DRIVER_INFO {2583 QUIRK_DATA_COMPOSITE {2584 { QUIRK_DATA_STANDARD_AUDIO(1) }, /* Playback */2585 { QUIRK_DATA_STANDARD_AUDIO(2) }, /* Capture */2586 { QUIRK_DATA_STANDARD_MIDI(3) }, /* Midi */2587 QUIRK_COMPOSITE_END2588 }2589 }2590},2591 2592{2593 /*2594 * Some USB MIDI devices don't have an audio control interface,2595 * so we have to grab MIDI streaming interfaces here.2596 */2597 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |2598 USB_DEVICE_ID_MATCH_INT_SUBCLASS,2599 .bInterfaceClass = USB_CLASS_AUDIO,2600 .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,2601 QUIRK_DRIVER_INFO {2602 QUIRK_DATA_STANDARD_MIDI(QUIRK_ANY_INTERFACE)2603 }2604},2605 2606/* Rane SL-1 */2607{2608 USB_DEVICE(0x13e5, 0x0001),2609 QUIRK_DRIVER_INFO {2610 QUIRK_DATA_STANDARD_AUDIO(QUIRK_ANY_INTERFACE)2611 }2612},2613 2614/* disabled due to regression for other devices;2615 * see https://bugzilla.kernel.org/show_bug.cgi?id=1999052616 */2617#if 02618{2619 /*2620 * Nura's first gen headphones use Cambridge Silicon Radio's vendor2621 * ID, but it looks like the product ID actually is only for Nura.2622 * The capture interface does not work at all (even on Windows),2623 * and only the 48 kHz sample rate works for the playback interface.2624 */2625 USB_DEVICE(0x0a12, 0x1243),2626 QUIRK_DRIVER_INFO {2627 QUIRK_DATA_COMPOSITE {2628 { QUIRK_DATA_STANDARD_MIXER(0) },2629 { QUIRK_DATA_IGNORE(1) }, /* Capture */2630 /* Playback */2631 {2632 QUIRK_DATA_AUDIOFORMAT(2) {2633 .formats = SNDRV_PCM_FMTBIT_S16_LE,2634 .channels = 2,2635 .iface = 2,2636 .altsetting = 1,2637 .altset_idx = 1,2638 .attributes = UAC_EP_CS_ATTR_FILL_MAX |2639 UAC_EP_CS_ATTR_SAMPLE_RATE,2640 .endpoint = 0x03,2641 .ep_attr = USB_ENDPOINT_XFER_ISOC,2642 .rates = SNDRV_PCM_RATE_48000,2643 .rate_min = 48000,2644 .rate_max = 48000,2645 .nr_rates = 1,2646 .rate_table = (unsigned int[]) {2647 480002648 }2649 }2650 },2651 QUIRK_COMPOSITE_END2652 }2653 }2654},2655#endif /* disabled */2656 2657{2658 /*2659 * Bower's & Wilkins PX headphones only support the 48 kHz sample rate2660 * even though it advertises more. The capture interface doesn't work2661 * even on windows.2662 */2663 USB_DEVICE(0x19b5, 0x0021),2664 QUIRK_DRIVER_INFO {2665 QUIRK_DATA_COMPOSITE {2666 { QUIRK_DATA_STANDARD_MIXER(0) },2667 /* Playback */2668 {2669 QUIRK_DATA_AUDIOFORMAT(1) {2670 .formats = SNDRV_PCM_FMTBIT_S16_LE,2671 .channels = 2,2672 .iface = 1,2673 .altsetting = 1,2674 .altset_idx = 1,2675 .attributes = UAC_EP_CS_ATTR_FILL_MAX |2676 UAC_EP_CS_ATTR_SAMPLE_RATE,2677 .endpoint = 0x03,2678 .ep_attr = USB_ENDPOINT_XFER_ISOC,2679 .rates = SNDRV_PCM_RATE_48000,2680 .rate_min = 48000,2681 .rate_max = 48000,2682 .nr_rates = 1,2683 .rate_table = (unsigned int[]) {2684 480002685 }2686 }2687 },2688 QUIRK_COMPOSITE_END2689 }2690 }2691},2692/* MOTU Microbook II */2693{2694 USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004),2695 QUIRK_DRIVER_INFO {2696 .vendor_name = "MOTU",2697 .product_name = "MicroBookII",2698 QUIRK_DATA_COMPOSITE {2699 { QUIRK_DATA_STANDARD_MIXER(0) },2700 {2701 QUIRK_DATA_AUDIOFORMAT(0) {2702 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2703 .channels = 6,2704 .iface = 0,2705 .altsetting = 1,2706 .altset_idx = 1,2707 .attributes = 0,2708 .endpoint = 0x84,2709 .rates = SNDRV_PCM_RATE_96000,2710 .ep_attr = USB_ENDPOINT_XFER_ISOC |2711 USB_ENDPOINT_SYNC_ASYNC,2712 .rate_min = 96000,2713 .rate_max = 96000,2714 .nr_rates = 1,2715 .maxpacksize = 0x00d8,2716 .rate_table = (unsigned int[]) {2717 960002718 }2719 }2720 },2721 {2722 QUIRK_DATA_AUDIOFORMAT(0) {2723 .formats = SNDRV_PCM_FMTBIT_S24_3BE,2724 .channels = 8,2725 .iface = 0,2726 .altsetting = 1,2727 .altset_idx = 1,2728 .attributes = 0,2729 .endpoint = 0x03,2730 .ep_idx = 1,2731 .rates = SNDRV_PCM_RATE_96000,2732 .ep_attr = USB_ENDPOINT_XFER_ISOC |2733 USB_ENDPOINT_SYNC_ASYNC,2734 .rate_min = 96000,2735 .rate_max = 96000,2736 .nr_rates = 1,2737 .maxpacksize = 0x0120,2738 .rate_table = (unsigned int[]) {2739 960002740 }2741 }2742 },2743 QUIRK_COMPOSITE_END2744 }2745 }2746},2747{2748 /*2749 * PIONEER DJ DDJ-SX32750 * PCM is 12 channels out, 10 channels in @ 44.1 fixed2751 * interface 0, vendor class alt setting 1 for endpoints 5 and 0x862752 * The feedback for the output is the input.2753 */2754 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023),2755 QUIRK_DRIVER_INFO {2756 QUIRK_DATA_COMPOSITE {2757 {2758 QUIRK_DATA_AUDIOFORMAT(0) {2759 .formats = SNDRV_PCM_FMTBIT_S32_LE,2760 .channels = 12,2761 .iface = 0,2762 .altsetting = 1,2763 .altset_idx = 1,2764 .endpoint = 0x05,2765 .ep_attr = USB_ENDPOINT_XFER_ISOC|2766 USB_ENDPOINT_SYNC_ASYNC,2767 .rates = SNDRV_PCM_RATE_44100,2768 .rate_min = 44100,2769 .rate_max = 44100,2770 .nr_rates = 1,2771 .rate_table = (unsigned int[]) { 44100 }2772 }2773 },2774 {2775 QUIRK_DATA_AUDIOFORMAT(0) {2776 .formats = SNDRV_PCM_FMTBIT_S32_LE,2777 .channels = 10,2778 .iface = 0,2779 .altsetting = 1,2780 .altset_idx = 1,2781 .endpoint = 0x86,2782 .ep_idx = 1,2783 .ep_attr = USB_ENDPOINT_XFER_ISOC|2784 USB_ENDPOINT_SYNC_ASYNC|2785 USB_ENDPOINT_USAGE_IMPLICIT_FB,2786 .rates = SNDRV_PCM_RATE_44100,2787 .rate_min = 44100,2788 .rate_max = 44100,2789 .nr_rates = 1,2790 .rate_table = (unsigned int[]) { 44100 }2791 }2792 },2793 QUIRK_COMPOSITE_END2794 }2795 }2796},2797{2798 /*2799 * Pioneer DJ DJM-250MK22800 * PCM is 8 channels out @ 48 fixed (endpoint 0x01)2801 * and 8 channels in @ 48 fixed (endpoint 0x82).2802 *2803 * Both playback and recording is working, even simultaneously.2804 *2805 * Playback channels could be mapped to:2806 * - CH12807 * - CH22808 * - AUX2809 *2810 * Recording channels could be mapped to:2811 * - Post CH1 Fader2812 * - Post CH2 Fader2813 * - Cross Fader A2814 * - Cross Fader B2815 * - MIC2816 * - AUX2817 * - REC OUT2818 *2819 * There is remaining problem with recording directly from PHONO/LINE.2820 * If we map a channel to:2821 * - CH1 Control Tone PHONO2822 * - CH1 Control Tone LINE2823 * - CH2 Control Tone PHONO2824 * - CH2 Control Tone LINE2825 * it is silent.2826 * There is no signal even on other operating systems with official drivers.2827 * The signal appears only when a supported application is started.2828 * This needs to be investigated yet...2829 * (there is quite a lot communication on the USB in both directions)2830 *2831 * In current version this mixer could be used for playback2832 * and for recording from vinyls (through Post CH* Fader)2833 * but not for DVS (Digital Vinyl Systems) like in Mixxx.2834 */2835 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),2836 QUIRK_DRIVER_INFO {2837 QUIRK_DATA_COMPOSITE {2838 {2839 QUIRK_DATA_AUDIOFORMAT(0) {2840 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2841 .channels = 8, // outputs2842 .iface = 0,2843 .altsetting = 1,2844 .altset_idx = 1,2845 .endpoint = 0x01,2846 .ep_attr = USB_ENDPOINT_XFER_ISOC|2847 USB_ENDPOINT_SYNC_ASYNC,2848 .rates = SNDRV_PCM_RATE_48000,2849 .rate_min = 48000,2850 .rate_max = 48000,2851 .nr_rates = 1,2852 .rate_table = (unsigned int[]) { 48000 }2853 }2854 },2855 {2856 QUIRK_DATA_AUDIOFORMAT(0) {2857 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2858 .channels = 8, // inputs2859 .iface = 0,2860 .altsetting = 1,2861 .altset_idx = 1,2862 .endpoint = 0x82,2863 .ep_idx = 1,2864 .ep_attr = USB_ENDPOINT_XFER_ISOC|2865 USB_ENDPOINT_SYNC_ASYNC|2866 USB_ENDPOINT_USAGE_IMPLICIT_FB,2867 .rates = SNDRV_PCM_RATE_48000,2868 .rate_min = 48000,2869 .rate_max = 48000,2870 .nr_rates = 1,2871 .rate_table = (unsigned int[]) { 48000 }2872 }2873 },2874 QUIRK_COMPOSITE_END2875 }2876 }2877},2878{2879 /*2880 * PIONEER DJ DDJ-RB2881 * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed2882 * The feedback for the output is the dummy input.2883 */2884 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),2885 QUIRK_DRIVER_INFO {2886 QUIRK_DATA_COMPOSITE {2887 {2888 QUIRK_DATA_AUDIOFORMAT(0) {2889 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2890 .channels = 4,2891 .iface = 0,2892 .altsetting = 1,2893 .altset_idx = 1,2894 .endpoint = 0x01,2895 .ep_attr = USB_ENDPOINT_XFER_ISOC|2896 USB_ENDPOINT_SYNC_ASYNC,2897 .rates = SNDRV_PCM_RATE_44100,2898 .rate_min = 44100,2899 .rate_max = 44100,2900 .nr_rates = 1,2901 .rate_table = (unsigned int[]) { 44100 }2902 }2903 },2904 {2905 QUIRK_DATA_AUDIOFORMAT(0) {2906 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2907 .channels = 2,2908 .iface = 0,2909 .altsetting = 1,2910 .altset_idx = 1,2911 .endpoint = 0x82,2912 .ep_idx = 1,2913 .ep_attr = USB_ENDPOINT_XFER_ISOC|2914 USB_ENDPOINT_SYNC_ASYNC|2915 USB_ENDPOINT_USAGE_IMPLICIT_FB,2916 .rates = SNDRV_PCM_RATE_44100,2917 .rate_min = 44100,2918 .rate_max = 44100,2919 .nr_rates = 1,2920 .rate_table = (unsigned int[]) { 44100 }2921 }2922 },2923 QUIRK_COMPOSITE_END2924 }2925 }2926},2927 2928{2929 /*2930 * PIONEER DJ DDJ-RR2931 * PCM is 6 channels out & 4 channels in @ 44.1 fixed2932 */2933 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d),2934 QUIRK_DRIVER_INFO {2935 QUIRK_DATA_COMPOSITE {2936 {2937 QUIRK_DATA_AUDIOFORMAT(0) {2938 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2939 .channels = 6, //Master, Headphones & Booth2940 .iface = 0,2941 .altsetting = 1,2942 .altset_idx = 1,2943 .endpoint = 0x01,2944 .ep_attr = USB_ENDPOINT_XFER_ISOC|2945 USB_ENDPOINT_SYNC_ASYNC,2946 .rates = SNDRV_PCM_RATE_44100,2947 .rate_min = 44100,2948 .rate_max = 44100,2949 .nr_rates = 1,2950 .rate_table = (unsigned int[]) { 44100 }2951 }2952 },2953 {2954 QUIRK_DATA_AUDIOFORMAT(0) {2955 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2956 .channels = 4, //2x RCA inputs (CH1 & CH2)2957 .iface = 0,2958 .altsetting = 1,2959 .altset_idx = 1,2960 .endpoint = 0x82,2961 .ep_idx = 1,2962 .ep_attr = USB_ENDPOINT_XFER_ISOC|2963 USB_ENDPOINT_SYNC_ASYNC|2964 USB_ENDPOINT_USAGE_IMPLICIT_FB,2965 .rates = SNDRV_PCM_RATE_44100,2966 .rate_min = 44100,2967 .rate_max = 44100,2968 .nr_rates = 1,2969 .rate_table = (unsigned int[]) { 44100 }2970 }2971 },2972 QUIRK_COMPOSITE_END2973 }2974 }2975},2976 2977{2978 /*2979 * PIONEER DJ DDJ-SR22980 * PCM is 4 channels out, 6 channels in @ 44.1 fixed2981 * The Feedback for the output is the input2982 */2983 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e),2984 QUIRK_DRIVER_INFO {2985 QUIRK_DATA_COMPOSITE {2986 {2987 QUIRK_DATA_AUDIOFORMAT(0) {2988 .formats = SNDRV_PCM_FMTBIT_S24_3LE,2989 .channels = 4,2990 .iface = 0,2991 .altsetting = 1,2992 .altset_idx = 1,2993 .endpoint = 0x01,2994 .ep_attr = USB_ENDPOINT_XFER_ISOC|2995 USB_ENDPOINT_SYNC_ASYNC,2996 .rates = SNDRV_PCM_RATE_44100,2997 .rate_min = 44100,2998 .rate_max = 44100,2999 .nr_rates = 1,3000 .rate_table = (unsigned int[]) { 44100 }3001 }3002 },3003 {3004 QUIRK_DATA_AUDIOFORMAT(0) {3005 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3006 .channels = 6,3007 .iface = 0,3008 .altsetting = 1,3009 .altset_idx = 1,3010 .endpoint = 0x82,3011 .ep_idx = 1,3012 .ep_attr = USB_ENDPOINT_XFER_ISOC|3013 USB_ENDPOINT_SYNC_ASYNC|3014 USB_ENDPOINT_USAGE_IMPLICIT_FB,3015 .rates = SNDRV_PCM_RATE_44100,3016 .rate_min = 44100,3017 .rate_max = 44100,3018 .nr_rates = 1,3019 .rate_table = (unsigned int[]) { 44100 }3020 }3021 },3022 QUIRK_COMPOSITE_END3023 }3024 }3025},3026 3027{3028 /*3029 * Pioneer DJ DJM-900NXS23030 * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE3031 */3032 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a),3033 QUIRK_DRIVER_INFO {3034 QUIRK_DATA_COMPOSITE {3035 {3036 QUIRK_DATA_AUDIOFORMAT(0) {3037 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3038 .channels = 10,3039 .iface = 0,3040 .altsetting = 1,3041 .altset_idx = 1,3042 .endpoint = 0x01,3043 .ep_attr = USB_ENDPOINT_XFER_ISOC|3044 USB_ENDPOINT_SYNC_ASYNC,3045 .rates = SNDRV_PCM_RATE_44100|3046 SNDRV_PCM_RATE_48000|3047 SNDRV_PCM_RATE_96000,3048 .rate_min = 44100,3049 .rate_max = 96000,3050 .nr_rates = 3,3051 .rate_table = (unsigned int[]) {3052 44100, 48000, 960003053 }3054 }3055 },3056 {3057 QUIRK_DATA_AUDIOFORMAT(0) {3058 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3059 .channels = 12,3060 .iface = 0,3061 .altsetting = 1,3062 .altset_idx = 1,3063 .endpoint = 0x82,3064 .ep_idx = 1,3065 .ep_attr = USB_ENDPOINT_XFER_ISOC|3066 USB_ENDPOINT_SYNC_ASYNC|3067 USB_ENDPOINT_USAGE_IMPLICIT_FB,3068 .rates = SNDRV_PCM_RATE_44100|3069 SNDRV_PCM_RATE_48000|3070 SNDRV_PCM_RATE_96000,3071 .rate_min = 44100,3072 .rate_max = 96000,3073 .nr_rates = 3,3074 .rate_table = (unsigned int[]) {3075 44100, 48000, 960003076 }3077 }3078 },3079 QUIRK_COMPOSITE_END3080 }3081 }3082},3083 3084{3085 /*3086 * PIONEER DJ DDJ-8003087 * PCM is 6 channels out, 6 channels in @ 44.1 fixed3088 * The Feedback for the output is the input3089 */3090 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029),3091 QUIRK_DRIVER_INFO {3092 QUIRK_DATA_COMPOSITE {3093 {3094 QUIRK_DATA_AUDIOFORMAT(0) {3095 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3096 .channels = 6,3097 .iface = 0,3098 .altsetting = 1,3099 .altset_idx = 1,3100 .endpoint = 0x01,3101 .ep_attr = USB_ENDPOINT_XFER_ISOC|3102 USB_ENDPOINT_SYNC_ASYNC,3103 .rates = SNDRV_PCM_RATE_44100,3104 .rate_min = 44100,3105 .rate_max = 44100,3106 .nr_rates = 1,3107 .rate_table = (unsigned int[]) { 44100 }3108 }3109 },3110 {3111 QUIRK_DATA_AUDIOFORMAT(0) {3112 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3113 .channels = 6,3114 .iface = 0,3115 .altsetting = 1,3116 .altset_idx = 1,3117 .endpoint = 0x82,3118 .ep_idx = 1,3119 .ep_attr = USB_ENDPOINT_XFER_ISOC|3120 USB_ENDPOINT_SYNC_ASYNC|3121 USB_ENDPOINT_USAGE_IMPLICIT_FB,3122 .rates = SNDRV_PCM_RATE_44100,3123 .rate_min = 44100,3124 .rate_max = 44100,3125 .nr_rates = 1,3126 .rate_table = (unsigned int[]) { 44100 }3127 }3128 },3129 QUIRK_COMPOSITE_END3130 }3131 }3132},3133 3134/*3135 * MacroSilicon MS2100/MS2106 based AV capture cards3136 *3137 * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.3138 * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if3139 * they pretend to be 96kHz mono as a workaround for stereo being broken3140 * by that...3141 *3142 * They also have an issue with initial stream alignment that causes the3143 * channels to be swapped and out of phase, which is dealt with in quirks.c.3144 */3145{3146 USB_AUDIO_DEVICE(0x534d, 0x0021),3147 QUIRK_DRIVER_INFO {3148 .vendor_name = "MacroSilicon",3149 .product_name = "MS210x",3150 QUIRK_DATA_COMPOSITE {3151 { QUIRK_DATA_STANDARD_MIXER(2) },3152 {3153 QUIRK_DATA_AUDIOFORMAT(3) {3154 .formats = SNDRV_PCM_FMTBIT_S16_LE,3155 .channels = 2,3156 .iface = 3,3157 .altsetting = 1,3158 .altset_idx = 1,3159 .attributes = 0,3160 .endpoint = 0x82,3161 .ep_attr = USB_ENDPOINT_XFER_ISOC |3162 USB_ENDPOINT_SYNC_ASYNC,3163 .rates = SNDRV_PCM_RATE_CONTINUOUS,3164 .rate_min = 48000,3165 .rate_max = 48000,3166 }3167 },3168 QUIRK_COMPOSITE_END3169 }3170 }3171},3172 3173/*3174 * MacroSilicon MS2109 based HDMI capture cards3175 *3176 * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.3177 * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if3178 * they pretend to be 96kHz mono as a workaround for stereo being broken3179 * by that...3180 *3181 * They also have an issue with initial stream alignment that causes the3182 * channels to be swapped and out of phase, which is dealt with in quirks.c.3183 */3184{3185 USB_AUDIO_DEVICE(0x534d, 0x2109),3186 QUIRK_DRIVER_INFO {3187 .vendor_name = "MacroSilicon",3188 .product_name = "MS2109",3189 QUIRK_DATA_COMPOSITE {3190 { QUIRK_DATA_STANDARD_MIXER(2) },3191 {3192 QUIRK_DATA_AUDIOFORMAT(3) {3193 .formats = SNDRV_PCM_FMTBIT_S16_LE,3194 .channels = 2,3195 .iface = 3,3196 .altsetting = 1,3197 .altset_idx = 1,3198 .attributes = 0,3199 .endpoint = 0x82,3200 .ep_attr = USB_ENDPOINT_XFER_ISOC |3201 USB_ENDPOINT_SYNC_ASYNC,3202 .rates = SNDRV_PCM_RATE_CONTINUOUS,3203 .rate_min = 48000,3204 .rate_max = 48000,3205 }3206 },3207 QUIRK_COMPOSITE_END3208 }3209 }3210},3211{3212 /*3213 * Pioneer DJ DJM-7503214 * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE3215 */3216 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),3217 QUIRK_DRIVER_INFO {3218 QUIRK_DATA_COMPOSITE {3219 {3220 QUIRK_DATA_AUDIOFORMAT(0) {3221 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3222 .channels = 8,3223 .iface = 0,3224 .altsetting = 1,3225 .altset_idx = 1,3226 .endpoint = 0x05,3227 .ep_attr = USB_ENDPOINT_XFER_ISOC|3228 USB_ENDPOINT_SYNC_ASYNC,3229 .rates = SNDRV_PCM_RATE_44100|3230 SNDRV_PCM_RATE_48000|3231 SNDRV_PCM_RATE_96000,3232 .rate_min = 44100,3233 .rate_max = 96000,3234 .nr_rates = 3,3235 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }3236 }3237 },3238 {3239 QUIRK_DATA_AUDIOFORMAT(0) {3240 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3241 .channels = 8,3242 .iface = 0,3243 .altsetting = 1,3244 .altset_idx = 1,3245 .endpoint = 0x86,3246 .ep_idx = 1,3247 .ep_attr = USB_ENDPOINT_XFER_ISOC|3248 USB_ENDPOINT_SYNC_ASYNC|3249 USB_ENDPOINT_USAGE_IMPLICIT_FB,3250 .rates = SNDRV_PCM_RATE_44100|3251 SNDRV_PCM_RATE_48000|3252 SNDRV_PCM_RATE_96000,3253 .rate_min = 44100,3254 .rate_max = 96000,3255 .nr_rates = 3,3256 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }3257 }3258 },3259 QUIRK_COMPOSITE_END3260 }3261 }3262},3263{3264 /*3265 * Pioneer DJ DJM-750MK23266 * 10 channels playback & 12 channels capture @ 48kHz S24LE3267 */3268 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b),3269 QUIRK_DRIVER_INFO {3270 QUIRK_DATA_COMPOSITE {3271 {3272 QUIRK_DATA_AUDIOFORMAT(0) {3273 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3274 .channels = 10,3275 .iface = 0,3276 .altsetting = 1,3277 .altset_idx = 1,3278 .endpoint = 0x01,3279 .ep_attr = USB_ENDPOINT_XFER_ISOC|3280 USB_ENDPOINT_SYNC_ASYNC,3281 .rates = SNDRV_PCM_RATE_48000,3282 .rate_min = 48000,3283 .rate_max = 48000,3284 .nr_rates = 1,3285 .rate_table = (unsigned int[]) {3286 480003287 }3288 }3289 },3290 {3291 QUIRK_DATA_AUDIOFORMAT(0) {3292 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3293 .channels = 12,3294 .iface = 0,3295 .altsetting = 1,3296 .altset_idx = 1,3297 .endpoint = 0x82,3298 .ep_idx = 1,3299 .ep_attr = USB_ENDPOINT_XFER_ISOC|3300 USB_ENDPOINT_SYNC_ASYNC|3301 USB_ENDPOINT_USAGE_IMPLICIT_FB,3302 .rates = SNDRV_PCM_RATE_48000,3303 .rate_min = 48000,3304 .rate_max = 48000,3305 .nr_rates = 1,3306 .rate_table = (unsigned int[]) { 48000 }3307 }3308 },3309 QUIRK_COMPOSITE_END3310 }3311 }3312},3313{3314 /*3315 * Pioneer DJ DJM-8503316 * 8 channels playback and 8 channels capture @ 44.1/48/96kHz S24LE3317 * Playback on EP 0x053318 * Capture on EP 0x863319 */3320 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163),3321 QUIRK_DRIVER_INFO {3322 QUIRK_DATA_COMPOSITE {3323 {3324 QUIRK_DATA_AUDIOFORMAT(0) {3325 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3326 .channels = 8,3327 .iface = 0,3328 .altsetting = 1,3329 .altset_idx = 1,3330 .endpoint = 0x05,3331 .ep_attr = USB_ENDPOINT_XFER_ISOC|3332 USB_ENDPOINT_SYNC_ASYNC|3333 USB_ENDPOINT_USAGE_DATA,3334 .rates = SNDRV_PCM_RATE_44100|3335 SNDRV_PCM_RATE_48000|3336 SNDRV_PCM_RATE_96000,3337 .rate_min = 44100,3338 .rate_max = 96000,3339 .nr_rates = 3,3340 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }3341 }3342 },3343 {3344 QUIRK_DATA_AUDIOFORMAT(0) {3345 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3346 .channels = 8,3347 .iface = 0,3348 .altsetting = 1,3349 .altset_idx = 1,3350 .endpoint = 0x86,3351 .ep_idx = 1,3352 .ep_attr = USB_ENDPOINT_XFER_ISOC|3353 USB_ENDPOINT_SYNC_ASYNC|3354 USB_ENDPOINT_USAGE_DATA,3355 .rates = SNDRV_PCM_RATE_44100|3356 SNDRV_PCM_RATE_48000|3357 SNDRV_PCM_RATE_96000,3358 .rate_min = 44100,3359 .rate_max = 96000,3360 .nr_rates = 3,3361 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }3362 }3363 },3364 QUIRK_COMPOSITE_END3365 }3366 }3367},3368{3369 /*3370 * Pioneer DJ DJM-4503371 * PCM is 8 channels out @ 48 fixed (endpoint 0x01)3372 * and 8 channels in @ 48 fixed (endpoint 0x82).3373 */3374 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),3375 QUIRK_DRIVER_INFO {3376 QUIRK_DATA_COMPOSITE {3377 {3378 QUIRK_DATA_AUDIOFORMAT(0) {3379 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3380 .channels = 8, // outputs3381 .iface = 0,3382 .altsetting = 1,3383 .altset_idx = 1,3384 .endpoint = 0x01,3385 .ep_attr = USB_ENDPOINT_XFER_ISOC|3386 USB_ENDPOINT_SYNC_ASYNC,3387 .rates = SNDRV_PCM_RATE_48000,3388 .rate_min = 48000,3389 .rate_max = 48000,3390 .nr_rates = 1,3391 .rate_table = (unsigned int[]) { 48000 }3392 }3393 },3394 {3395 QUIRK_DATA_AUDIOFORMAT(0) {3396 .formats = SNDRV_PCM_FMTBIT_S24_3LE,3397 .channels = 8, // inputs3398 .iface = 0,3399 .altsetting = 1,3400 .altset_idx = 1,3401 .endpoint = 0x82,3402 .ep_idx = 1,3403 .ep_attr = USB_ENDPOINT_XFER_ISOC|3404 USB_ENDPOINT_SYNC_ASYNC|3405 USB_ENDPOINT_USAGE_IMPLICIT_FB,3406 .rates = SNDRV_PCM_RATE_48000,3407 .rate_min = 48000,3408 .rate_max = 48000,3409 .nr_rates = 1,3410 .rate_table = (unsigned int[]) { 48000 }3411 }3412 },3413 QUIRK_COMPOSITE_END3414 }3415 }3416},3417{3418 /*3419 * Sennheiser GSP6703420 * Change order of interfaces loaded3421 */3422 USB_DEVICE(0x1395, 0x0300),3423 .bInterfaceClass = USB_CLASS_PER_INTERFACE,3424 QUIRK_DRIVER_INFO {3425 QUIRK_DATA_COMPOSITE {3426 // Communication3427 { QUIRK_DATA_STANDARD_AUDIO(3) },3428 // Recording3429 { QUIRK_DATA_STANDARD_AUDIO(4) },3430 // Main3431 { QUIRK_DATA_STANDARD_AUDIO(1) },3432 QUIRK_COMPOSITE_END3433 }3434 }3435},3436{3437 /*3438 * Fiero SC-01 (firmware v1.0.0 @ 48 kHz)3439 */3440 USB_DEVICE(0x2b53, 0x0023),3441 QUIRK_DRIVER_INFO {3442 .vendor_name = "Fiero",3443 .product_name = "SC-01",3444 QUIRK_DATA_COMPOSITE {3445 { QUIRK_DATA_STANDARD_AUDIO(0) },3446 /* Playback */3447 {3448 QUIRK_DATA_AUDIOFORMAT(1) {3449 .formats = SNDRV_PCM_FMTBIT_S32_LE,3450 .channels = 2,3451 .fmt_bits = 24,3452 .iface = 1,3453 .altsetting = 1,3454 .altset_idx = 1,3455 .endpoint = 0x01,3456 .ep_attr = USB_ENDPOINT_XFER_ISOC |3457 USB_ENDPOINT_SYNC_ASYNC,3458 .rates = SNDRV_PCM_RATE_48000,3459 .rate_min = 48000,3460 .rate_max = 48000,3461 .nr_rates = 1,3462 .rate_table = (unsigned int[]) { 48000 },3463 .clock = 0x293464 }3465 },3466 /* Capture */3467 {3468 QUIRK_DATA_AUDIOFORMAT(2) {3469 .formats = SNDRV_PCM_FMTBIT_S32_LE,3470 .channels = 2,3471 .fmt_bits = 24,3472 .iface = 2,3473 .altsetting = 1,3474 .altset_idx = 1,3475 .endpoint = 0x82,3476 .ep_attr = USB_ENDPOINT_XFER_ISOC |3477 USB_ENDPOINT_SYNC_ASYNC |3478 USB_ENDPOINT_USAGE_IMPLICIT_FB,3479 .rates = SNDRV_PCM_RATE_48000,3480 .rate_min = 48000,3481 .rate_max = 48000,3482 .nr_rates = 1,3483 .rate_table = (unsigned int[]) { 48000 },3484 .clock = 0x293485 }3486 },3487 QUIRK_COMPOSITE_END3488 }3489 }3490},3491{3492 /*3493 * Fiero SC-01 (firmware v1.0.0 @ 96 kHz)3494 */3495 USB_DEVICE(0x2b53, 0x0024),3496 QUIRK_DRIVER_INFO {3497 .vendor_name = "Fiero",3498 .product_name = "SC-01",3499 QUIRK_DATA_COMPOSITE {3500 { QUIRK_DATA_STANDARD_AUDIO(0) },3501 /* Playback */3502 {3503 QUIRK_DATA_AUDIOFORMAT(1) {3504 .formats = SNDRV_PCM_FMTBIT_S32_LE,3505 .channels = 2,3506 .fmt_bits = 24,3507 .iface = 1,3508 .altsetting = 1,3509 .altset_idx = 1,3510 .endpoint = 0x01,3511 .ep_attr = USB_ENDPOINT_XFER_ISOC |3512 USB_ENDPOINT_SYNC_ASYNC,3513 .rates = SNDRV_PCM_RATE_96000,3514 .rate_min = 96000,3515 .rate_max = 96000,3516 .nr_rates = 1,3517 .rate_table = (unsigned int[]) { 96000 },3518 .clock = 0x293519 }3520 },3521 /* Capture */3522 {3523 QUIRK_DATA_AUDIOFORMAT(2) {3524 .formats = SNDRV_PCM_FMTBIT_S32_LE,3525 .channels = 2,3526 .fmt_bits = 24,3527 .iface = 2,3528 .altsetting = 1,3529 .altset_idx = 1,3530 .endpoint = 0x82,3531 .ep_attr = USB_ENDPOINT_XFER_ISOC |3532 USB_ENDPOINT_SYNC_ASYNC |3533 USB_ENDPOINT_USAGE_IMPLICIT_FB,3534 .rates = SNDRV_PCM_RATE_96000,3535 .rate_min = 96000,3536 .rate_max = 96000,3537 .nr_rates = 1,3538 .rate_table = (unsigned int[]) { 96000 },3539 .clock = 0x293540 }3541 },3542 QUIRK_COMPOSITE_END3543 }3544 }3545},3546{3547 /*3548 * Fiero SC-01 (firmware v1.1.0)3549 */3550 USB_DEVICE(0x2b53, 0x0031),3551 QUIRK_DRIVER_INFO {3552 .vendor_name = "Fiero",3553 .product_name = "SC-01",3554 QUIRK_DATA_COMPOSITE {3555 { QUIRK_DATA_STANDARD_AUDIO(0) },3556 /* Playback */3557 {3558 QUIRK_DATA_AUDIOFORMAT(1) {3559 .formats = SNDRV_PCM_FMTBIT_S32_LE,3560 .channels = 2,3561 .fmt_bits = 24,3562 .iface = 1,3563 .altsetting = 1,3564 .altset_idx = 1,3565 .endpoint = 0x01,3566 .ep_attr = USB_ENDPOINT_XFER_ISOC |3567 USB_ENDPOINT_SYNC_ASYNC,3568 .rates = SNDRV_PCM_RATE_48000 |3569 SNDRV_PCM_RATE_96000,3570 .rate_min = 48000,3571 .rate_max = 96000,3572 .nr_rates = 2,3573 .rate_table = (unsigned int[]) { 48000, 96000 },3574 .clock = 0x293575 }3576 },3577 /* Capture */3578 {3579 QUIRK_DATA_AUDIOFORMAT(2) {3580 .formats = SNDRV_PCM_FMTBIT_S32_LE,3581 .channels = 2,3582 .fmt_bits = 24,3583 .iface = 2,3584 .altsetting = 1,3585 .altset_idx = 1,3586 .endpoint = 0x82,3587 .ep_attr = USB_ENDPOINT_XFER_ISOC |3588 USB_ENDPOINT_SYNC_ASYNC |3589 USB_ENDPOINT_USAGE_IMPLICIT_FB,3590 .rates = SNDRV_PCM_RATE_48000 |3591 SNDRV_PCM_RATE_96000,3592 .rate_min = 48000,3593 .rate_max = 96000,3594 .nr_rates = 2,3595 .rate_table = (unsigned int[]) { 48000, 96000 },3596 .clock = 0x293597 }3598 },3599 QUIRK_COMPOSITE_END3600 }3601 }3602},3603{3604 /* Advanced modes of the Mythware XA001AU.3605 * For the standard mode, Mythware XA001AU has ID ffad:a0013606 */3607 USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001),3608 QUIRK_DRIVER_INFO {3609 .vendor_name = "Mythware",3610 .product_name = "XA001AU",3611 QUIRK_DATA_COMPOSITE {3612 { QUIRK_DATA_IGNORE(0) },3613 { QUIRK_DATA_STANDARD_AUDIO(1) },3614 { QUIRK_DATA_STANDARD_AUDIO(2) },3615 QUIRK_COMPOSITE_END3616 }3617 }3618},3619{3620 /* Only claim interface 0 */3621 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |3622 USB_DEVICE_ID_MATCH_PRODUCT |3623 USB_DEVICE_ID_MATCH_INT_CLASS |3624 USB_DEVICE_ID_MATCH_INT_NUMBER,3625 .idVendor = 0x2a39,3626 .idProduct = 0x3f8c,3627 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,3628 .bInterfaceNumber = 0,3629 QUIRK_DRIVER_INFO {3630 QUIRK_DATA_COMPOSITE {3631 /*3632 * Three modes depending on sample rate band,3633 * with different channel counts for in/out3634 */3635 { QUIRK_DATA_STANDARD_MIXER(0) },3636 {3637 QUIRK_DATA_AUDIOFORMAT(0) {3638 .formats = SNDRV_PCM_FMTBIT_S32_LE,3639 .channels = 34, // outputs3640 .fmt_bits = 24,3641 .iface = 0,3642 .altsetting = 1,3643 .altset_idx = 1,3644 .endpoint = 0x02,3645 .ep_idx = 1,3646 .ep_attr = USB_ENDPOINT_XFER_ISOC |3647 USB_ENDPOINT_SYNC_ASYNC,3648 .rates = SNDRV_PCM_RATE_32000 |3649 SNDRV_PCM_RATE_44100 |3650 SNDRV_PCM_RATE_48000,3651 .rate_min = 32000,3652 .rate_max = 48000,3653 .nr_rates = 3,3654 .rate_table = (unsigned int[]) {3655 32000, 44100, 48000,3656 },3657 .sync_ep = 0x81,3658 .sync_iface = 0,3659 .sync_altsetting = 1,3660 .sync_ep_idx = 0,3661 .implicit_fb = 1,3662 },3663 },3664 {3665 QUIRK_DATA_AUDIOFORMAT(0) {3666 .formats = SNDRV_PCM_FMTBIT_S32_LE,3667 .channels = 18, // outputs3668 .fmt_bits = 24,3669 .iface = 0,3670 .altsetting = 1,3671 .altset_idx = 1,3672 .endpoint = 0x02,3673 .ep_idx = 1,3674 .ep_attr = USB_ENDPOINT_XFER_ISOC |3675 USB_ENDPOINT_SYNC_ASYNC,3676 .rates = SNDRV_PCM_RATE_64000 |3677 SNDRV_PCM_RATE_88200 |3678 SNDRV_PCM_RATE_96000,3679 .rate_min = 64000,3680 .rate_max = 96000,3681 .nr_rates = 3,3682 .rate_table = (unsigned int[]) {3683 64000, 88200, 96000,3684 },3685 .sync_ep = 0x81,3686 .sync_iface = 0,3687 .sync_altsetting = 1,3688 .sync_ep_idx = 0,3689 .implicit_fb = 1,3690 },3691 },3692 {3693 QUIRK_DATA_AUDIOFORMAT(0) {3694 .formats = SNDRV_PCM_FMTBIT_S32_LE,3695 .channels = 10, // outputs3696 .fmt_bits = 24,3697 .iface = 0,3698 .altsetting = 1,3699 .altset_idx = 1,3700 .endpoint = 0x02,3701 .ep_idx = 1,3702 .ep_attr = USB_ENDPOINT_XFER_ISOC |3703 USB_ENDPOINT_SYNC_ASYNC,3704 .rates = SNDRV_PCM_RATE_KNOT |3705 SNDRV_PCM_RATE_176400 |3706 SNDRV_PCM_RATE_192000,3707 .rate_min = 128000,3708 .rate_max = 192000,3709 .nr_rates = 3,3710 .rate_table = (unsigned int[]) {3711 128000, 176400, 192000,3712 },3713 .sync_ep = 0x81,3714 .sync_iface = 0,3715 .sync_altsetting = 1,3716 .sync_ep_idx = 0,3717 .implicit_fb = 1,3718 },3719 },3720 {3721 QUIRK_DATA_AUDIOFORMAT(0) {3722 .formats = SNDRV_PCM_FMTBIT_S32_LE,3723 .channels = 32, // inputs3724 .fmt_bits = 24,3725 .iface = 0,3726 .altsetting = 1,3727 .altset_idx = 1,3728 .endpoint = 0x81,3729 .ep_attr = USB_ENDPOINT_XFER_ISOC |3730 USB_ENDPOINT_SYNC_ASYNC,3731 .rates = SNDRV_PCM_RATE_32000 |3732 SNDRV_PCM_RATE_44100 |3733 SNDRV_PCM_RATE_48000,3734 .rate_min = 32000,3735 .rate_max = 48000,3736 .nr_rates = 3,3737 .rate_table = (unsigned int[]) {3738 32000, 44100, 48000,3739 }3740 }3741 },3742 {3743 QUIRK_DATA_AUDIOFORMAT(0) {3744 .formats = SNDRV_PCM_FMTBIT_S32_LE,3745 .channels = 16, // inputs3746 .fmt_bits = 24,3747 .iface = 0,3748 .altsetting = 1,3749 .altset_idx = 1,3750 .endpoint = 0x81,3751 .ep_attr = USB_ENDPOINT_XFER_ISOC |3752 USB_ENDPOINT_SYNC_ASYNC,3753 .rates = SNDRV_PCM_RATE_64000 |3754 SNDRV_PCM_RATE_88200 |3755 SNDRV_PCM_RATE_96000,3756 .rate_min = 64000,3757 .rate_max = 96000,3758 .nr_rates = 3,3759 .rate_table = (unsigned int[]) {3760 64000, 88200, 96000,3761 }3762 }3763 },3764 {3765 QUIRK_DATA_AUDIOFORMAT(0) {3766 .formats = SNDRV_PCM_FMTBIT_S32_LE,3767 .channels = 8, // inputs3768 .fmt_bits = 24,3769 .iface = 0,3770 .altsetting = 1,3771 .altset_idx = 1,3772 .endpoint = 0x81,3773 .ep_attr = USB_ENDPOINT_XFER_ISOC |3774 USB_ENDPOINT_SYNC_ASYNC,3775 .rates = SNDRV_PCM_RATE_KNOT |3776 SNDRV_PCM_RATE_176400 |3777 SNDRV_PCM_RATE_192000,3778 .rate_min = 128000,3779 .rate_max = 192000,3780 .nr_rates = 3,3781 .rate_table = (unsigned int[]) {3782 128000, 176400, 192000,3783 }3784 }3785 },3786 QUIRK_COMPOSITE_END3787 }3788 }3789},3790#undef USB_DEVICE_VENDOR_SPEC3791#undef USB_AUDIO_DEVICE3792