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