11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2e5779998SDaniel Mack /* 3e5779998SDaniel Mack * ALSA USB Audio Driver 4e5779998SDaniel Mack * 5e5779998SDaniel Mack * Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>, 6e5779998SDaniel Mack * Clemens Ladisch <clemens@ladisch.de> 7e5779998SDaniel Mack */ 8e5779998SDaniel Mack 9e5779998SDaniel Mack /* 10e5779998SDaniel Mack * The contents of this file are part of the driver's id_table. 11e5779998SDaniel Mack * 12e5779998SDaniel Mack * In a perfect world, this file would be empty. 13e5779998SDaniel Mack */ 14e5779998SDaniel Mack 15e5779998SDaniel Mack /* 16e5779998SDaniel Mack * Use this for devices where other interfaces are standard compliant, 17e5779998SDaniel Mack * to prevent the quirk being applied to those interfaces. (To work with 18e5779998SDaniel Mack * hotplugging, bDeviceClass must be set to USB_CLASS_PER_INTERFACE.) 19e5779998SDaniel Mack */ 20e5779998SDaniel Mack #define USB_DEVICE_VENDOR_SPEC(vend, prod) \ 21e5779998SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_VENDOR | \ 22e5779998SDaniel Mack USB_DEVICE_ID_MATCH_PRODUCT | \ 23e5779998SDaniel Mack USB_DEVICE_ID_MATCH_INT_CLASS, \ 24e5779998SDaniel Mack .idVendor = vend, \ 25e5779998SDaniel Mack .idProduct = prod, \ 26e5779998SDaniel Mack .bInterfaceClass = USB_CLASS_VENDOR_SPEC 27e5779998SDaniel Mack 28fa10635fSTakashi Iwai /* A standard entry matching with vid/pid and the audio class/subclass */ 29fa10635fSTakashi Iwai #define USB_AUDIO_DEVICE(vend, prod) \ 30fa10635fSTakashi Iwai .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ 31fa10635fSTakashi Iwai USB_DEVICE_ID_MATCH_INT_CLASS | \ 32fa10635fSTakashi Iwai USB_DEVICE_ID_MATCH_INT_SUBCLASS, \ 33fa10635fSTakashi Iwai .idVendor = vend, \ 34fa10635fSTakashi Iwai .idProduct = prod, \ 35fa10635fSTakashi Iwai .bInterfaceClass = USB_CLASS_AUDIO, \ 36fa10635fSTakashi Iwai .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL 37fa10635fSTakashi Iwai 380bf9779cSTakashi Iwai /* Quirk .driver_info, followed by the definition of the quirk entry; 390bf9779cSTakashi Iwai * put like QUIRK_DRIVER_INFO { ... } in each entry of the quirk table 400bf9779cSTakashi Iwai */ 410bf9779cSTakashi Iwai #define QUIRK_DRIVER_INFO \ 420bf9779cSTakashi Iwai .driver_info = (unsigned long)&(const struct snd_usb_audio_quirk) 430bf9779cSTakashi Iwai 440bf9779cSTakashi Iwai /* 450bf9779cSTakashi Iwai * Macros for quirk data entries 460bf9779cSTakashi Iwai */ 470bf9779cSTakashi Iwai 480bf9779cSTakashi Iwai /* Quirk data entry for ignoring the interface */ 490bf9779cSTakashi Iwai #define QUIRK_DATA_IGNORE(_ifno) \ 500bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_IGNORE_INTERFACE 510bf9779cSTakashi Iwai /* Quirk data entry for a standard audio interface */ 520bf9779cSTakashi Iwai #define QUIRK_DATA_STANDARD_AUDIO(_ifno) \ 530bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_INTERFACE 540bf9779cSTakashi Iwai /* Quirk data entry for a standard MIDI interface */ 550bf9779cSTakashi Iwai #define QUIRK_DATA_STANDARD_MIDI(_ifno) \ 560bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_MIDI_STANDARD_INTERFACE 570bf9779cSTakashi Iwai /* Quirk data entry for a standard mixer interface */ 580bf9779cSTakashi Iwai #define QUIRK_DATA_STANDARD_MIXER(_ifno) \ 590bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_AUDIO_STANDARD_MIXER 600bf9779cSTakashi Iwai 610bf9779cSTakashi Iwai /* Quirk data entry for Yamaha MIDI */ 620bf9779cSTakashi Iwai #define QUIRK_DATA_MIDI_YAMAHA(_ifno) \ 630bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_MIDI_YAMAHA 640bf9779cSTakashi Iwai /* Quirk data entry for Edirol UAxx */ 650bf9779cSTakashi Iwai #define QUIRK_DATA_EDIROL_UAXX(_ifno) \ 660bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_AUDIO_EDIROL_UAXX 670bf9779cSTakashi Iwai /* Quirk data entry for raw bytes interface */ 680bf9779cSTakashi Iwai #define QUIRK_DATA_RAW_BYTES(_ifno) \ 690bf9779cSTakashi Iwai .ifnum = (_ifno), .type = QUIRK_MIDI_RAW_BYTES 700bf9779cSTakashi Iwai 710bf9779cSTakashi Iwai /* Quirk composite array terminator */ 720bf9779cSTakashi Iwai #define QUIRK_COMPOSITE_END { .ifnum = -1 } 730bf9779cSTakashi Iwai 740bf9779cSTakashi Iwai /* Quirk data entry for composite quirks; 750bf9779cSTakashi Iwai * followed by the quirk array that is terminated with QUIRK_COMPOSITE_END 760bf9779cSTakashi Iwai * e.g. QUIRK_DATA_COMPOSITE { { quirk1 }, { quirk2 },..., QUIRK_COMPOSITE_END } 770bf9779cSTakashi Iwai */ 780bf9779cSTakashi Iwai #define QUIRK_DATA_COMPOSITE \ 790bf9779cSTakashi Iwai .ifnum = QUIRK_ANY_INTERFACE, \ 800bf9779cSTakashi Iwai .type = QUIRK_COMPOSITE, \ 810bf9779cSTakashi Iwai .data = &(const struct snd_usb_audio_quirk[]) 820bf9779cSTakashi Iwai 830bf9779cSTakashi Iwai /* Quirk data entry for a fixed audio endpoint; 840bf9779cSTakashi Iwai * followed by audioformat definition 850bf9779cSTakashi Iwai * e.g. QUIRK_DATA_AUDIOFORMAT(n) { .formats = xxx, ... } 860bf9779cSTakashi Iwai */ 870bf9779cSTakashi Iwai #define QUIRK_DATA_AUDIOFORMAT(_ifno) \ 880bf9779cSTakashi Iwai .ifnum = (_ifno), \ 890bf9779cSTakashi Iwai .type = QUIRK_AUDIO_FIXED_ENDPOINT, \ 900bf9779cSTakashi Iwai .data = &(const struct audioformat) 910bf9779cSTakashi Iwai 920bf9779cSTakashi Iwai /* Quirk data entry for a fixed MIDI endpoint; 930bf9779cSTakashi Iwai * followed by snd_usb_midi_endpoint_info definition 940bf9779cSTakashi Iwai * e.g. QUIRK_DATA_MIDI_FIXED_ENDPOINT(n) { .out_cables = x, .in_cables = y } 950bf9779cSTakashi Iwai */ 960bf9779cSTakashi Iwai #define QUIRK_DATA_MIDI_FIXED_ENDPOINT(_ifno) \ 970bf9779cSTakashi Iwai .ifnum = (_ifno), \ 980bf9779cSTakashi Iwai .type = QUIRK_MIDI_FIXED_ENDPOINT, \ 990bf9779cSTakashi Iwai .data = &(const struct snd_usb_midi_endpoint_info) 1000bf9779cSTakashi Iwai /* Quirk data entry for a MIDIMAN MIDI endpoint */ 1010bf9779cSTakashi Iwai #define QUIRK_DATA_MIDI_MIDIMAN(_ifno) \ 1020bf9779cSTakashi Iwai .ifnum = (_ifno), \ 1030bf9779cSTakashi Iwai .type = QUIRK_MIDI_MIDIMAN, \ 1040bf9779cSTakashi Iwai .data = &(const struct snd_usb_midi_endpoint_info) 1050bf9779cSTakashi Iwai /* Quirk data entry for a EMAGIC MIDI endpoint */ 1060bf9779cSTakashi Iwai #define QUIRK_DATA_MIDI_EMAGIC(_ifno) \ 1070bf9779cSTakashi Iwai .ifnum = (_ifno), \ 1080bf9779cSTakashi Iwai .type = QUIRK_MIDI_EMAGIC, \ 1090bf9779cSTakashi Iwai .data = &(const struct snd_usb_midi_endpoint_info) 1100bf9779cSTakashi Iwai 1110bf9779cSTakashi Iwai /* 1120bf9779cSTakashi Iwai * Here we go... the quirk table definition begins: 1130bf9779cSTakashi Iwai */ 1140bf9779cSTakashi Iwai 1151ef0e0a0SKristian Amlie /* FTDI devices */ 1161ef0e0a0SKristian Amlie { 1171ef0e0a0SKristian Amlie USB_DEVICE(0x0403, 0xb8d8), 118fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1191ef0e0a0SKristian Amlie /* .vendor_name = "STARR LABS", */ 1201ef0e0a0SKristian Amlie /* .product_name = "Starr Labs MIDI USB device", */ 1211ef0e0a0SKristian Amlie .ifnum = 0, 1221ef0e0a0SKristian Amlie .type = QUIRK_MIDI_FTDI 1231ef0e0a0SKristian Amlie } 1241ef0e0a0SKristian Amlie }, 1251ef0e0a0SKristian Amlie 1268f7f3ab1SAlexander Schremmer { 1278f7f3ab1SAlexander Schremmer /* Creative BT-D1 */ 1288f7f3ab1SAlexander Schremmer USB_DEVICE(0x041e, 0x0005), 129fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 130fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 1318f7f3ab1SAlexander Schremmer .formats = SNDRV_PCM_FMTBIT_S16_LE, 1328f7f3ab1SAlexander Schremmer .channels = 2, 1338f7f3ab1SAlexander Schremmer .iface = 1, 1348f7f3ab1SAlexander Schremmer .altsetting = 1, 1358f7f3ab1SAlexander Schremmer .altset_idx = 1, 1368f7f3ab1SAlexander Schremmer .endpoint = 0x03, 1378f7f3ab1SAlexander Schremmer .ep_attr = USB_ENDPOINT_XFER_ISOC, 1388f7f3ab1SAlexander Schremmer .attributes = 0, 1398f7f3ab1SAlexander Schremmer .rates = SNDRV_PCM_RATE_CONTINUOUS, 1408f7f3ab1SAlexander Schremmer .rate_min = 48000, 1418f7f3ab1SAlexander Schremmer .rate_max = 48000, 1428f7f3ab1SAlexander Schremmer } 1438f7f3ab1SAlexander Schremmer } 1448f7f3ab1SAlexander Schremmer }, 1458f7f3ab1SAlexander Schremmer 146e5779998SDaniel Mack /* E-Mu 0202 USB */ 14714b51ccdSTakashi Iwai { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) }, 148e5779998SDaniel Mack /* E-Mu 0404 USB */ 14914b51ccdSTakashi Iwai { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) }, 150e5779998SDaniel Mack /* E-Mu Tracker Pre */ 15114b51ccdSTakashi Iwai { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) }, 1521cdfa9f3SJoseph Teichman /* E-Mu 0204 USB */ 15314b51ccdSTakashi Iwai { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) }, 154696b66acSwangdicheng /* Ktmicro Usb_audio device */ 155696b66acSwangdicheng { USB_DEVICE_VENDOR_SPEC(0x31b2, 0x0011) }, 156e5779998SDaniel Mack 157e5779998SDaniel Mack /* 15848827e1dSJonas Hahnfeld * Creative Technology, Ltd Live! Cam Sync HD [VF0770] 15948827e1dSJonas Hahnfeld * The device advertises 8 formats, but only a rate of 48kHz is honored by the 16048827e1dSJonas Hahnfeld * hardware and 24 bits give chopped audio, so only report the one working 16148827e1dSJonas Hahnfeld * combination. 16248827e1dSJonas Hahnfeld */ 16348827e1dSJonas Hahnfeld { 1644ee02e20SJonas Hahnfeld USB_AUDIO_DEVICE(0x041e, 0x4095), 165fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 166fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 167fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(2) }, 16848827e1dSJonas Hahnfeld { 169fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 17048827e1dSJonas Hahnfeld .formats = SNDRV_PCM_FMTBIT_S16_LE, 17148827e1dSJonas Hahnfeld .channels = 2, 17248827e1dSJonas Hahnfeld .fmt_bits = 16, 17348827e1dSJonas Hahnfeld .iface = 3, 17448827e1dSJonas Hahnfeld .altsetting = 4, 17548827e1dSJonas Hahnfeld .altset_idx = 4, 17648827e1dSJonas Hahnfeld .endpoint = 0x82, 17748827e1dSJonas Hahnfeld .ep_attr = 0x05, 17848827e1dSJonas Hahnfeld .rates = SNDRV_PCM_RATE_48000, 17948827e1dSJonas Hahnfeld .rate_min = 48000, 18048827e1dSJonas Hahnfeld .rate_max = 48000, 18148827e1dSJonas Hahnfeld .nr_rates = 1, 18248827e1dSJonas Hahnfeld .rate_table = (unsigned int[]) { 48000 }, 18348827e1dSJonas Hahnfeld }, 18448827e1dSJonas Hahnfeld }, 185fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 18648827e1dSJonas Hahnfeld }, 18748827e1dSJonas Hahnfeld }, 18848827e1dSJonas Hahnfeld }, 18948827e1dSJonas Hahnfeld 19048827e1dSJonas Hahnfeld /* 191df68f106SEldad Zack * HP Wireless Audio 192df68f106SEldad Zack * When not ignored, causes instability issues for some users, forcing them to 19352bedfbdSTakashi Iwai * skip the entire module. 194df68f106SEldad Zack */ 195df68f106SEldad Zack { 196df68f106SEldad Zack USB_DEVICE(0x0424, 0xb832), 197fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 198df68f106SEldad Zack .vendor_name = "Standard Microsystems Corp.", 199df68f106SEldad Zack .product_name = "HP Wireless Audio", 200fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 201df68f106SEldad Zack /* Mixer */ 202fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 203df68f106SEldad Zack /* Playback */ 204fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 205df68f106SEldad Zack /* Capture */ 206fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(2) }, 207df68f106SEldad Zack /* HID Device, .ifnum = 3 */ 208fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 209df68f106SEldad Zack } 210df68f106SEldad Zack } 211df68f106SEldad Zack }, 212df68f106SEldad Zack 213df68f106SEldad Zack /* 214e5779998SDaniel Mack * Logitech QuickCam: bDeviceClass is vendor-specific, so generic interface 215e5779998SDaniel Mack * class matches do not take effect without an explicit ID match. 216e5779998SDaniel Mack */ 217fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x0850) }, 218fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x08ae) }, 219fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x08c6) }, 220fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x08f0) }, 221fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x08f5) }, 222fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x08f6) }, 223fa10635fSTakashi Iwai { USB_AUDIO_DEVICE(0x046d, 0x0990) }, 224e5779998SDaniel Mack 225e5779998SDaniel Mack /* 226e5779998SDaniel Mack * Yamaha devices 227e5779998SDaniel Mack */ 228e5779998SDaniel Mack 229e5779998SDaniel Mack #define YAMAHA_DEVICE(id, name) { \ 230e5779998SDaniel Mack USB_DEVICE(0x0499, id), \ 231fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { \ 232e5779998SDaniel Mack .vendor_name = "Yamaha", \ 233e5779998SDaniel Mack .product_name = name, \ 234fb2ed616STakashi Iwai QUIRK_DATA_MIDI_YAMAHA(QUIRK_ANY_INTERFACE) \ 235e5779998SDaniel Mack } \ 236e5779998SDaniel Mack } 237e5779998SDaniel Mack #define YAMAHA_INTERFACE(id, intf, name) { \ 238e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0499, id), \ 239fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { \ 240e5779998SDaniel Mack .vendor_name = "Yamaha", \ 241e5779998SDaniel Mack .product_name = name, \ 242fb2ed616STakashi Iwai QUIRK_DATA_MIDI_YAMAHA(intf) \ 243e5779998SDaniel Mack } \ 244e5779998SDaniel Mack } 245e5779998SDaniel Mack YAMAHA_DEVICE(0x1000, "UX256"), 246e5779998SDaniel Mack YAMAHA_DEVICE(0x1001, "MU1000"), 247e5779998SDaniel Mack YAMAHA_DEVICE(0x1002, "MU2000"), 248e5779998SDaniel Mack YAMAHA_DEVICE(0x1003, "MU500"), 249e5779998SDaniel Mack YAMAHA_INTERFACE(0x1004, 3, "UW500"), 250e5779998SDaniel Mack YAMAHA_DEVICE(0x1005, "MOTIF6"), 251e5779998SDaniel Mack YAMAHA_DEVICE(0x1006, "MOTIF7"), 252e5779998SDaniel Mack YAMAHA_DEVICE(0x1007, "MOTIF8"), 253e5779998SDaniel Mack YAMAHA_DEVICE(0x1008, "UX96"), 254e5779998SDaniel Mack YAMAHA_DEVICE(0x1009, "UX16"), 255e5779998SDaniel Mack YAMAHA_INTERFACE(0x100a, 3, "EOS BX"), 256e5779998SDaniel Mack YAMAHA_DEVICE(0x100c, "UC-MX"), 257e5779998SDaniel Mack YAMAHA_DEVICE(0x100d, "UC-KX"), 258e5779998SDaniel Mack YAMAHA_DEVICE(0x100e, "S08"), 259e5779998SDaniel Mack YAMAHA_DEVICE(0x100f, "CLP-150"), 260e5779998SDaniel Mack YAMAHA_DEVICE(0x1010, "CLP-170"), 261e5779998SDaniel Mack YAMAHA_DEVICE(0x1011, "P-250"), 262e5779998SDaniel Mack YAMAHA_DEVICE(0x1012, "TYROS"), 263e5779998SDaniel Mack YAMAHA_DEVICE(0x1013, "PF-500"), 264e5779998SDaniel Mack YAMAHA_DEVICE(0x1014, "S90"), 265e5779998SDaniel Mack YAMAHA_DEVICE(0x1015, "MOTIF-R"), 266e5779998SDaniel Mack YAMAHA_DEVICE(0x1016, "MDP-5"), 267e5779998SDaniel Mack YAMAHA_DEVICE(0x1017, "CVP-204"), 268e5779998SDaniel Mack YAMAHA_DEVICE(0x1018, "CVP-206"), 269e5779998SDaniel Mack YAMAHA_DEVICE(0x1019, "CVP-208"), 270e5779998SDaniel Mack YAMAHA_DEVICE(0x101a, "CVP-210"), 271e5779998SDaniel Mack YAMAHA_DEVICE(0x101b, "PSR-1100"), 272e5779998SDaniel Mack YAMAHA_DEVICE(0x101c, "PSR-2100"), 273e5779998SDaniel Mack YAMAHA_DEVICE(0x101d, "CLP-175"), 274e5779998SDaniel Mack YAMAHA_DEVICE(0x101e, "PSR-K1"), 275e5779998SDaniel Mack YAMAHA_DEVICE(0x101f, "EZ-J24"), 276e5779998SDaniel Mack YAMAHA_DEVICE(0x1020, "EZ-250i"), 277e5779998SDaniel Mack YAMAHA_DEVICE(0x1021, "MOTIF ES 6"), 278e5779998SDaniel Mack YAMAHA_DEVICE(0x1022, "MOTIF ES 7"), 279e5779998SDaniel Mack YAMAHA_DEVICE(0x1023, "MOTIF ES 8"), 280e5779998SDaniel Mack YAMAHA_DEVICE(0x1024, "CVP-301"), 281e5779998SDaniel Mack YAMAHA_DEVICE(0x1025, "CVP-303"), 282e5779998SDaniel Mack YAMAHA_DEVICE(0x1026, "CVP-305"), 283e5779998SDaniel Mack YAMAHA_DEVICE(0x1027, "CVP-307"), 284e5779998SDaniel Mack YAMAHA_DEVICE(0x1028, "CVP-309"), 285e5779998SDaniel Mack YAMAHA_DEVICE(0x1029, "CVP-309GP"), 286e5779998SDaniel Mack YAMAHA_DEVICE(0x102a, "PSR-1500"), 287e5779998SDaniel Mack YAMAHA_DEVICE(0x102b, "PSR-3000"), 288e5779998SDaniel Mack YAMAHA_DEVICE(0x102e, "ELS-01/01C"), 289e5779998SDaniel Mack YAMAHA_DEVICE(0x1030, "PSR-295/293"), 290e5779998SDaniel Mack YAMAHA_DEVICE(0x1031, "DGX-205/203"), 291e5779998SDaniel Mack YAMAHA_DEVICE(0x1032, "DGX-305"), 292e5779998SDaniel Mack YAMAHA_DEVICE(0x1033, "DGX-505"), 293e5779998SDaniel Mack YAMAHA_DEVICE(0x1034, NULL), 294e5779998SDaniel Mack YAMAHA_DEVICE(0x1035, NULL), 295e5779998SDaniel Mack YAMAHA_DEVICE(0x1036, NULL), 296e5779998SDaniel Mack YAMAHA_DEVICE(0x1037, NULL), 297e5779998SDaniel Mack YAMAHA_DEVICE(0x1038, NULL), 298e5779998SDaniel Mack YAMAHA_DEVICE(0x1039, NULL), 299e5779998SDaniel Mack YAMAHA_DEVICE(0x103a, NULL), 300e5779998SDaniel Mack YAMAHA_DEVICE(0x103b, NULL), 301e5779998SDaniel Mack YAMAHA_DEVICE(0x103c, NULL), 302e5779998SDaniel Mack YAMAHA_DEVICE(0x103d, NULL), 303e5779998SDaniel Mack YAMAHA_DEVICE(0x103e, NULL), 304e5779998SDaniel Mack YAMAHA_DEVICE(0x103f, NULL), 305e5779998SDaniel Mack YAMAHA_DEVICE(0x1040, NULL), 306e5779998SDaniel Mack YAMAHA_DEVICE(0x1041, NULL), 307e5779998SDaniel Mack YAMAHA_DEVICE(0x1042, NULL), 308e5779998SDaniel Mack YAMAHA_DEVICE(0x1043, NULL), 309e5779998SDaniel Mack YAMAHA_DEVICE(0x1044, NULL), 310e5779998SDaniel Mack YAMAHA_DEVICE(0x1045, NULL), 311e5779998SDaniel Mack YAMAHA_INTERFACE(0x104e, 0, NULL), 312e5779998SDaniel Mack YAMAHA_DEVICE(0x104f, NULL), 313e5779998SDaniel Mack YAMAHA_DEVICE(0x1050, NULL), 314e5779998SDaniel Mack YAMAHA_DEVICE(0x1051, NULL), 315e5779998SDaniel Mack YAMAHA_DEVICE(0x1052, NULL), 316422fdc31SClemens Ladisch YAMAHA_INTERFACE(0x1053, 0, NULL), 317422fdc31SClemens Ladisch YAMAHA_INTERFACE(0x1054, 0, NULL), 318422fdc31SClemens Ladisch YAMAHA_DEVICE(0x1055, NULL), 319422fdc31SClemens Ladisch YAMAHA_DEVICE(0x1056, NULL), 320422fdc31SClemens Ladisch YAMAHA_DEVICE(0x1057, NULL), 321422fdc31SClemens Ladisch YAMAHA_DEVICE(0x1058, NULL), 322422fdc31SClemens Ladisch YAMAHA_DEVICE(0x1059, NULL), 323422fdc31SClemens Ladisch YAMAHA_DEVICE(0x105a, NULL), 324422fdc31SClemens Ladisch YAMAHA_DEVICE(0x105b, NULL), 325422fdc31SClemens Ladisch YAMAHA_DEVICE(0x105c, NULL), 326422fdc31SClemens Ladisch YAMAHA_DEVICE(0x105d, NULL), 3278c3f5d8aSClemens Ladisch { 3288c3f5d8aSClemens Ladisch USB_DEVICE(0x0499, 0x1503), 329fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3308c3f5d8aSClemens Ladisch /* .vendor_name = "Yamaha", */ 3318c3f5d8aSClemens Ladisch /* .product_name = "MOX6/MOX8", */ 332fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 333fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 334fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 335fb2ed616STakashi Iwai { QUIRK_DATA_MIDI_YAMAHA(3) }, 336fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3378c3f5d8aSClemens Ladisch } 3388c3f5d8aSClemens Ladisch } 3398c3f5d8aSClemens Ladisch }, 340ae3f0c26STrulan Martin { 341ae3f0c26STrulan Martin USB_DEVICE(0x0499, 0x1507), 342fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 343ae3f0c26STrulan Martin /* .vendor_name = "Yamaha", */ 344ae3f0c26STrulan Martin /* .product_name = "THR10", */ 345fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 346fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 347fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 348fb2ed616STakashi Iwai { QUIRK_DATA_MIDI_YAMAHA(3) }, 349fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 350ae3f0c26STrulan Martin } 351ae3f0c26STrulan Martin } 352ae3f0c26STrulan Martin }, 3531b15362cSTrulan Martin { 354f0b127fbSVlad Catoi USB_DEVICE(0x0499, 0x1509), 355fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 356f0b127fbSVlad Catoi /* .vendor_name = "Yamaha", */ 357f0b127fbSVlad Catoi /* .product_name = "Steinberg UR22", */ 358fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 359fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 360fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 361fb2ed616STakashi Iwai { QUIRK_DATA_MIDI_YAMAHA(3) }, 362fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(4) }, 363fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 364f0b127fbSVlad Catoi } 365f0b127fbSVlad Catoi } 366f0b127fbSVlad Catoi }, 367f0b127fbSVlad Catoi { 3681b15362cSTrulan Martin USB_DEVICE(0x0499, 0x150a), 369fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3701b15362cSTrulan Martin /* .vendor_name = "Yamaha", */ 3711b15362cSTrulan Martin /* .product_name = "THR5A", */ 372fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 373fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 374fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 375fb2ed616STakashi Iwai { QUIRK_DATA_MIDI_YAMAHA(3) }, 376fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3771b15362cSTrulan Martin } 3781b15362cSTrulan Martin } 3791b15362cSTrulan Martin }, 38003e02214STrulan Martin { 38103e02214STrulan Martin USB_DEVICE(0x0499, 0x150c), 382fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 38303e02214STrulan Martin /* .vendor_name = "Yamaha", */ 38403e02214STrulan Martin /* .product_name = "THR10C", */ 385fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 386fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 387fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 388fb2ed616STakashi Iwai { QUIRK_DATA_MIDI_YAMAHA(3) }, 389fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 39003e02214STrulan Martin } 39103e02214STrulan Martin } 39203e02214STrulan Martin }, 393*344fb3c5SEryk Zagorski { 394*344fb3c5SEryk Zagorski USB_DEVICE(0x0499, 0x1718), 395*344fb3c5SEryk Zagorski QUIRK_DRIVER_INFO { 396*344fb3c5SEryk Zagorski /* .vendor_name = "Yamaha", */ 397*344fb3c5SEryk Zagorski /* .product_name = "P-125", */ 398*344fb3c5SEryk Zagorski QUIRK_DATA_COMPOSITE { 399*344fb3c5SEryk Zagorski { QUIRK_DATA_STANDARD_AUDIO(1) }, 400*344fb3c5SEryk Zagorski { QUIRK_DATA_STANDARD_AUDIO(2) }, 401*344fb3c5SEryk Zagorski { QUIRK_DATA_MIDI_YAMAHA(3) }, 402*344fb3c5SEryk Zagorski QUIRK_COMPOSITE_END 403*344fb3c5SEryk Zagorski } 404*344fb3c5SEryk Zagorski } 405*344fb3c5SEryk Zagorski }, 406e5779998SDaniel Mack YAMAHA_DEVICE(0x2000, "DGP-7"), 407e5779998SDaniel Mack YAMAHA_DEVICE(0x2001, "DGP-5"), 408e5779998SDaniel Mack YAMAHA_DEVICE(0x2002, NULL), 409422fdc31SClemens Ladisch YAMAHA_DEVICE(0x2003, NULL), 410e5779998SDaniel Mack YAMAHA_DEVICE(0x5000, "CS1D"), 411e5779998SDaniel Mack YAMAHA_DEVICE(0x5001, "DSP1D"), 412e5779998SDaniel Mack YAMAHA_DEVICE(0x5002, "DME32"), 413e5779998SDaniel Mack YAMAHA_DEVICE(0x5003, "DM2000"), 414e5779998SDaniel Mack YAMAHA_DEVICE(0x5004, "02R96"), 415e5779998SDaniel Mack YAMAHA_DEVICE(0x5005, "ACU16-C"), 416e5779998SDaniel Mack YAMAHA_DEVICE(0x5006, "NHB32-C"), 417e5779998SDaniel Mack YAMAHA_DEVICE(0x5007, "DM1000"), 418e5779998SDaniel Mack YAMAHA_DEVICE(0x5008, "01V96"), 419e5779998SDaniel Mack YAMAHA_DEVICE(0x5009, "SPX2000"), 420e5779998SDaniel Mack YAMAHA_DEVICE(0x500a, "PM5D"), 421e5779998SDaniel Mack YAMAHA_DEVICE(0x500b, "DME64N"), 422e5779998SDaniel Mack YAMAHA_DEVICE(0x500c, "DME24N"), 423e5779998SDaniel Mack YAMAHA_DEVICE(0x500d, NULL), 424e5779998SDaniel Mack YAMAHA_DEVICE(0x500e, NULL), 425e5779998SDaniel Mack YAMAHA_DEVICE(0x500f, NULL), 426e5779998SDaniel Mack YAMAHA_DEVICE(0x7000, "DTX"), 427e5779998SDaniel Mack YAMAHA_DEVICE(0x7010, "UB99"), 428e5779998SDaniel Mack #undef YAMAHA_DEVICE 429e5779998SDaniel Mack #undef YAMAHA_INTERFACE 430aafe77ccSClemens Ladisch /* this catches most recent vendor-specific Yamaha devices */ 431aafe77ccSClemens Ladisch { 432aafe77ccSClemens Ladisch .match_flags = USB_DEVICE_ID_MATCH_VENDOR | 433aafe77ccSClemens Ladisch USB_DEVICE_ID_MATCH_INT_CLASS, 434aafe77ccSClemens Ladisch .idVendor = 0x0499, 435aafe77ccSClemens Ladisch .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 436fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 437aafe77ccSClemens Ladisch .ifnum = QUIRK_ANY_INTERFACE, 438aafe77ccSClemens Ladisch .type = QUIRK_AUTODETECT 439aafe77ccSClemens Ladisch } 440aafe77ccSClemens Ladisch }, 441e5779998SDaniel Mack 442e5779998SDaniel Mack /* 443e5779998SDaniel Mack * Roland/RolandED/Edirol/BOSS devices 444e5779998SDaniel Mack */ 445e5779998SDaniel Mack { 446e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0000), 447fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 448e5779998SDaniel Mack .vendor_name = "Roland", 449e5779998SDaniel Mack .product_name = "UA-100", 450fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 451e5779998SDaniel Mack { 452fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 453015eb0b0SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S16_LE, 454e5779998SDaniel Mack .channels = 4, 455e5779998SDaniel Mack .iface = 0, 456e5779998SDaniel Mack .altsetting = 1, 457e5779998SDaniel Mack .altset_idx = 1, 458e5779998SDaniel Mack .attributes = 0, 459e5779998SDaniel Mack .endpoint = 0x01, 460e5779998SDaniel Mack .ep_attr = 0x09, 461e5779998SDaniel Mack .rates = SNDRV_PCM_RATE_CONTINUOUS, 462e5779998SDaniel Mack .rate_min = 44100, 463e5779998SDaniel Mack .rate_max = 44100, 464e5779998SDaniel Mack } 465e5779998SDaniel Mack }, 466e5779998SDaniel Mack { 467fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 468015eb0b0SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S16_LE, 469e5779998SDaniel Mack .channels = 2, 470e5779998SDaniel Mack .iface = 1, 471e5779998SDaniel Mack .altsetting = 1, 472e5779998SDaniel Mack .altset_idx = 1, 473e5779998SDaniel Mack .attributes = UAC_EP_CS_ATTR_FILL_MAX, 474e5779998SDaniel Mack .endpoint = 0x81, 475e5779998SDaniel Mack .ep_attr = 0x05, 476e5779998SDaniel Mack .rates = SNDRV_PCM_RATE_CONTINUOUS, 477e5779998SDaniel Mack .rate_min = 44100, 478e5779998SDaniel Mack .rate_max = 44100, 479e5779998SDaniel Mack } 480e5779998SDaniel Mack }, 481e5779998SDaniel Mack { 482fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 483e5779998SDaniel Mack .out_cables = 0x0007, 484e5779998SDaniel Mack .in_cables = 0x0007 485e5779998SDaniel Mack } 486e5779998SDaniel Mack }, 487fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 488e5779998SDaniel Mack } 489e5779998SDaniel Mack } 490e5779998SDaniel Mack }, 491e5779998SDaniel Mack { 492e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0002), 493fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 494e5779998SDaniel Mack .vendor_name = "EDIROL", 495e5779998SDaniel Mack .product_name = "UM-4", 496fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 497fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 498fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 499e5779998SDaniel Mack { 500fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 501e5779998SDaniel Mack .out_cables = 0x000f, 502e5779998SDaniel Mack .in_cables = 0x000f 503e5779998SDaniel Mack } 504e5779998SDaniel Mack }, 505fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 506e5779998SDaniel Mack } 507e5779998SDaniel Mack } 508e5779998SDaniel Mack }, 509e5779998SDaniel Mack { 510e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0003), 511fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 512e5779998SDaniel Mack .vendor_name = "Roland", 513e5779998SDaniel Mack .product_name = "SC-8850", 514fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 515fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 516fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 517e5779998SDaniel Mack { 518fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 519e5779998SDaniel Mack .out_cables = 0x003f, 520e5779998SDaniel Mack .in_cables = 0x003f 521e5779998SDaniel Mack } 522e5779998SDaniel Mack }, 523fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 524e5779998SDaniel Mack } 525e5779998SDaniel Mack } 526e5779998SDaniel Mack }, 527e5779998SDaniel Mack { 528e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0004), 529fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 530e5779998SDaniel Mack .vendor_name = "Roland", 531e5779998SDaniel Mack .product_name = "U-8", 532fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 533fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 534fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 535e5779998SDaniel Mack { 536fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 537e5779998SDaniel Mack .out_cables = 0x0005, 538e5779998SDaniel Mack .in_cables = 0x0005 539e5779998SDaniel Mack } 540e5779998SDaniel Mack }, 541fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 542e5779998SDaniel Mack } 543e5779998SDaniel Mack } 544e5779998SDaniel Mack }, 545e5779998SDaniel Mack { 546e5779998SDaniel Mack /* Has ID 0x0099 when not in "Advanced Driver" mode. 547e5779998SDaniel Mack * The UM-2EX has only one input, but we cannot detect this. */ 548e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0005), 549fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 550e5779998SDaniel Mack .vendor_name = "EDIROL", 551e5779998SDaniel Mack .product_name = "UM-2", 552fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 553fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 554fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 555e5779998SDaniel Mack { 556fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 557e5779998SDaniel Mack .out_cables = 0x0003, 558e5779998SDaniel Mack .in_cables = 0x0003 559e5779998SDaniel Mack } 560e5779998SDaniel Mack }, 561fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 562e5779998SDaniel Mack } 563e5779998SDaniel Mack } 564e5779998SDaniel Mack }, 565e5779998SDaniel Mack { 566e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0007), 567fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 568e5779998SDaniel Mack .vendor_name = "Roland", 569e5779998SDaniel Mack .product_name = "SC-8820", 570fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 571fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 572fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 573e5779998SDaniel Mack { 574fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 575e5779998SDaniel Mack .out_cables = 0x0013, 576e5779998SDaniel Mack .in_cables = 0x0013 577e5779998SDaniel Mack } 578e5779998SDaniel Mack }, 579fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 580e5779998SDaniel Mack } 581e5779998SDaniel Mack } 582e5779998SDaniel Mack }, 583e5779998SDaniel Mack { 584e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0008), 585fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 586e5779998SDaniel Mack .vendor_name = "Roland", 587e5779998SDaniel Mack .product_name = "PC-300", 588fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 589fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 590fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 591e5779998SDaniel Mack { 592fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 593e5779998SDaniel Mack .out_cables = 0x0001, 594e5779998SDaniel Mack .in_cables = 0x0001 595e5779998SDaniel Mack } 596e5779998SDaniel Mack }, 597fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 598e5779998SDaniel Mack } 599e5779998SDaniel Mack } 600e5779998SDaniel Mack }, 601e5779998SDaniel Mack { 602e5779998SDaniel Mack /* has ID 0x009d when not in "Advanced Driver" mode */ 603e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0009), 604fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 605e5779998SDaniel Mack .vendor_name = "EDIROL", 606e5779998SDaniel Mack .product_name = "UM-1", 607fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 608fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 609fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 610e5779998SDaniel Mack { 611fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 612e5779998SDaniel Mack .out_cables = 0x0001, 613e5779998SDaniel Mack .in_cables = 0x0001 614e5779998SDaniel Mack } 615e5779998SDaniel Mack }, 616fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 617e5779998SDaniel Mack } 618e5779998SDaniel Mack } 619e5779998SDaniel Mack }, 620e5779998SDaniel Mack { 621e5779998SDaniel Mack USB_DEVICE(0x0582, 0x000b), 622fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 623e5779998SDaniel Mack .vendor_name = "Roland", 624e5779998SDaniel Mack .product_name = "SK-500", 625fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 626fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 627fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 628e5779998SDaniel Mack { 629fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 630e5779998SDaniel Mack .out_cables = 0x0013, 631e5779998SDaniel Mack .in_cables = 0x0013 632e5779998SDaniel Mack } 633e5779998SDaniel Mack }, 634fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 635e5779998SDaniel Mack } 636e5779998SDaniel Mack } 637e5779998SDaniel Mack }, 638e5779998SDaniel Mack { 639e5779998SDaniel Mack /* thanks to Emiliano Grilli <emillo@libero.it> 640e5779998SDaniel Mack * for helping researching this data */ 641e5779998SDaniel Mack USB_DEVICE(0x0582, 0x000c), 642fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 643e5779998SDaniel Mack .vendor_name = "Roland", 644e5779998SDaniel Mack .product_name = "SC-D70", 645fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 646fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 647fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 648e5779998SDaniel Mack { 649fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 650e5779998SDaniel Mack .out_cables = 0x0007, 651e5779998SDaniel Mack .in_cables = 0x0007 652e5779998SDaniel Mack } 653e5779998SDaniel Mack }, 654fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 655e5779998SDaniel Mack } 656e5779998SDaniel Mack } 657e5779998SDaniel Mack }, 658e5779998SDaniel Mack { /* 659e5779998SDaniel Mack * This quirk is for the "Advanced Driver" mode of the Edirol UA-5. 660e5779998SDaniel Mack * If the advanced mode switch at the back of the unit is off, the 661e5779998SDaniel Mack * UA-5 has ID 0x0582/0x0011 and is standard compliant (no quirks), 662e5779998SDaniel Mack * but offers only 16-bit PCM. 663e5779998SDaniel Mack * In advanced mode, the UA-5 will output S24_3LE samples (two 664e5779998SDaniel Mack * channels) at the rate indicated on the front switch, including 665e5779998SDaniel Mack * the 96kHz sample rate. 666e5779998SDaniel Mack */ 667e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0010), 668fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 669e5779998SDaniel Mack .vendor_name = "EDIROL", 670e5779998SDaniel Mack .product_name = "UA-5", 671fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 672fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 673fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 674fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 675e5779998SDaniel Mack } 676e5779998SDaniel Mack } 677e5779998SDaniel Mack }, 678e5779998SDaniel Mack { 679e5779998SDaniel Mack /* has ID 0x0013 when not in "Advanced Driver" mode */ 680e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0012), 681fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 682e5779998SDaniel Mack .vendor_name = "Roland", 683e5779998SDaniel Mack .product_name = "XV-5050", 684fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 685e5779998SDaniel Mack .out_cables = 0x0001, 686e5779998SDaniel Mack .in_cables = 0x0001 687e5779998SDaniel Mack } 688e5779998SDaniel Mack } 689e5779998SDaniel Mack }, 690e5779998SDaniel Mack { 691e5779998SDaniel Mack /* has ID 0x0015 when not in "Advanced Driver" mode */ 692e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0014), 693fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 694e5779998SDaniel Mack .vendor_name = "EDIROL", 695e5779998SDaniel Mack .product_name = "UM-880", 696fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 697e5779998SDaniel Mack .out_cables = 0x01ff, 698e5779998SDaniel Mack .in_cables = 0x01ff 699e5779998SDaniel Mack } 700e5779998SDaniel Mack } 701e5779998SDaniel Mack }, 702e5779998SDaniel Mack { 703e5779998SDaniel Mack /* has ID 0x0017 when not in "Advanced Driver" mode */ 704e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0016), 705fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 706e5779998SDaniel Mack .vendor_name = "EDIROL", 707e5779998SDaniel Mack .product_name = "SD-90", 708fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 709fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 710fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 711e5779998SDaniel Mack { 712fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 713e5779998SDaniel Mack .out_cables = 0x000f, 714e5779998SDaniel Mack .in_cables = 0x000f 715e5779998SDaniel Mack } 716e5779998SDaniel Mack }, 717fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 718e5779998SDaniel Mack } 719e5779998SDaniel Mack } 720e5779998SDaniel Mack }, 721e5779998SDaniel Mack { 722e5779998SDaniel Mack /* has ID 0x001c when not in "Advanced Driver" mode */ 723e5779998SDaniel Mack USB_DEVICE(0x0582, 0x001b), 724fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 725e5779998SDaniel Mack .vendor_name = "Roland", 726e5779998SDaniel Mack .product_name = "MMP-2", 727fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 728fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 729fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 730e5779998SDaniel Mack { 731fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 732e5779998SDaniel Mack .out_cables = 0x0001, 733e5779998SDaniel Mack .in_cables = 0x0001 734e5779998SDaniel Mack } 735e5779998SDaniel Mack }, 736fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 737e5779998SDaniel Mack } 738e5779998SDaniel Mack } 739e5779998SDaniel Mack }, 740e5779998SDaniel Mack { 741e5779998SDaniel Mack /* has ID 0x001e when not in "Advanced Driver" mode */ 742e5779998SDaniel Mack USB_DEVICE(0x0582, 0x001d), 743fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 744e5779998SDaniel Mack .vendor_name = "Roland", 745e5779998SDaniel Mack .product_name = "V-SYNTH", 746fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 747e5779998SDaniel Mack .out_cables = 0x0001, 748e5779998SDaniel Mack .in_cables = 0x0001 749e5779998SDaniel Mack } 750e5779998SDaniel Mack } 751e5779998SDaniel Mack }, 752e5779998SDaniel Mack { 753e5779998SDaniel Mack /* has ID 0x0024 when not in "Advanced Driver" mode */ 754e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0023), 755fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 756e5779998SDaniel Mack .vendor_name = "EDIROL", 757e5779998SDaniel Mack .product_name = "UM-550", 758fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 759e5779998SDaniel Mack .out_cables = 0x003f, 760e5779998SDaniel Mack .in_cables = 0x003f 761e5779998SDaniel Mack } 762e5779998SDaniel Mack } 763e5779998SDaniel Mack }, 764e5779998SDaniel Mack { 765e5779998SDaniel Mack /* 766e5779998SDaniel Mack * This quirk is for the "Advanced Driver" mode. If off, the UA-20 767e5779998SDaniel Mack * has ID 0x0026 and is standard compliant, but has only 16-bit PCM 768e5779998SDaniel Mack * and no MIDI. 769e5779998SDaniel Mack */ 770e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0025), 771fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 772e5779998SDaniel Mack .vendor_name = "EDIROL", 773e5779998SDaniel Mack .product_name = "UA-20", 774fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 775fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 776e5779998SDaniel Mack { 777fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 778015eb0b0SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 779e5779998SDaniel Mack .channels = 2, 780e5779998SDaniel Mack .iface = 1, 781e5779998SDaniel Mack .altsetting = 1, 782e5779998SDaniel Mack .altset_idx = 1, 783e5779998SDaniel Mack .attributes = 0, 784e5779998SDaniel Mack .endpoint = 0x01, 785e5779998SDaniel Mack .ep_attr = 0x01, 786e5779998SDaniel Mack .rates = SNDRV_PCM_RATE_CONTINUOUS, 787e5779998SDaniel Mack .rate_min = 44100, 788e5779998SDaniel Mack .rate_max = 44100, 789e5779998SDaniel Mack } 790e5779998SDaniel Mack }, 791e5779998SDaniel Mack { 792fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 793015eb0b0SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 794e5779998SDaniel Mack .channels = 2, 795e5779998SDaniel Mack .iface = 2, 796e5779998SDaniel Mack .altsetting = 1, 797e5779998SDaniel Mack .altset_idx = 1, 798e5779998SDaniel Mack .attributes = 0, 799e5779998SDaniel Mack .endpoint = 0x82, 800e5779998SDaniel Mack .ep_attr = 0x01, 801e5779998SDaniel Mack .rates = SNDRV_PCM_RATE_CONTINUOUS, 802e5779998SDaniel Mack .rate_min = 44100, 803e5779998SDaniel Mack .rate_max = 44100, 804e5779998SDaniel Mack } 805e5779998SDaniel Mack }, 806e5779998SDaniel Mack { 807fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 808e5779998SDaniel Mack .out_cables = 0x0001, 809e5779998SDaniel Mack .in_cables = 0x0001 810e5779998SDaniel Mack } 811e5779998SDaniel Mack }, 812fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 813e5779998SDaniel Mack } 814e5779998SDaniel Mack } 815e5779998SDaniel Mack }, 816e5779998SDaniel Mack { 817e5779998SDaniel Mack /* has ID 0x0028 when not in "Advanced Driver" mode */ 818e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0027), 819fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 820e5779998SDaniel Mack .vendor_name = "EDIROL", 821e5779998SDaniel Mack .product_name = "SD-20", 822fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 823e5779998SDaniel Mack .out_cables = 0x0003, 824e5779998SDaniel Mack .in_cables = 0x0007 825e5779998SDaniel Mack } 826e5779998SDaniel Mack } 827e5779998SDaniel Mack }, 828e5779998SDaniel Mack { 829e5779998SDaniel Mack /* has ID 0x002a when not in "Advanced Driver" mode */ 830e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0029), 831fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 832e5779998SDaniel Mack .vendor_name = "EDIROL", 833e5779998SDaniel Mack .product_name = "SD-80", 834fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 835e5779998SDaniel Mack .out_cables = 0x000f, 836e5779998SDaniel Mack .in_cables = 0x000f 837e5779998SDaniel Mack } 838e5779998SDaniel Mack } 839e5779998SDaniel Mack }, 840e5779998SDaniel Mack { /* 841e5779998SDaniel Mack * This quirk is for the "Advanced" modes of the Edirol UA-700. 842e5779998SDaniel Mack * If the sample format switch is not in an advanced setting, the 843e5779998SDaniel Mack * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks), 844e5779998SDaniel Mack * but offers only 16-bit PCM and no MIDI. 845e5779998SDaniel Mack */ 846e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b), 847fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 848e5779998SDaniel Mack .vendor_name = "EDIROL", 849e5779998SDaniel Mack .product_name = "UA-700", 850fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 851fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(1) }, 852fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(2) }, 853fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(3) }, 854fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 855e5779998SDaniel Mack } 856e5779998SDaniel Mack } 857e5779998SDaniel Mack }, 858e5779998SDaniel Mack { 859e5779998SDaniel Mack /* has ID 0x002e when not in "Advanced Driver" mode */ 860e5779998SDaniel Mack USB_DEVICE(0x0582, 0x002d), 861fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 862e5779998SDaniel Mack .vendor_name = "Roland", 863e5779998SDaniel Mack .product_name = "XV-2020", 864fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 865e5779998SDaniel Mack .out_cables = 0x0001, 866e5779998SDaniel Mack .in_cables = 0x0001 867e5779998SDaniel Mack } 868e5779998SDaniel Mack } 869e5779998SDaniel Mack }, 870e5779998SDaniel Mack { 871e5779998SDaniel Mack /* has ID 0x0030 when not in "Advanced Driver" mode */ 872e5779998SDaniel Mack USB_DEVICE(0x0582, 0x002f), 873fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 874e5779998SDaniel Mack .vendor_name = "Roland", 875e5779998SDaniel Mack .product_name = "VariOS", 876fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 877e5779998SDaniel Mack .out_cables = 0x0007, 878e5779998SDaniel Mack .in_cables = 0x0007 879e5779998SDaniel Mack } 880e5779998SDaniel Mack } 881e5779998SDaniel Mack }, 882e5779998SDaniel Mack { 883e5779998SDaniel Mack /* has ID 0x0034 when not in "Advanced Driver" mode */ 884e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0033), 885fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 886e5779998SDaniel Mack .vendor_name = "EDIROL", 887e5779998SDaniel Mack .product_name = "PCR", 888fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 889e5779998SDaniel Mack .out_cables = 0x0003, 890e5779998SDaniel Mack .in_cables = 0x0007 891e5779998SDaniel Mack } 892e5779998SDaniel Mack } 893e5779998SDaniel Mack }, 894e5779998SDaniel Mack { 895e5779998SDaniel Mack /* 896e5779998SDaniel Mack * Has ID 0x0038 when not in "Advanced Driver" mode; 897e5779998SDaniel Mack * later revisions use IDs 0x0054 and 0x00a2. 898e5779998SDaniel Mack */ 899e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0037), 900fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 901e5779998SDaniel Mack .vendor_name = "Roland", 902e5779998SDaniel Mack .product_name = "Digital Piano", 903fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 904e5779998SDaniel Mack .out_cables = 0x0001, 905e5779998SDaniel Mack .in_cables = 0x0001 906e5779998SDaniel Mack } 907e5779998SDaniel Mack } 908e5779998SDaniel Mack }, 909e5779998SDaniel Mack { 910e5779998SDaniel Mack /* 911e5779998SDaniel Mack * This quirk is for the "Advanced Driver" mode. If off, the GS-10 912e5779998SDaniel Mack * has ID 0x003c and is standard compliant, but has only 16-bit PCM 913e5779998SDaniel Mack * and no MIDI. 914e5779998SDaniel Mack */ 915e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b), 916fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 917e5779998SDaniel Mack .vendor_name = "BOSS", 918e5779998SDaniel Mack .product_name = "GS-10", 919fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 920fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 921fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 922fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIDI(3) }, 923fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 924e5779998SDaniel Mack } 925e5779998SDaniel Mack } 926e5779998SDaniel Mack }, 927e5779998SDaniel Mack { 928e5779998SDaniel Mack /* has ID 0x0041 when not in "Advanced Driver" mode */ 929e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0040), 930fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 931e5779998SDaniel Mack .vendor_name = "Roland", 932e5779998SDaniel Mack .product_name = "GI-20", 933fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 934e5779998SDaniel Mack .out_cables = 0x0001, 935e5779998SDaniel Mack .in_cables = 0x0001 936e5779998SDaniel Mack } 937e5779998SDaniel Mack } 938e5779998SDaniel Mack }, 939e5779998SDaniel Mack { 940e5779998SDaniel Mack /* has ID 0x0043 when not in "Advanced Driver" mode */ 941e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0042), 942fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 943e5779998SDaniel Mack .vendor_name = "Roland", 944e5779998SDaniel Mack .product_name = "RS-70", 945fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 946e5779998SDaniel Mack .out_cables = 0x0001, 947e5779998SDaniel Mack .in_cables = 0x0001 948e5779998SDaniel Mack } 949e5779998SDaniel Mack } 950e5779998SDaniel Mack }, 951e5779998SDaniel Mack { 952e5779998SDaniel Mack /* has ID 0x0049 when not in "Advanced Driver" mode */ 953e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0047), 954fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 955e5779998SDaniel Mack /* .vendor_name = "EDIROL", */ 956e5779998SDaniel Mack /* .product_name = "UR-80", */ 957fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 958e5779998SDaniel Mack /* in the 96 kHz modes, only interface 1 is there */ 959fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 960fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 961fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 962e5779998SDaniel Mack } 963e5779998SDaniel Mack } 964e5779998SDaniel Mack }, 965e5779998SDaniel Mack { 966e5779998SDaniel Mack /* has ID 0x004a when not in "Advanced Driver" mode */ 967e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0048), 968fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 969e5779998SDaniel Mack /* .vendor_name = "EDIROL", */ 970e5779998SDaniel Mack /* .product_name = "UR-80", */ 971fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 972e5779998SDaniel Mack .out_cables = 0x0003, 973e5779998SDaniel Mack .in_cables = 0x0007 974e5779998SDaniel Mack } 975e5779998SDaniel Mack } 976e5779998SDaniel Mack }, 977e5779998SDaniel Mack { 978e5779998SDaniel Mack /* has ID 0x004e when not in "Advanced Driver" mode */ 979e5779998SDaniel Mack USB_DEVICE(0x0582, 0x004c), 980fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 981e5779998SDaniel Mack .vendor_name = "EDIROL", 982e5779998SDaniel Mack .product_name = "PCR-A", 983fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 984fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 985fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 986fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 987e5779998SDaniel Mack } 988e5779998SDaniel Mack } 989e5779998SDaniel Mack }, 990e5779998SDaniel Mack { 991e5779998SDaniel Mack /* has ID 0x004f when not in "Advanced Driver" mode */ 992e5779998SDaniel Mack USB_DEVICE(0x0582, 0x004d), 993fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 994e5779998SDaniel Mack .vendor_name = "EDIROL", 995e5779998SDaniel Mack .product_name = "PCR-A", 996fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 997e5779998SDaniel Mack .out_cables = 0x0003, 998e5779998SDaniel Mack .in_cables = 0x0007 999e5779998SDaniel Mack } 1000e5779998SDaniel Mack } 1001e5779998SDaniel Mack }, 1002e5779998SDaniel Mack { 1003e5779998SDaniel Mack /* 1004e5779998SDaniel Mack * This quirk is for the "Advanced Driver" mode. If off, the UA-3FX 1005e5779998SDaniel Mack * is standard compliant, but has only 16-bit PCM. 1006e5779998SDaniel Mack */ 1007e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0050), 1008fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1009e5779998SDaniel Mack .vendor_name = "EDIROL", 1010e5779998SDaniel Mack .product_name = "UA-3FX", 1011fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1012fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1013fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 1014fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1015e5779998SDaniel Mack } 1016e5779998SDaniel Mack } 1017e5779998SDaniel Mack }, 1018e5779998SDaniel Mack { 1019e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0052), 1020fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1021e5779998SDaniel Mack .vendor_name = "EDIROL", 1022e5779998SDaniel Mack .product_name = "UM-1SX", 1023fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(0) 1024e5779998SDaniel Mack } 1025e5779998SDaniel Mack }, 1026e5779998SDaniel Mack { 1027e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0060), 1028fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1029e5779998SDaniel Mack .vendor_name = "Roland", 1030e5779998SDaniel Mack .product_name = "EXR Series", 1031fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(0) 1032e5779998SDaniel Mack } 1033e5779998SDaniel Mack }, 1034e5779998SDaniel Mack { 1035aa70201fSClemens Ladisch /* has ID 0x0066 when not in "Advanced Driver" mode */ 1036aa70201fSClemens Ladisch USB_DEVICE(0x0582, 0x0064), 1037fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1038aa70201fSClemens Ladisch /* .vendor_name = "EDIROL", */ 1039aa70201fSClemens Ladisch /* .product_name = "PCR-1", */ 1040fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1041fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1042fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 1043fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1044aa70201fSClemens Ladisch } 1045aa70201fSClemens Ladisch } 1046aa70201fSClemens Ladisch }, 1047aa70201fSClemens Ladisch { 1048e5779998SDaniel Mack /* has ID 0x0067 when not in "Advanced Driver" mode */ 1049e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0065), 1050fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1051aa70201fSClemens Ladisch /* .vendor_name = "EDIROL", */ 1052aa70201fSClemens Ladisch /* .product_name = "PCR-1", */ 1053fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1054e5779998SDaniel Mack .out_cables = 0x0001, 1055e5779998SDaniel Mack .in_cables = 0x0003 1056e5779998SDaniel Mack } 1057e5779998SDaniel Mack } 1058e5779998SDaniel Mack }, 1059e5779998SDaniel Mack { 1060e5779998SDaniel Mack /* has ID 0x006e when not in "Advanced Driver" mode */ 1061e5779998SDaniel Mack USB_DEVICE(0x0582, 0x006d), 1062fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1063e5779998SDaniel Mack .vendor_name = "Roland", 1064e5779998SDaniel Mack .product_name = "FANTOM-X", 1065fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1066e5779998SDaniel Mack .out_cables = 0x0001, 1067e5779998SDaniel Mack .in_cables = 0x0001 1068e5779998SDaniel Mack } 1069e5779998SDaniel Mack } 1070e5779998SDaniel Mack }, 1071e5779998SDaniel Mack { /* 1072e5779998SDaniel Mack * This quirk is for the "Advanced" modes of the Edirol UA-25. 1073e5779998SDaniel Mack * If the switch is not in an advanced setting, the UA-25 has 1074e5779998SDaniel Mack * ID 0x0582/0x0073 and is standard compliant (no quirks), but 1075e5779998SDaniel Mack * offers only 16-bit PCM at 44.1 kHz and no MIDI. 1076e5779998SDaniel Mack */ 1077e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074), 1078fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1079e5779998SDaniel Mack .vendor_name = "EDIROL", 1080e5779998SDaniel Mack .product_name = "UA-25", 1081fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1082fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(0) }, 1083fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(1) }, 1084fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(2) }, 1085fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1086e5779998SDaniel Mack } 1087e5779998SDaniel Mack } 1088e5779998SDaniel Mack }, 1089e5779998SDaniel Mack { 1090e5779998SDaniel Mack /* has ID 0x0076 when not in "Advanced Driver" mode */ 1091e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0075), 1092fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1093e5779998SDaniel Mack .vendor_name = "BOSS", 1094e5779998SDaniel Mack .product_name = "DR-880", 1095fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1096e5779998SDaniel Mack .out_cables = 0x0001, 1097e5779998SDaniel Mack .in_cables = 0x0001 1098e5779998SDaniel Mack } 1099e5779998SDaniel Mack } 1100e5779998SDaniel Mack }, 1101e5779998SDaniel Mack { 1102e5779998SDaniel Mack /* has ID 0x007b when not in "Advanced Driver" mode */ 1103e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a), 1104fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1105e5779998SDaniel Mack .vendor_name = "Roland", 1106e5779998SDaniel Mack /* "RD" or "RD-700SX"? */ 1107fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1108e5779998SDaniel Mack .out_cables = 0x0003, 1109e5779998SDaniel Mack .in_cables = 0x0003 1110e5779998SDaniel Mack } 1111e5779998SDaniel Mack } 1112e5779998SDaniel Mack }, 1113e5779998SDaniel Mack { 1114e5779998SDaniel Mack /* has ID 0x0081 when not in "Advanced Driver" mode */ 1115e5779998SDaniel Mack USB_DEVICE(0x0582, 0x0080), 1116fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1117e5779998SDaniel Mack .vendor_name = "Roland", 1118e5779998SDaniel Mack .product_name = "G-70", 1119fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1120e5779998SDaniel Mack .out_cables = 0x0001, 1121e5779998SDaniel Mack .in_cables = 0x0001 1122e5779998SDaniel Mack } 1123e5779998SDaniel Mack } 1124e5779998SDaniel Mack }, 1125e5779998SDaniel Mack { 1126e5779998SDaniel Mack /* has ID 0x008c when not in "Advanced Driver" mode */ 1127e5779998SDaniel Mack USB_DEVICE(0x0582, 0x008b), 1128fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1129e5779998SDaniel Mack .vendor_name = "EDIROL", 1130e5779998SDaniel Mack .product_name = "PC-50", 1131fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1132e5779998SDaniel Mack .out_cables = 0x0001, 1133e5779998SDaniel Mack .in_cables = 0x0001 1134e5779998SDaniel Mack } 1135e5779998SDaniel Mack } 1136e5779998SDaniel Mack }, 1137e5779998SDaniel Mack { 1138e5779998SDaniel Mack /* 1139e5779998SDaniel Mack * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX 1140e5779998SDaniel Mack * is standard compliant, but has only 16-bit PCM and no MIDI. 1141e5779998SDaniel Mack */ 1142e5779998SDaniel Mack USB_DEVICE(0x0582, 0x00a3), 1143fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1144e5779998SDaniel Mack .vendor_name = "EDIROL", 1145e5779998SDaniel Mack .product_name = "UA-4FX", 1146fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1147fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(0) }, 1148fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(1) }, 1149fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(2) }, 1150fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1151e5779998SDaniel Mack } 1152e5779998SDaniel Mack } 1153e5779998SDaniel Mack }, 1154e5779998SDaniel Mack { 1155e5779998SDaniel Mack /* Edirol M-16DX */ 1156e5779998SDaniel Mack USB_DEVICE(0x0582, 0x00c4), 1157fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1158fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1159fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1160fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1161e5779998SDaniel Mack { 1162fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1163e5779998SDaniel Mack .out_cables = 0x0001, 1164e5779998SDaniel Mack .in_cables = 0x0001 1165e5779998SDaniel Mack } 1166e5779998SDaniel Mack }, 1167fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1168e5779998SDaniel Mack } 1169e5779998SDaniel Mack } 1170e5779998SDaniel Mack }, 1171e5779998SDaniel Mack { 1172e5779998SDaniel Mack /* Advanced modes of the Edirol UA-25EX. 1173e5779998SDaniel Mack * For the standard mode, UA-25EX has ID 0582:00e7, which 1174e5779998SDaniel Mack * offers only 16-bit PCM at 44.1 kHz and no MIDI. 1175e5779998SDaniel Mack */ 1176e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6), 1177fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1178e5779998SDaniel Mack .vendor_name = "EDIROL", 1179e5779998SDaniel Mack .product_name = "UA-25EX", 1180fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1181fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(0) }, 1182fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(1) }, 1183fb2ed616STakashi Iwai { QUIRK_DATA_EDIROL_UAXX(2) }, 1184fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1185e5779998SDaniel Mack } 1186e5779998SDaniel Mack } 1187e5779998SDaniel Mack }, 1188e5779998SDaniel Mack { 1189927c9423SClemens Ladisch /* Edirol UM-3G */ 1190927c9423SClemens Ladisch USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108), 1191fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1192fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1193a0c6d309SClemens Ladisch .out_cables = 0x0007, 1194a0c6d309SClemens Ladisch .in_cables = 0x0007 1195a0c6d309SClemens Ladisch } 1196927c9423SClemens Ladisch } 1197927c9423SClemens Ladisch }, 1198927c9423SClemens Ladisch { 119953da5ebfSClemens Ladisch /* BOSS ME-25 */ 120053da5ebfSClemens Ladisch USB_DEVICE(0x0582, 0x0113), 1201fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1202fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1203fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1204fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 120553da5ebfSClemens Ladisch { 1206fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 120753da5ebfSClemens Ladisch .out_cables = 0x0001, 120853da5ebfSClemens Ladisch .in_cables = 0x0001 120953da5ebfSClemens Ladisch } 121053da5ebfSClemens Ladisch }, 1211fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 121253da5ebfSClemens Ladisch } 121353da5ebfSClemens Ladisch } 121453da5ebfSClemens Ladisch }, 121553da5ebfSClemens Ladisch { 1216b7f33917SClemens Ladisch /* only 44.1 kHz works at the moment */ 1217b7f33917SClemens Ladisch USB_DEVICE(0x0582, 0x0120), 1218fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 12199d0c9193SClemens Ladisch /* .vendor_name = "Roland", */ 1220b7f33917SClemens Ladisch /* .product_name = "OCTO-CAPTURE", */ 1221fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1222ae7cc709SJohn F Leach { 1223fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 1224b7f33917SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S32_LE, 1225b7f33917SClemens Ladisch .channels = 10, 1226b7f33917SClemens Ladisch .iface = 0, 1227b7f33917SClemens Ladisch .altsetting = 1, 1228b7f33917SClemens Ladisch .altset_idx = 1, 1229b7f33917SClemens Ladisch .endpoint = 0x05, 1230b7f33917SClemens Ladisch .ep_attr = 0x05, 1231b7f33917SClemens Ladisch .rates = SNDRV_PCM_RATE_44100, 1232b7f33917SClemens Ladisch .rate_min = 44100, 1233b7f33917SClemens Ladisch .rate_max = 44100, 1234b7f33917SClemens Ladisch .nr_rates = 1, 1235b7f33917SClemens Ladisch .rate_table = (unsigned int[]) { 44100 } 1236b7f33917SClemens Ladisch } 1237ae7cc709SJohn F Leach }, 1238ae7cc709SJohn F Leach { 1239fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 1240b7f33917SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S32_LE, 1241b7f33917SClemens Ladisch .channels = 12, 1242b7f33917SClemens Ladisch .iface = 1, 1243b7f33917SClemens Ladisch .altsetting = 1, 1244b7f33917SClemens Ladisch .altset_idx = 1, 1245b7f33917SClemens Ladisch .endpoint = 0x85, 1246b7f33917SClemens Ladisch .ep_attr = 0x25, 1247b7f33917SClemens Ladisch .rates = SNDRV_PCM_RATE_44100, 1248b7f33917SClemens Ladisch .rate_min = 44100, 1249b7f33917SClemens Ladisch .rate_max = 44100, 1250b7f33917SClemens Ladisch .nr_rates = 1, 1251b7f33917SClemens Ladisch .rate_table = (unsigned int[]) { 44100 } 1252ae7cc709SJohn F Leach } 1253ae7cc709SJohn F Leach }, 1254ae7cc709SJohn F Leach { 1255fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 12567b28079bSClemens Ladisch .out_cables = 0x0001, 12577b28079bSClemens Ladisch .in_cables = 0x0001 12587b28079bSClemens Ladisch } 12597b28079bSClemens Ladisch }, 1260fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(3) }, 1261fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(4) }, 1262fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1263c9c9e4e4SKazutomo Yoshii } 1264c9c9e4e4SKazutomo Yoshii } 1265c9c9e4e4SKazutomo Yoshii }, 126674953e20SClemens Ladisch { 1267b7f33917SClemens Ladisch /* only 44.1 kHz works at the moment */ 1268b7f33917SClemens Ladisch USB_DEVICE(0x0582, 0x012f), 1269fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1270b7f33917SClemens Ladisch /* .vendor_name = "Roland", */ 1271b7f33917SClemens Ladisch /* .product_name = "QUAD-CAPTURE", */ 1272fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 127374953e20SClemens Ladisch { 1274fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 1275b7f33917SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S32_LE, 1276b7f33917SClemens Ladisch .channels = 4, 1277b7f33917SClemens Ladisch .iface = 0, 1278b7f33917SClemens Ladisch .altsetting = 1, 1279b7f33917SClemens Ladisch .altset_idx = 1, 1280b7f33917SClemens Ladisch .endpoint = 0x05, 1281b7f33917SClemens Ladisch .ep_attr = 0x05, 1282b7f33917SClemens Ladisch .rates = SNDRV_PCM_RATE_44100, 1283b7f33917SClemens Ladisch .rate_min = 44100, 1284b7f33917SClemens Ladisch .rate_max = 44100, 1285b7f33917SClemens Ladisch .nr_rates = 1, 1286b7f33917SClemens Ladisch .rate_table = (unsigned int[]) { 44100 } 1287b7f33917SClemens Ladisch } 1288b7f33917SClemens Ladisch }, 1289b7f33917SClemens Ladisch { 1290fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 1291b7f33917SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S32_LE, 1292b7f33917SClemens Ladisch .channels = 6, 1293b7f33917SClemens Ladisch .iface = 1, 1294b7f33917SClemens Ladisch .altsetting = 1, 1295b7f33917SClemens Ladisch .altset_idx = 1, 1296b7f33917SClemens Ladisch .endpoint = 0x85, 1297b7f33917SClemens Ladisch .ep_attr = 0x25, 1298b7f33917SClemens Ladisch .rates = SNDRV_PCM_RATE_44100, 1299b7f33917SClemens Ladisch .rate_min = 44100, 1300b7f33917SClemens Ladisch .rate_max = 44100, 1301b7f33917SClemens Ladisch .nr_rates = 1, 1302b7f33917SClemens Ladisch .rate_table = (unsigned int[]) { 44100 } 1303b7f33917SClemens Ladisch } 130474953e20SClemens Ladisch }, 130574953e20SClemens Ladisch { 1306fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 130774953e20SClemens Ladisch .out_cables = 0x0001, 130874953e20SClemens Ladisch .in_cables = 0x0001 130974953e20SClemens Ladisch } 131074953e20SClemens Ladisch }, 1311fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(3) }, 1312fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(4) }, 1313fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 131474953e20SClemens Ladisch } 131574953e20SClemens Ladisch } 131674953e20SClemens Ladisch }, 1317fcdcd1deSDaniel Mack { 1318fcdcd1deSDaniel Mack USB_DEVICE(0x0582, 0x0159), 1319fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1320fcdcd1deSDaniel Mack /* .vendor_name = "Roland", */ 1321fcdcd1deSDaniel Mack /* .product_name = "UA-22", */ 1322fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1323fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1324fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1325fcdcd1deSDaniel Mack { 1326fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1327fcdcd1deSDaniel Mack .out_cables = 0x0001, 1328fcdcd1deSDaniel Mack .in_cables = 0x0001 1329fcdcd1deSDaniel Mack } 1330fcdcd1deSDaniel Mack }, 1331fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1332fcdcd1deSDaniel Mack } 1333fcdcd1deSDaniel Mack } 1334fcdcd1deSDaniel Mack }, 1335d7631453STakashi Iwai 1336d7631453STakashi Iwai /* UA101 and co are supported by another driver */ 1337d7631453STakashi Iwai { 1338d7631453STakashi Iwai USB_DEVICE(0x0582, 0x0044), /* UA-1000 high speed */ 1339fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1340d7631453STakashi Iwai .ifnum = QUIRK_NODEV_INTERFACE 1341d7631453STakashi Iwai }, 1342d7631453STakashi Iwai }, 1343d7631453STakashi Iwai { 1344d7631453STakashi Iwai USB_DEVICE(0x0582, 0x007d), /* UA-101 high speed */ 1345fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1346d7631453STakashi Iwai .ifnum = QUIRK_NODEV_INTERFACE 1347d7631453STakashi Iwai }, 1348d7631453STakashi Iwai }, 1349d7631453STakashi Iwai { 1350d7631453STakashi Iwai USB_DEVICE(0x0582, 0x008d), /* UA-101 full speed */ 1351fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1352d7631453STakashi Iwai .ifnum = QUIRK_NODEV_INTERFACE 1353d7631453STakashi Iwai }, 1354d7631453STakashi Iwai }, 1355d7631453STakashi Iwai 1356aafe77ccSClemens Ladisch /* this catches most recent vendor-specific Roland devices */ 1357aafe77ccSClemens Ladisch { 1358aafe77ccSClemens Ladisch .match_flags = USB_DEVICE_ID_MATCH_VENDOR | 1359aafe77ccSClemens Ladisch USB_DEVICE_ID_MATCH_INT_CLASS, 1360aafe77ccSClemens Ladisch .idVendor = 0x0582, 1361aafe77ccSClemens Ladisch .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 1362fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1363aafe77ccSClemens Ladisch .ifnum = QUIRK_ANY_INTERFACE, 1364aafe77ccSClemens Ladisch .type = QUIRK_AUTODETECT 1365aafe77ccSClemens Ladisch } 1366aafe77ccSClemens Ladisch }, 1367e5779998SDaniel Mack 1368e5779998SDaniel Mack /* Guillemot devices */ 1369e5779998SDaniel Mack { 1370e5779998SDaniel Mack /* 1371e5779998SDaniel Mack * This is for the "Windows Edition" where the external MIDI ports are 1372e5779998SDaniel Mack * the only MIDI ports; the control data is reported through HID 1373e5779998SDaniel Mack * interfaces. The "Macintosh Edition" has ID 0xd002 and uses standard 1374e5779998SDaniel Mack * compliant USB MIDI ports for external MIDI and controls. 1375e5779998SDaniel Mack */ 1376e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000), 1377fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1378e5779998SDaniel Mack .vendor_name = "Hercules", 1379e5779998SDaniel Mack .product_name = "DJ Console (WE)", 1380fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) { 1381e5779998SDaniel Mack .out_cables = 0x0001, 1382e5779998SDaniel Mack .in_cables = 0x0001 1383e5779998SDaniel Mack } 1384e5779998SDaniel Mack } 1385e5779998SDaniel Mack }, 1386e5779998SDaniel Mack 1387e5779998SDaniel Mack /* Midiman/M-Audio devices */ 1388e5779998SDaniel Mack { 1389e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002), 1390fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1391e5779998SDaniel Mack .vendor_name = "M-Audio", 1392e5779998SDaniel Mack .product_name = "MidiSport 2x2", 1393fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1394e5779998SDaniel Mack .out_cables = 0x0003, 1395e5779998SDaniel Mack .in_cables = 0x0003 1396e5779998SDaniel Mack } 1397e5779998SDaniel Mack } 1398e5779998SDaniel Mack }, 1399e5779998SDaniel Mack { 1400e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011), 1401fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1402e5779998SDaniel Mack .vendor_name = "M-Audio", 1403e5779998SDaniel Mack .product_name = "MidiSport 1x1", 1404fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1405e5779998SDaniel Mack .out_cables = 0x0001, 1406e5779998SDaniel Mack .in_cables = 0x0001 1407e5779998SDaniel Mack } 1408e5779998SDaniel Mack } 1409e5779998SDaniel Mack }, 1410e5779998SDaniel Mack { 1411e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015), 1412fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1413e5779998SDaniel Mack .vendor_name = "M-Audio", 1414e5779998SDaniel Mack .product_name = "Keystation", 1415fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1416e5779998SDaniel Mack .out_cables = 0x0001, 1417e5779998SDaniel Mack .in_cables = 0x0001 1418e5779998SDaniel Mack } 1419e5779998SDaniel Mack } 1420e5779998SDaniel Mack }, 1421e5779998SDaniel Mack { 1422e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021), 1423fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1424e5779998SDaniel Mack .vendor_name = "M-Audio", 1425e5779998SDaniel Mack .product_name = "MidiSport 4x4", 1426fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1427e5779998SDaniel Mack .out_cables = 0x000f, 1428e5779998SDaniel Mack .in_cables = 0x000f 1429e5779998SDaniel Mack } 1430e5779998SDaniel Mack } 1431e5779998SDaniel Mack }, 1432e5779998SDaniel Mack { 1433e5779998SDaniel Mack /* 1434e5779998SDaniel Mack * For hardware revision 1.05; in the later revisions (1.10 and 1435e5779998SDaniel Mack * 1.21), 0x1031 is the ID for the device without firmware. 1436e5779998SDaniel Mack * Thanks to Olaf Giesbrecht <Olaf_Giesbrecht@yahoo.de> 1437e5779998SDaniel Mack */ 1438e5779998SDaniel Mack USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109), 1439fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1440e5779998SDaniel Mack .vendor_name = "M-Audio", 1441e5779998SDaniel Mack .product_name = "MidiSport 8x8", 1442fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1443e5779998SDaniel Mack .out_cables = 0x01ff, 1444e5779998SDaniel Mack .in_cables = 0x01ff 1445e5779998SDaniel Mack } 1446e5779998SDaniel Mack } 1447e5779998SDaniel Mack }, 1448e5779998SDaniel Mack { 1449e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033), 1450fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1451e5779998SDaniel Mack .vendor_name = "M-Audio", 1452e5779998SDaniel Mack .product_name = "MidiSport 8x8", 1453fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1454e5779998SDaniel Mack .out_cables = 0x01ff, 1455e5779998SDaniel Mack .in_cables = 0x01ff 1456e5779998SDaniel Mack } 1457e5779998SDaniel Mack } 1458e5779998SDaniel Mack }, 1459e5779998SDaniel Mack { 1460e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041), 1461fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1462e5779998SDaniel Mack .vendor_name = "M-Audio", 1463e5779998SDaniel Mack .product_name = "MidiSport 2x4", 1464fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1465e5779998SDaniel Mack .out_cables = 0x000f, 1466e5779998SDaniel Mack .in_cables = 0x0003 1467e5779998SDaniel Mack } 1468e5779998SDaniel Mack } 1469e5779998SDaniel Mack }, 1470e5779998SDaniel Mack { 1471e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001), 1472fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1473e5779998SDaniel Mack .vendor_name = "M-Audio", 1474e5779998SDaniel Mack .product_name = "Quattro", 1475fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1476e5779998SDaniel Mack /* 1477e5779998SDaniel Mack * Interfaces 0-2 are "Windows-compatible", 16-bit only, 1478e5779998SDaniel Mack * and share endpoints with the other interfaces. 1479e5779998SDaniel Mack * Ignore them. The other interfaces can do 24 bits, 1480e5779998SDaniel Mack * but captured samples are big-endian (see usbaudio.c). 1481e5779998SDaniel Mack */ 1482fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 1483fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 1484fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(2) }, 1485fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(3) }, 1486fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(4) }, 1487fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(5) }, 1488fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(6) }, 1489fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(7) }, 1490fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(8) }, 1491e5779998SDaniel Mack { 1492fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(9) { 1493e5779998SDaniel Mack .out_cables = 0x0001, 1494e5779998SDaniel Mack .in_cables = 0x0001 1495e5779998SDaniel Mack } 1496e5779998SDaniel Mack }, 1497fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1498e5779998SDaniel Mack } 1499e5779998SDaniel Mack } 1500e5779998SDaniel Mack }, 1501e5779998SDaniel Mack { 1502e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003), 1503fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1504e5779998SDaniel Mack .vendor_name = "M-Audio", 1505e5779998SDaniel Mack .product_name = "AudioPhile", 1506fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(6) { 1507e5779998SDaniel Mack .out_cables = 0x0001, 1508e5779998SDaniel Mack .in_cables = 0x0001 1509e5779998SDaniel Mack } 1510e5779998SDaniel Mack } 1511e5779998SDaniel Mack }, 1512e5779998SDaniel Mack { 1513e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008), 1514fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1515e5779998SDaniel Mack .vendor_name = "M-Audio", 1516e5779998SDaniel Mack .product_name = "Ozone", 1517fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(3) { 1518e5779998SDaniel Mack .out_cables = 0x0001, 1519e5779998SDaniel Mack .in_cables = 0x0001 1520e5779998SDaniel Mack } 1521e5779998SDaniel Mack } 1522e5779998SDaniel Mack }, 1523e5779998SDaniel Mack { 1524e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d), 1525fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1526e5779998SDaniel Mack .vendor_name = "M-Audio", 1527e5779998SDaniel Mack .product_name = "OmniStudio", 1528fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1529fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 1530fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 1531fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(2) }, 1532fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(3) }, 1533fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(4) }, 1534fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(5) }, 1535fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(6) }, 1536fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(7) }, 1537fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(8) }, 1538e5779998SDaniel Mack { 1539fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(9) { 1540e5779998SDaniel Mack .out_cables = 0x0001, 1541e5779998SDaniel Mack .in_cables = 0x0001 1542e5779998SDaniel Mack } 1543e5779998SDaniel Mack }, 1544fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1545e5779998SDaniel Mack } 1546e5779998SDaniel Mack } 1547e5779998SDaniel Mack }, 1548e5779998SDaniel Mack { 1549e5779998SDaniel Mack USB_DEVICE(0x0763, 0x2019), 1550fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1551e5779998SDaniel Mack /* .vendor_name = "M-Audio", */ 1552e5779998SDaniel Mack /* .product_name = "Ozone Academic", */ 1553fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1554fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1555fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1556fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 1557e5779998SDaniel Mack { 1558fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(3) { 1559e5779998SDaniel Mack .out_cables = 0x0001, 1560e5779998SDaniel Mack .in_cables = 0x0001 1561e5779998SDaniel Mack } 1562e5779998SDaniel Mack }, 1563fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1564e5779998SDaniel Mack } 1565e5779998SDaniel Mack } 1566e5779998SDaniel Mack }, 1567fca5bca4SFelix Homann { 15682f01a612STakashi Iwai /* M-Audio Micro */ 15692f01a612STakashi Iwai USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a), 15702f01a612STakashi Iwai }, 15712f01a612STakashi Iwai { 157276f74bcaSEldad Zack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030), 1573fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 157476f74bcaSEldad Zack /* .vendor_name = "M-Audio", */ 157576f74bcaSEldad Zack /* .product_name = "Fast Track C400", */ 1576fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1577fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(1) }, 157876f74bcaSEldad Zack /* Playback */ 157976f74bcaSEldad Zack { 1580fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 158176f74bcaSEldad Zack .formats = SNDRV_PCM_FMTBIT_S24_3LE, 158276f74bcaSEldad Zack .channels = 6, 158376f74bcaSEldad Zack .iface = 2, 158476f74bcaSEldad Zack .altsetting = 1, 158576f74bcaSEldad Zack .altset_idx = 1, 158676f74bcaSEldad Zack .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 158776f74bcaSEldad Zack .endpoint = 0x01, 158876f74bcaSEldad Zack .ep_attr = 0x09, 158976f74bcaSEldad Zack .rates = SNDRV_PCM_RATE_44100 | 159076f74bcaSEldad Zack SNDRV_PCM_RATE_48000 | 159176f74bcaSEldad Zack SNDRV_PCM_RATE_88200 | 159276f74bcaSEldad Zack SNDRV_PCM_RATE_96000, 159376f74bcaSEldad Zack .rate_min = 44100, 159476f74bcaSEldad Zack .rate_max = 96000, 159576f74bcaSEldad Zack .nr_rates = 4, 159676f74bcaSEldad Zack .rate_table = (unsigned int[]) { 159776f74bcaSEldad Zack 44100, 48000, 88200, 96000 159876f74bcaSEldad Zack }, 15992aad272bSEldad Zack .clock = 0x80, 160076f74bcaSEldad Zack } 160176f74bcaSEldad Zack }, 160276f74bcaSEldad Zack /* Capture */ 160376f74bcaSEldad Zack { 1604fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 160576f74bcaSEldad Zack .formats = SNDRV_PCM_FMTBIT_S24_3LE, 160676f74bcaSEldad Zack .channels = 4, 160776f74bcaSEldad Zack .iface = 3, 160876f74bcaSEldad Zack .altsetting = 1, 160976f74bcaSEldad Zack .altset_idx = 1, 161076f74bcaSEldad Zack .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 161176f74bcaSEldad Zack .endpoint = 0x81, 161276f74bcaSEldad Zack .ep_attr = 0x05, 161376f74bcaSEldad Zack .rates = SNDRV_PCM_RATE_44100 | 161476f74bcaSEldad Zack SNDRV_PCM_RATE_48000 | 161576f74bcaSEldad Zack SNDRV_PCM_RATE_88200 | 161676f74bcaSEldad Zack SNDRV_PCM_RATE_96000, 161776f74bcaSEldad Zack .rate_min = 44100, 161876f74bcaSEldad Zack .rate_max = 96000, 161976f74bcaSEldad Zack .nr_rates = 4, 162076f74bcaSEldad Zack .rate_table = (unsigned int[]) { 162176f74bcaSEldad Zack 44100, 48000, 88200, 96000 162276f74bcaSEldad Zack }, 16232aad272bSEldad Zack .clock = 0x80, 162476f74bcaSEldad Zack } 162576f74bcaSEldad Zack }, 1626fb2ed616STakashi Iwai /* MIDI: Interface = 4*/ 1627fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 162876f74bcaSEldad Zack } 162976f74bcaSEldad Zack } 163076f74bcaSEldad Zack }, 163176f74bcaSEldad Zack { 1632e9a25e04SMatt Gruskin USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031), 1633fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1634e9a25e04SMatt Gruskin /* .vendor_name = "M-Audio", */ 1635e9a25e04SMatt Gruskin /* .product_name = "Fast Track C600", */ 1636fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1637fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(1) }, 1638e9a25e04SMatt Gruskin /* Playback */ 1639e9a25e04SMatt Gruskin { 1640fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 1641e9a25e04SMatt Gruskin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1642e9a25e04SMatt Gruskin .channels = 8, 1643e9a25e04SMatt Gruskin .iface = 2, 1644e9a25e04SMatt Gruskin .altsetting = 1, 1645e9a25e04SMatt Gruskin .altset_idx = 1, 1646e9a25e04SMatt Gruskin .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 1647e9a25e04SMatt Gruskin .endpoint = 0x01, 1648e9a25e04SMatt Gruskin .ep_attr = 0x09, 1649e9a25e04SMatt Gruskin .rates = SNDRV_PCM_RATE_44100 | 1650e9a25e04SMatt Gruskin SNDRV_PCM_RATE_48000 | 1651e9a25e04SMatt Gruskin SNDRV_PCM_RATE_88200 | 1652e9a25e04SMatt Gruskin SNDRV_PCM_RATE_96000, 1653e9a25e04SMatt Gruskin .rate_min = 44100, 1654e9a25e04SMatt Gruskin .rate_max = 96000, 1655e9a25e04SMatt Gruskin .nr_rates = 4, 1656e9a25e04SMatt Gruskin .rate_table = (unsigned int[]) { 1657e9a25e04SMatt Gruskin 44100, 48000, 88200, 96000 1658e9a25e04SMatt Gruskin }, 1659e9a25e04SMatt Gruskin .clock = 0x80, 1660e9a25e04SMatt Gruskin } 1661e9a25e04SMatt Gruskin }, 1662e9a25e04SMatt Gruskin /* Capture */ 1663e9a25e04SMatt Gruskin { 1664fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 1665e9a25e04SMatt Gruskin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1666e9a25e04SMatt Gruskin .channels = 6, 1667e9a25e04SMatt Gruskin .iface = 3, 1668e9a25e04SMatt Gruskin .altsetting = 1, 1669e9a25e04SMatt Gruskin .altset_idx = 1, 1670e9a25e04SMatt Gruskin .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 1671e9a25e04SMatt Gruskin .endpoint = 0x81, 1672e9a25e04SMatt Gruskin .ep_attr = 0x05, 1673e9a25e04SMatt Gruskin .rates = SNDRV_PCM_RATE_44100 | 1674e9a25e04SMatt Gruskin SNDRV_PCM_RATE_48000 | 1675e9a25e04SMatt Gruskin SNDRV_PCM_RATE_88200 | 1676e9a25e04SMatt Gruskin SNDRV_PCM_RATE_96000, 1677e9a25e04SMatt Gruskin .rate_min = 44100, 1678e9a25e04SMatt Gruskin .rate_max = 96000, 1679e9a25e04SMatt Gruskin .nr_rates = 4, 1680e9a25e04SMatt Gruskin .rate_table = (unsigned int[]) { 1681e9a25e04SMatt Gruskin 44100, 48000, 88200, 96000 1682e9a25e04SMatt Gruskin }, 1683e9a25e04SMatt Gruskin .clock = 0x80, 1684e9a25e04SMatt Gruskin } 1685e9a25e04SMatt Gruskin }, 1686fb2ed616STakashi Iwai /* MIDI: Interface = 4 */ 1687fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1688e9a25e04SMatt Gruskin } 1689e9a25e04SMatt Gruskin } 1690e9a25e04SMatt Gruskin }, 1691e9a25e04SMatt Gruskin { 1692c91d9cdaSDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080), 1693fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1694fca5bca4SFelix Homann /* .vendor_name = "M-Audio", */ 169565f04443SClemens Ladisch /* .product_name = "Fast Track Ultra", */ 1696fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1697fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 1698fca5bca4SFelix Homann { 1699fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 170065f04443SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 170165f04443SClemens Ladisch .channels = 8, 170265f04443SClemens Ladisch .iface = 1, 170365f04443SClemens Ladisch .altsetting = 1, 170465f04443SClemens Ladisch .altset_idx = 1, 170565f04443SClemens Ladisch .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 170665f04443SClemens Ladisch .endpoint = 0x01, 170765f04443SClemens Ladisch .ep_attr = 0x09, 170865f04443SClemens Ladisch .rates = SNDRV_PCM_RATE_44100 | 170965f04443SClemens Ladisch SNDRV_PCM_RATE_48000 | 171065f04443SClemens Ladisch SNDRV_PCM_RATE_88200 | 171165f04443SClemens Ladisch SNDRV_PCM_RATE_96000, 171265f04443SClemens Ladisch .rate_min = 44100, 171365f04443SClemens Ladisch .rate_max = 96000, 171465f04443SClemens Ladisch .nr_rates = 4, 171565f04443SClemens Ladisch .rate_table = (unsigned int[]) { 171665f04443SClemens Ladisch 44100, 48000, 88200, 96000 171765f04443SClemens Ladisch } 171865f04443SClemens Ladisch } 1719fca5bca4SFelix Homann }, 1720fca5bca4SFelix Homann { 1721fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 172265f04443SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 172365f04443SClemens Ladisch .channels = 8, 172465f04443SClemens Ladisch .iface = 2, 172565f04443SClemens Ladisch .altsetting = 1, 172665f04443SClemens Ladisch .altset_idx = 1, 172765f04443SClemens Ladisch .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 172865f04443SClemens Ladisch .endpoint = 0x81, 172965f04443SClemens Ladisch .ep_attr = 0x05, 173065f04443SClemens Ladisch .rates = SNDRV_PCM_RATE_44100 | 173165f04443SClemens Ladisch SNDRV_PCM_RATE_48000 | 173265f04443SClemens Ladisch SNDRV_PCM_RATE_88200 | 173365f04443SClemens Ladisch SNDRV_PCM_RATE_96000, 173465f04443SClemens Ladisch .rate_min = 44100, 173565f04443SClemens Ladisch .rate_max = 96000, 173665f04443SClemens Ladisch .nr_rates = 4, 173765f04443SClemens Ladisch .rate_table = (unsigned int[]) { 173865f04443SClemens Ladisch 44100, 48000, 88200, 96000 173965f04443SClemens Ladisch } 174065f04443SClemens Ladisch } 1741fca5bca4SFelix Homann }, 1742fca5bca4SFelix Homann /* interface 3 (MIDI) is standard compliant */ 1743fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1744fca5bca4SFelix Homann } 1745fca5bca4SFelix Homann } 1746fca5bca4SFelix Homann }, 1747fca5bca4SFelix Homann { 1748c91d9cdaSDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081), 1749fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1750fca5bca4SFelix Homann /* .vendor_name = "M-Audio", */ 1751fca5bca4SFelix Homann /* .product_name = "Fast Track Ultra 8R", */ 1752fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1753fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 1754fca5bca4SFelix Homann { 1755fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 175665f04443SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 175765f04443SClemens Ladisch .channels = 8, 175865f04443SClemens Ladisch .iface = 1, 175965f04443SClemens Ladisch .altsetting = 1, 176065f04443SClemens Ladisch .altset_idx = 1, 176165f04443SClemens Ladisch .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 176265f04443SClemens Ladisch .endpoint = 0x01, 176365f04443SClemens Ladisch .ep_attr = 0x09, 176465f04443SClemens Ladisch .rates = SNDRV_PCM_RATE_44100 | 176565f04443SClemens Ladisch SNDRV_PCM_RATE_48000 | 176665f04443SClemens Ladisch SNDRV_PCM_RATE_88200 | 176765f04443SClemens Ladisch SNDRV_PCM_RATE_96000, 176865f04443SClemens Ladisch .rate_min = 44100, 176965f04443SClemens Ladisch .rate_max = 96000, 177065f04443SClemens Ladisch .nr_rates = 4, 177165f04443SClemens Ladisch .rate_table = (unsigned int[]) { 177265f04443SClemens Ladisch 44100, 48000, 88200, 96000 177365f04443SClemens Ladisch } 177465f04443SClemens Ladisch } 1775fca5bca4SFelix Homann }, 1776fca5bca4SFelix Homann { 1777fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 177865f04443SClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3LE, 177965f04443SClemens Ladisch .channels = 8, 178065f04443SClemens Ladisch .iface = 2, 178165f04443SClemens Ladisch .altsetting = 1, 178265f04443SClemens Ladisch .altset_idx = 1, 178365f04443SClemens Ladisch .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 178465f04443SClemens Ladisch .endpoint = 0x81, 178565f04443SClemens Ladisch .ep_attr = 0x05, 178665f04443SClemens Ladisch .rates = SNDRV_PCM_RATE_44100 | 178765f04443SClemens Ladisch SNDRV_PCM_RATE_48000 | 178865f04443SClemens Ladisch SNDRV_PCM_RATE_88200 | 178965f04443SClemens Ladisch SNDRV_PCM_RATE_96000, 179065f04443SClemens Ladisch .rate_min = 44100, 179165f04443SClemens Ladisch .rate_max = 96000, 179265f04443SClemens Ladisch .nr_rates = 4, 179365f04443SClemens Ladisch .rate_table = (unsigned int[]) { 179465f04443SClemens Ladisch 44100, 48000, 88200, 96000 179565f04443SClemens Ladisch } 179665f04443SClemens Ladisch } 1797fca5bca4SFelix Homann }, 1798fca5bca4SFelix Homann /* interface 3 (MIDI) is standard compliant */ 1799fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1800fca5bca4SFelix Homann } 1801fca5bca4SFelix Homann } 1802fca5bca4SFelix Homann }, 1803e5779998SDaniel Mack 1804e5779998SDaniel Mack /* Casio devices */ 1805e5779998SDaniel Mack { 1806e5779998SDaniel Mack USB_DEVICE(0x07cf, 0x6801), 1807fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1808e5779998SDaniel Mack .vendor_name = "Casio", 1809e5779998SDaniel Mack .product_name = "PL-40R", 1810fb2ed616STakashi Iwai QUIRK_DATA_MIDI_YAMAHA(0) 1811e5779998SDaniel Mack } 1812e5779998SDaniel Mack }, 1813e5779998SDaniel Mack { 1814e5779998SDaniel Mack /* this ID is used by several devices without a product ID */ 1815e5779998SDaniel Mack USB_DEVICE(0x07cf, 0x6802), 1816fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1817e5779998SDaniel Mack .vendor_name = "Casio", 1818e5779998SDaniel Mack .product_name = "Keyboard", 1819fb2ed616STakashi Iwai QUIRK_DATA_MIDI_YAMAHA(0) 1820e5779998SDaniel Mack } 1821e5779998SDaniel Mack }, 1822e5779998SDaniel Mack 1823e5779998SDaniel Mack /* Mark of the Unicorn devices */ 1824e5779998SDaniel Mack { 1825e5779998SDaniel Mack /* thanks to Robert A. Lerche <ral 'at' msbit.com> */ 1826e5779998SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_VENDOR | 1827e5779998SDaniel Mack USB_DEVICE_ID_MATCH_PRODUCT | 1828e5779998SDaniel Mack USB_DEVICE_ID_MATCH_DEV_SUBCLASS, 1829e5779998SDaniel Mack .idVendor = 0x07fd, 1830e5779998SDaniel Mack .idProduct = 0x0001, 1831e5779998SDaniel Mack .bDeviceSubClass = 2, 1832fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1833e5779998SDaniel Mack .vendor_name = "MOTU", 1834e5779998SDaniel Mack .product_name = "Fastlane", 1835fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1836fb2ed616STakashi Iwai { QUIRK_DATA_RAW_BYTES(0) }, 1837fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 1838fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1839e5779998SDaniel Mack } 1840e5779998SDaniel Mack } 1841e5779998SDaniel Mack }, 1842e5779998SDaniel Mack 1843e5779998SDaniel Mack /* Emagic devices */ 1844e5779998SDaniel Mack { 1845e5779998SDaniel Mack USB_DEVICE(0x086a, 0x0001), 1846fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1847e5779998SDaniel Mack .vendor_name = "Emagic", 1848861bee5aSStefan Sauer .product_name = "Unitor8", 1849fb2ed616STakashi Iwai QUIRK_DATA_MIDI_EMAGIC(2) { 1850e5779998SDaniel Mack .out_cables = 0x80ff, 1851e5779998SDaniel Mack .in_cables = 0x80ff 1852e5779998SDaniel Mack } 1853e5779998SDaniel Mack } 1854e5779998SDaniel Mack }, 1855e5779998SDaniel Mack { 1856e5779998SDaniel Mack USB_DEVICE(0x086a, 0x0002), 1857fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1858e5779998SDaniel Mack .vendor_name = "Emagic", 1859e5779998SDaniel Mack /* .product_name = "AMT8", */ 1860fb2ed616STakashi Iwai QUIRK_DATA_MIDI_EMAGIC(2) { 1861e5779998SDaniel Mack .out_cables = 0x80ff, 1862e5779998SDaniel Mack .in_cables = 0x80ff 1863e5779998SDaniel Mack } 1864e5779998SDaniel Mack } 1865e5779998SDaniel Mack }, 1866e5779998SDaniel Mack { 1867e5779998SDaniel Mack USB_DEVICE(0x086a, 0x0003), 1868fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1869e5779998SDaniel Mack .vendor_name = "Emagic", 1870e5779998SDaniel Mack /* .product_name = "MT4", */ 1871fb2ed616STakashi Iwai QUIRK_DATA_MIDI_EMAGIC(2) { 1872e5779998SDaniel Mack .out_cables = 0x800f, 1873e5779998SDaniel Mack .in_cables = 0x8003 1874e5779998SDaniel Mack } 1875e5779998SDaniel Mack } 1876e5779998SDaniel Mack }, 1877e5779998SDaniel Mack 187856a9eb1fSDaniel Mack /* KORG devices */ 187956a9eb1fSDaniel Mack { 188056a9eb1fSDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200), 1881fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 188256a9eb1fSDaniel Mack .vendor_name = "KORG, Inc.", 188356a9eb1fSDaniel Mack /* .product_name = "PANDORA PX5D", */ 1884fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 188556a9eb1fSDaniel Mack } 188656a9eb1fSDaniel Mack }, 188756a9eb1fSDaniel Mack 18881bba160aSSergiusz Urbaniak { 18891bba160aSSergiusz Urbaniak USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201), 1890fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 18911bba160aSSergiusz Urbaniak .vendor_name = "KORG, Inc.", 18921bba160aSSergiusz Urbaniak /* .product_name = "ToneLab ST", */ 1893fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 18941bba160aSSergiusz Urbaniak } 18951bba160aSSergiusz Urbaniak }, 18961bba160aSSergiusz Urbaniak 189764f40f9bSTakashi Iwai { 189864f40f9bSTakashi Iwai USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204), 1899fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 190064f40f9bSTakashi Iwai .vendor_name = "KORG, Inc.", 190164f40f9bSTakashi Iwai /* .product_name = "ToneLab EX", */ 1902fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 190364f40f9bSTakashi Iwai } 190464f40f9bSTakashi Iwai }, 190564f40f9bSTakashi Iwai 19064434ade8SKrzysztof Foltman /* AKAI devices */ 19074434ade8SKrzysztof Foltman { 19084434ade8SKrzysztof Foltman USB_DEVICE(0x09e8, 0x0062), 1909fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 19104434ade8SKrzysztof Foltman .vendor_name = "AKAI", 19114434ade8SKrzysztof Foltman .product_name = "MPD16", 19124434ade8SKrzysztof Foltman .ifnum = 0, 19134434ade8SKrzysztof Foltman .type = QUIRK_MIDI_AKAI, 19144434ade8SKrzysztof Foltman } 19154434ade8SKrzysztof Foltman }, 19164434ade8SKrzysztof Foltman 1917e9f49369SPaul Bonser { 1918e9f49369SPaul Bonser /* Akai MPC Element */ 1919e9f49369SPaul Bonser USB_DEVICE(0x09e8, 0x0021), 1920fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1921fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1922fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 1923fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIDI(1) }, 1924fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 1925e9f49369SPaul Bonser } 1926e9f49369SPaul Bonser } 1927e9f49369SPaul Bonser }, 1928e9f49369SPaul Bonser 19290689a86aSDominic Sacré /* Steinberg devices */ 19300689a86aSDominic Sacré { 19310689a86aSDominic Sacré /* Steinberg MI2 */ 19320689a86aSDominic Sacré USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040), 1933fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1934fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1935fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1936fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1937fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 19380689a86aSDominic Sacré { 1939fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 19400689a86aSDominic Sacré .out_cables = 0x0001, 19410689a86aSDominic Sacré .in_cables = 0x0001 19420689a86aSDominic Sacré } 19430689a86aSDominic Sacré }, 1944fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 19450689a86aSDominic Sacré } 19460689a86aSDominic Sacré } 19470689a86aSDominic Sacré }, 19480689a86aSDominic Sacré { 19490689a86aSDominic Sacré /* Steinberg MI4 */ 19500689a86aSDominic Sacré USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040), 1951fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1952fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 1953fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 1954fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 1955fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 19560689a86aSDominic Sacré { 1957fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 19580689a86aSDominic Sacré .out_cables = 0x0001, 19590689a86aSDominic Sacré .in_cables = 0x0001 19600689a86aSDominic Sacré } 19610689a86aSDominic Sacré }, 1962fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 19630689a86aSDominic Sacré } 19640689a86aSDominic Sacré } 19650689a86aSDominic Sacré }, 19660689a86aSDominic Sacré 1967e5779998SDaniel Mack /* TerraTec devices */ 1968e5779998SDaniel Mack { 1969e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), 1970fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1971e5779998SDaniel Mack .vendor_name = "TerraTec", 1972e5779998SDaniel Mack .product_name = "PHASE 26", 1973fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 1974e5779998SDaniel Mack } 1975e5779998SDaniel Mack }, 1976e5779998SDaniel Mack { 1977e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), 1978fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1979e5779998SDaniel Mack .vendor_name = "TerraTec", 1980e5779998SDaniel Mack .product_name = "PHASE 26", 1981fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 1982e5779998SDaniel Mack } 1983e5779998SDaniel Mack }, 1984e5779998SDaniel Mack { 1985e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014), 1986fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1987e5779998SDaniel Mack .vendor_name = "TerraTec", 1988e5779998SDaniel Mack .product_name = "PHASE 26", 1989fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(3) 1990e5779998SDaniel Mack } 1991e5779998SDaniel Mack }, 1992e5779998SDaniel Mack { 1993e5779998SDaniel Mack USB_DEVICE(0x0ccd, 0x0035), 1994fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 1995e5779998SDaniel Mack .vendor_name = "Miditech", 1996e5779998SDaniel Mack .product_name = "Play'n Roll", 1997e5779998SDaniel Mack .ifnum = 0, 1998e5779998SDaniel Mack .type = QUIRK_MIDI_CME 1999e5779998SDaniel Mack } 2000e5779998SDaniel Mack }, 2001e5779998SDaniel Mack 2002a59ee703STakashi Iwai /* Stanton ScratchAmp */ 2003a59ee703STakashi Iwai { USB_DEVICE(0x103d, 0x0100) }, 2004a59ee703STakashi Iwai { USB_DEVICE(0x103d, 0x0101) }, 2005a59ee703STakashi Iwai 2006e5779998SDaniel Mack /* Novation EMS devices */ 2007e5779998SDaniel Mack { 2008e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001), 2009fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2010e5779998SDaniel Mack .vendor_name = "Novation", 2011e5779998SDaniel Mack .product_name = "ReMOTE Audio/XStation", 2012e5779998SDaniel Mack .ifnum = 4, 2013e5779998SDaniel Mack .type = QUIRK_MIDI_NOVATION 2014e5779998SDaniel Mack } 2015e5779998SDaniel Mack }, 2016e5779998SDaniel Mack { 2017e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002), 2018fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2019e5779998SDaniel Mack .vendor_name = "Novation", 2020e5779998SDaniel Mack .product_name = "Speedio", 2021e5779998SDaniel Mack .ifnum = 3, 2022e5779998SDaniel Mack .type = QUIRK_MIDI_NOVATION 2023e5779998SDaniel Mack } 2024e5779998SDaniel Mack }, 2025e5779998SDaniel Mack { 2026dab99817SRicard Wanderlof USB_DEVICE(0x1235, 0x000a), 2027fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2028dab99817SRicard Wanderlof /* .vendor_name = "Novation", */ 2029dab99817SRicard Wanderlof /* .product_name = "Nocturn", */ 2030fb2ed616STakashi Iwai QUIRK_DATA_RAW_BYTES(0) 2031dab99817SRicard Wanderlof } 2032dab99817SRicard Wanderlof }, 2033dab99817SRicard Wanderlof { 2034c7f57216SClemens Ladisch USB_DEVICE(0x1235, 0x000e), 2035fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2036c7f57216SClemens Ladisch /* .vendor_name = "Novation", */ 2037c7f57216SClemens Ladisch /* .product_name = "Launchpad", */ 2038fb2ed616STakashi Iwai QUIRK_DATA_RAW_BYTES(0) 2039c7f57216SClemens Ladisch } 2040c7f57216SClemens Ladisch }, 2041c7f57216SClemens Ladisch { 2042358b7dfaSDaniel Mack USB_DEVICE(0x1235, 0x0010), 2043fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2044358b7dfaSDaniel Mack .vendor_name = "Focusrite", 2045358b7dfaSDaniel Mack .product_name = "Saffire 6 USB", 2046fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2047fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2048358b7dfaSDaniel Mack { 2049fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2050358b7dfaSDaniel Mack .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2051358b7dfaSDaniel Mack .channels = 4, 2052358b7dfaSDaniel Mack .iface = 0, 2053358b7dfaSDaniel Mack .altsetting = 1, 2054358b7dfaSDaniel Mack .altset_idx = 1, 2055358b7dfaSDaniel Mack .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 2056358b7dfaSDaniel Mack .endpoint = 0x01, 2057358b7dfaSDaniel Mack .ep_attr = USB_ENDPOINT_XFER_ISOC, 2058470757f5SAlexander Tsoy .datainterval = 1, 2059470757f5SAlexander Tsoy .maxpacksize = 0x024c, 2060470757f5SAlexander Tsoy .rates = SNDRV_PCM_RATE_44100 | 2061470757f5SAlexander Tsoy SNDRV_PCM_RATE_48000, 2062470757f5SAlexander Tsoy .rate_min = 44100, 2063470757f5SAlexander Tsoy .rate_max = 48000, 2064470757f5SAlexander Tsoy .nr_rates = 2, 2065470757f5SAlexander Tsoy .rate_table = (unsigned int[]) { 2066470757f5SAlexander Tsoy 44100, 48000 2067e0469d65STakashi Iwai }, 2068e0469d65STakashi Iwai .sync_ep = 0x82, 2069e0469d65STakashi Iwai .sync_iface = 0, 2070e0469d65STakashi Iwai .sync_altsetting = 1, 2071e0469d65STakashi Iwai .sync_ep_idx = 1, 2072e0469d65STakashi Iwai .implicit_fb = 1, 2073470757f5SAlexander Tsoy } 2074470757f5SAlexander Tsoy }, 2075470757f5SAlexander Tsoy { 2076fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2077470757f5SAlexander Tsoy .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2078470757f5SAlexander Tsoy .channels = 2, 2079470757f5SAlexander Tsoy .iface = 0, 2080470757f5SAlexander Tsoy .altsetting = 1, 2081470757f5SAlexander Tsoy .altset_idx = 1, 2082470757f5SAlexander Tsoy .attributes = 0, 2083470757f5SAlexander Tsoy .endpoint = 0x82, 20847b0efea4STakashi Iwai .ep_idx = 1, 2085470757f5SAlexander Tsoy .ep_attr = USB_ENDPOINT_XFER_ISOC, 2086470757f5SAlexander Tsoy .datainterval = 1, 2087470757f5SAlexander Tsoy .maxpacksize = 0x0126, 2088358b7dfaSDaniel Mack .rates = SNDRV_PCM_RATE_44100 | 2089358b7dfaSDaniel Mack SNDRV_PCM_RATE_48000, 2090358b7dfaSDaniel Mack .rate_min = 44100, 2091358b7dfaSDaniel Mack .rate_max = 48000, 2092358b7dfaSDaniel Mack .nr_rates = 2, 2093358b7dfaSDaniel Mack .rate_table = (unsigned int[]) { 2094358b7dfaSDaniel Mack 44100, 48000 2095358b7dfaSDaniel Mack } 2096358b7dfaSDaniel Mack } 2097358b7dfaSDaniel Mack }, 2098fb2ed616STakashi Iwai { QUIRK_DATA_RAW_BYTES(1) }, 2099fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2100358b7dfaSDaniel Mack } 2101358b7dfaSDaniel Mack } 2102358b7dfaSDaniel Mack }, 2103358b7dfaSDaniel Mack { 21045e212332SMark Hills USB_DEVICE(0x1235, 0x0018), 2105fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 21065e212332SMark Hills .vendor_name = "Novation", 21075e212332SMark Hills .product_name = "Twitch", 2108fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 21095e212332SMark Hills { 2110fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 21115e212332SMark Hills .formats = SNDRV_PCM_FMTBIT_S24_3LE, 21125e212332SMark Hills .channels = 4, 21135e212332SMark Hills .iface = 0, 21145e212332SMark Hills .altsetting = 1, 21155e212332SMark Hills .altset_idx = 1, 21165e212332SMark Hills .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 21175e212332SMark Hills .endpoint = 0x01, 21185e212332SMark Hills .ep_attr = USB_ENDPOINT_XFER_ISOC, 21195e212332SMark Hills .rates = SNDRV_PCM_RATE_44100 | 21205e212332SMark Hills SNDRV_PCM_RATE_48000, 21215e212332SMark Hills .rate_min = 44100, 21225e212332SMark Hills .rate_max = 48000, 21235e212332SMark Hills .nr_rates = 2, 21245e212332SMark Hills .rate_table = (unsigned int[]) { 21255e212332SMark Hills 44100, 48000 21265e212332SMark Hills } 21275e212332SMark Hills } 21285e212332SMark Hills }, 2129fb2ed616STakashi Iwai { QUIRK_DATA_RAW_BYTES(1) }, 2130fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 21315e212332SMark Hills } 21325e212332SMark Hills } 21335e212332SMark Hills }, 21345e212332SMark Hills { 2135e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661), 2136fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2137e5779998SDaniel Mack .vendor_name = "Novation", 2138e5779998SDaniel Mack .product_name = "ReMOTE25", 2139e5779998SDaniel Mack .ifnum = 0, 2140e5779998SDaniel Mack .type = QUIRK_MIDI_NOVATION 2141e5779998SDaniel Mack } 2142e5779998SDaniel Mack }, 2143e5779998SDaniel Mack 2144e5779998SDaniel Mack /* Access Music devices */ 2145e5779998SDaniel Mack { 2146e5779998SDaniel Mack /* VirusTI Desktop */ 2147e5779998SDaniel Mack USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815), 2148fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2149fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2150e5779998SDaniel Mack { 2151fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 2152e5779998SDaniel Mack .out_cables = 0x0003, 2153e5779998SDaniel Mack .in_cables = 0x0003 2154e5779998SDaniel Mack } 2155e5779998SDaniel Mack }, 2156fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(4) }, 2157fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2158e5779998SDaniel Mack } 2159e5779998SDaniel Mack } 2160e5779998SDaniel Mack }, 2161e5779998SDaniel Mack 216254a8c500SDaniel Mack /* Native Instruments MK2 series */ 216354a8c500SDaniel Mack { 2164759e890fSDaniel Mack /* Komplete Audio 6 */ 21659cdc3529SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_DEVICE, 21669cdc3529SDaniel Mack .idVendor = 0x17cc, 21679cdc3529SDaniel Mack .idProduct = 0x1000, 21689cdc3529SDaniel Mack }, 21699cdc3529SDaniel Mack { 217054a8c500SDaniel Mack /* Traktor Audio 6 */ 217154a8c500SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_DEVICE, 217254a8c500SDaniel Mack .idVendor = 0x17cc, 217354a8c500SDaniel Mack .idProduct = 0x1010, 217454a8c500SDaniel Mack }, 217554a8c500SDaniel Mack { 217654a8c500SDaniel Mack /* Traktor Audio 10 */ 217754a8c500SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_DEVICE, 217854a8c500SDaniel Mack .idVendor = 0x17cc, 217954a8c500SDaniel Mack .idProduct = 0x1020, 218054a8c500SDaniel Mack }, 218154a8c500SDaniel Mack 21821ca8b201SClemens Ladisch /* QinHeng devices */ 21831ca8b201SClemens Ladisch { 21841ca8b201SClemens Ladisch USB_DEVICE(0x1a86, 0x752d), 2185fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 21861ca8b201SClemens Ladisch .vendor_name = "QinHeng", 21871ca8b201SClemens Ladisch .product_name = "CH345", 21881ca8b201SClemens Ladisch .ifnum = 1, 21891ca8b201SClemens Ladisch .type = QUIRK_MIDI_CH345 21901ca8b201SClemens Ladisch } 21911ca8b201SClemens Ladisch }, 21921ca8b201SClemens Ladisch 219302651d1aSMiller Puckette /* KeithMcMillen Stringport */ 219414b51ccdSTakashi Iwai { USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: should be more restrictive matching */ 219502651d1aSMiller Puckette 2196e5779998SDaniel Mack /* Miditech devices */ 2197e5779998SDaniel Mack { 2198e5779998SDaniel Mack USB_DEVICE(0x4752, 0x0011), 2199fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2200e5779998SDaniel Mack .vendor_name = "Miditech", 2201e5779998SDaniel Mack .product_name = "Midistart-2", 2202e5779998SDaniel Mack .ifnum = 0, 2203e5779998SDaniel Mack .type = QUIRK_MIDI_CME 2204e5779998SDaniel Mack } 2205e5779998SDaniel Mack }, 2206e5779998SDaniel Mack 2207e5779998SDaniel Mack /* Central Music devices */ 2208e5779998SDaniel Mack { 2209e5779998SDaniel Mack /* this ID used by both Miditech MidiStudio-2 and CME UF-x */ 2210e5779998SDaniel Mack USB_DEVICE(0x7104, 0x2202), 2211fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2212e5779998SDaniel Mack .ifnum = 0, 2213e5779998SDaniel Mack .type = QUIRK_MIDI_CME 2214e5779998SDaniel Mack } 2215e5779998SDaniel Mack }, 2216e5779998SDaniel Mack 2217e5779998SDaniel Mack /* Digidesign Mbox */ 2218e5779998SDaniel Mack { 2219e5779998SDaniel Mack /* Thanks to Clemens Ladisch <clemens@ladisch.de> */ 2220e5779998SDaniel Mack USB_DEVICE(0x0dba, 0x1000), 2221fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2222e5779998SDaniel Mack .vendor_name = "Digidesign", 2223e5779998SDaniel Mack .product_name = "MBox", 2224fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE{ 2225fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2226e5779998SDaniel Mack { 2227fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 222829088fefSClemens Ladisch .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2229e5779998SDaniel Mack .channels = 2, 2230e5779998SDaniel Mack .iface = 1, 2231e5779998SDaniel Mack .altsetting = 1, 2232e5779998SDaniel Mack .altset_idx = 1, 2233c63fcb9bSDamien Zammit .attributes = 0x4, 2234e5779998SDaniel Mack .endpoint = 0x02, 2235c63fcb9bSDamien Zammit .ep_attr = USB_ENDPOINT_XFER_ISOC | 2236c63fcb9bSDamien Zammit USB_ENDPOINT_SYNC_SYNC, 2237c63fcb9bSDamien Zammit .maxpacksize = 0x130, 2238c63fcb9bSDamien Zammit .rates = SNDRV_PCM_RATE_48000, 2239c63fcb9bSDamien Zammit .rate_min = 48000, 2240e5779998SDaniel Mack .rate_max = 48000, 2241c63fcb9bSDamien Zammit .nr_rates = 1, 2242e5779998SDaniel Mack .rate_table = (unsigned int[]) { 2243c63fcb9bSDamien Zammit 48000 2244c63fcb9bSDamien Zammit } 2245c63fcb9bSDamien Zammit } 2246c63fcb9bSDamien Zammit }, 2247c63fcb9bSDamien Zammit { 2248fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 2249c63fcb9bSDamien Zammit .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2250c63fcb9bSDamien Zammit .channels = 2, 2251c63fcb9bSDamien Zammit .iface = 1, 2252c63fcb9bSDamien Zammit .altsetting = 1, 2253c63fcb9bSDamien Zammit .altset_idx = 1, 2254c63fcb9bSDamien Zammit .attributes = 0x4, 2255c63fcb9bSDamien Zammit .endpoint = 0x81, 22567b0efea4STakashi Iwai .ep_idx = 1, 2257c63fcb9bSDamien Zammit .ep_attr = USB_ENDPOINT_XFER_ISOC | 2258c63fcb9bSDamien Zammit USB_ENDPOINT_SYNC_ASYNC, 2259c63fcb9bSDamien Zammit .maxpacksize = 0x130, 2260c63fcb9bSDamien Zammit .rates = SNDRV_PCM_RATE_48000, 2261c63fcb9bSDamien Zammit .rate_min = 48000, 2262c63fcb9bSDamien Zammit .rate_max = 48000, 2263c63fcb9bSDamien Zammit .nr_rates = 1, 2264c63fcb9bSDamien Zammit .rate_table = (unsigned int[]) { 2265c63fcb9bSDamien Zammit 48000 2266e5779998SDaniel Mack } 2267e5779998SDaniel Mack } 2268e5779998SDaniel Mack }, 2269fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2270e5779998SDaniel Mack } 2271e5779998SDaniel Mack } 2272e5779998SDaniel Mack }, 2273cb99864dSDamien Zammit 2274cb99864dSDamien Zammit /* DIGIDESIGN MBOX 2 */ 2275cb99864dSDamien Zammit { 2276cb99864dSDamien Zammit USB_DEVICE(0x0dba, 0x3000), 2277fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2278cb99864dSDamien Zammit .vendor_name = "Digidesign", 2279cb99864dSDamien Zammit .product_name = "Mbox 2", 2280fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2281fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 2282fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 2283cb99864dSDamien Zammit { 2284fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 2285cb99864dSDamien Zammit .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2286cb99864dSDamien Zammit .channels = 2, 2287cb99864dSDamien Zammit .iface = 2, 2288cb99864dSDamien Zammit .altsetting = 2, 2289cb99864dSDamien Zammit .altset_idx = 1, 2290cb99864dSDamien Zammit .attributes = 0x00, 2291cb99864dSDamien Zammit .endpoint = 0x03, 2292cb99864dSDamien Zammit .ep_attr = USB_ENDPOINT_SYNC_ASYNC, 2293cb99864dSDamien Zammit .rates = SNDRV_PCM_RATE_48000, 2294cb99864dSDamien Zammit .rate_min = 48000, 2295cb99864dSDamien Zammit .rate_max = 48000, 2296cb99864dSDamien Zammit .nr_rates = 1, 2297cb99864dSDamien Zammit .rate_table = (unsigned int[]) { 2298cb99864dSDamien Zammit 48000 2299cb99864dSDamien Zammit } 2300cb99864dSDamien Zammit } 2301cb99864dSDamien Zammit }, 2302fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(3) }, 2303cb99864dSDamien Zammit { 2304fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(4) { 2305cb99864dSDamien Zammit .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2306cb99864dSDamien Zammit .channels = 2, 2307cb99864dSDamien Zammit .iface = 4, 2308cb99864dSDamien Zammit .altsetting = 2, 2309cb99864dSDamien Zammit .altset_idx = 1, 2310cb99864dSDamien Zammit .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 2311cb99864dSDamien Zammit .endpoint = 0x85, 2312cb99864dSDamien Zammit .ep_attr = USB_ENDPOINT_SYNC_SYNC, 2313cb99864dSDamien Zammit .rates = SNDRV_PCM_RATE_48000, 2314cb99864dSDamien Zammit .rate_min = 48000, 2315cb99864dSDamien Zammit .rate_max = 48000, 2316cb99864dSDamien Zammit .nr_rates = 1, 2317cb99864dSDamien Zammit .rate_table = (unsigned int[]) { 2318cb99864dSDamien Zammit 48000 2319cb99864dSDamien Zammit } 2320cb99864dSDamien Zammit } 2321cb99864dSDamien Zammit }, 2322fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(5) }, 2323cb99864dSDamien Zammit { 2324fb2ed616STakashi Iwai QUIRK_DATA_MIDI_MIDIMAN(6) { 2325cb99864dSDamien Zammit .out_ep = 0x02, 2326cb99864dSDamien Zammit .out_cables = 0x0001, 2327cb99864dSDamien Zammit .in_ep = 0x81, 2328cb99864dSDamien Zammit .in_interval = 0x01, 2329cb99864dSDamien Zammit .in_cables = 0x0001 2330cb99864dSDamien Zammit } 2331cb99864dSDamien Zammit }, 2332fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2333cb99864dSDamien Zammit } 2334cb99864dSDamien Zammit } 2335cb99864dSDamien Zammit }, 2336b01104fcSConner Knox /* DIGIDESIGN MBOX 3 */ 2337b01104fcSConner Knox { 2338b01104fcSConner Knox USB_DEVICE(0x0dba, 0x5000), 2339fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2340b01104fcSConner Knox .vendor_name = "Digidesign", 2341b01104fcSConner Knox .product_name = "Mbox 3", 2342fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2343fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 2344fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, 2345b01104fcSConner Knox { 2346fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 2347b01104fcSConner Knox .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2348b01104fcSConner Knox .channels = 4, 2349b01104fcSConner Knox .iface = 2, 2350b01104fcSConner Knox .altsetting = 1, 2351b01104fcSConner Knox .altset_idx = 1, 2352b01104fcSConner Knox .attributes = 0x00, 2353b01104fcSConner Knox .endpoint = 0x01, 2354b01104fcSConner Knox .ep_attr = USB_ENDPOINT_XFER_ISOC | 2355b01104fcSConner Knox USB_ENDPOINT_SYNC_ASYNC, 2356b01104fcSConner Knox .rates = SNDRV_PCM_RATE_48000, 2357b01104fcSConner Knox .rate_min = 48000, 2358b01104fcSConner Knox .rate_max = 48000, 2359b01104fcSConner Knox .nr_rates = 1, 2360b01104fcSConner Knox .rate_table = (unsigned int[]) { 2361b01104fcSConner Knox 48000 2362b01104fcSConner Knox } 2363b01104fcSConner Knox } 2364b01104fcSConner Knox }, 2365b01104fcSConner Knox { 2366fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 2367b01104fcSConner Knox .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2368b01104fcSConner Knox .channels = 4, 2369b01104fcSConner Knox .iface = 3, 2370b01104fcSConner Knox .altsetting = 1, 2371b01104fcSConner Knox .altset_idx = 1, 2372b01104fcSConner Knox .endpoint = 0x81, 2373b01104fcSConner Knox .attributes = 0x00, 2374b01104fcSConner Knox .ep_attr = USB_ENDPOINT_XFER_ISOC | 2375b01104fcSConner Knox USB_ENDPOINT_SYNC_ASYNC, 2376b01104fcSConner Knox .maxpacksize = 0x009c, 2377b01104fcSConner Knox .rates = SNDRV_PCM_RATE_48000, 2378b01104fcSConner Knox .rate_min = 48000, 2379b01104fcSConner Knox .rate_max = 48000, 2380b01104fcSConner Knox .nr_rates = 1, 2381b01104fcSConner Knox .rate_table = (unsigned int[]) { 2382b01104fcSConner Knox 48000 2383b01104fcSConner Knox } 2384b01104fcSConner Knox } 2385b01104fcSConner Knox }, 2386b01104fcSConner Knox { 2387fb2ed616STakashi Iwai QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) { 2388b01104fcSConner Knox .out_cables = 0x0001, 2389b01104fcSConner Knox .in_cables = 0x0001 2390b01104fcSConner Knox } 2391b01104fcSConner Knox }, 2392fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2393b01104fcSConner Knox } 2394b01104fcSConner Knox } 2395b01104fcSConner Knox }, 2396613769fcSOto Petřík { 2397613769fcSOto Petřík /* Tascam US122 MKII - playback-only support */ 239814b51ccdSTakashi Iwai USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021), 2399fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2400613769fcSOto Petřík .vendor_name = "TASCAM", 2401613769fcSOto Petřík .product_name = "US122 MKII", 2402fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2403fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 2404613769fcSOto Petřík { 2405fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 2406613769fcSOto Petřík .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2407613769fcSOto Petřík .channels = 2, 2408613769fcSOto Petřík .iface = 1, 2409613769fcSOto Petřík .altsetting = 1, 2410613769fcSOto Petřík .altset_idx = 1, 2411613769fcSOto Petřík .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 2412613769fcSOto Petřík .endpoint = 0x02, 2413613769fcSOto Petřík .ep_attr = USB_ENDPOINT_XFER_ISOC, 2414613769fcSOto Petřík .rates = SNDRV_PCM_RATE_44100 | 2415613769fcSOto Petřík SNDRV_PCM_RATE_48000 | 2416613769fcSOto Petřík SNDRV_PCM_RATE_88200 | 2417613769fcSOto Petřík SNDRV_PCM_RATE_96000, 2418613769fcSOto Petřík .rate_min = 44100, 2419613769fcSOto Petřík .rate_max = 96000, 2420613769fcSOto Petřík .nr_rates = 4, 2421613769fcSOto Petřík .rate_table = (unsigned int[]) { 2422613769fcSOto Petřík 44100, 48000, 88200, 96000 2423613769fcSOto Petřík } 2424613769fcSOto Petřík } 2425613769fcSOto Petřík }, 2426fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2427613769fcSOto Petřík } 2428613769fcSOto Petřík } 2429613769fcSOto Petřík }, 2430e5779998SDaniel Mack 24317fdabab8SDamien Zammit /* Denon DN-X1600 */ 24327fdabab8SDamien Zammit { 24337fdabab8SDamien Zammit USB_AUDIO_DEVICE(0x154e, 0x500e), 2434fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 24357fdabab8SDamien Zammit .vendor_name = "Denon", 24367fdabab8SDamien Zammit .product_name = "DN-X1600", 2437fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE{ 2438fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 24397fdabab8SDamien Zammit { 2440fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 24417fdabab8SDamien Zammit .formats = SNDRV_PCM_FMTBIT_S24_3LE, 24427fdabab8SDamien Zammit .channels = 8, 24437fdabab8SDamien Zammit .iface = 1, 24447fdabab8SDamien Zammit .altsetting = 1, 24457fdabab8SDamien Zammit .altset_idx = 1, 24467fdabab8SDamien Zammit .attributes = 0x0, 24477fdabab8SDamien Zammit .endpoint = 0x01, 24487fdabab8SDamien Zammit .ep_attr = USB_ENDPOINT_XFER_ISOC | 24497fdabab8SDamien Zammit USB_ENDPOINT_SYNC_ADAPTIVE, 24507fdabab8SDamien Zammit .maxpacksize = 0x138, 24517fdabab8SDamien Zammit .rates = SNDRV_PCM_RATE_48000, 24527fdabab8SDamien Zammit .rate_min = 48000, 24537fdabab8SDamien Zammit .rate_max = 48000, 24547fdabab8SDamien Zammit .nr_rates = 1, 24557fdabab8SDamien Zammit .rate_table = (unsigned int[]) { 24567fdabab8SDamien Zammit 48000 24577fdabab8SDamien Zammit } 24587fdabab8SDamien Zammit } 24597fdabab8SDamien Zammit }, 24607fdabab8SDamien Zammit { 2461fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 24627fdabab8SDamien Zammit .formats = SNDRV_PCM_FMTBIT_S24_3LE, 24637fdabab8SDamien Zammit .channels = 8, 24647fdabab8SDamien Zammit .iface = 2, 24657fdabab8SDamien Zammit .altsetting = 1, 24667fdabab8SDamien Zammit .altset_idx = 1, 24677fdabab8SDamien Zammit .attributes = 0x0, 24687fdabab8SDamien Zammit .endpoint = 0x85, 24697fdabab8SDamien Zammit .ep_attr = USB_ENDPOINT_XFER_ISOC | 24707fdabab8SDamien Zammit USB_ENDPOINT_SYNC_ADAPTIVE, 24717fdabab8SDamien Zammit .maxpacksize = 0x138, 24727fdabab8SDamien Zammit .rates = SNDRV_PCM_RATE_48000, 24737fdabab8SDamien Zammit .rate_min = 48000, 24747fdabab8SDamien Zammit .rate_max = 48000, 24757fdabab8SDamien Zammit .nr_rates = 1, 24767fdabab8SDamien Zammit .rate_table = (unsigned int[]) { 24777fdabab8SDamien Zammit 48000 24787fdabab8SDamien Zammit } 24797fdabab8SDamien Zammit } 24807fdabab8SDamien Zammit }, 2481fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIDI(4) }, 2482fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 24837fdabab8SDamien Zammit } 24847fdabab8SDamien Zammit } 24857fdabab8SDamien Zammit }, 24867fdabab8SDamien Zammit 2487c05fce58SMarko Friedemann /* Microsoft XboxLive Headset/Xbox Communicator */ 2488c05fce58SMarko Friedemann { 2489c05fce58SMarko Friedemann USB_DEVICE(0x045e, 0x0283), 2490c05fce58SMarko Friedemann .bInterfaceClass = USB_CLASS_PER_INTERFACE, 2491fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2492c05fce58SMarko Friedemann .vendor_name = "Microsoft", 2493c05fce58SMarko Friedemann .product_name = "XboxLive Headset/Xbox Communicator", 2494fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2495c05fce58SMarko Friedemann { 2496c05fce58SMarko Friedemann /* playback */ 2497fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2498c05fce58SMarko Friedemann .formats = SNDRV_PCM_FMTBIT_S16_LE, 2499c05fce58SMarko Friedemann .channels = 1, 2500c05fce58SMarko Friedemann .iface = 0, 2501c05fce58SMarko Friedemann .altsetting = 0, 2502c05fce58SMarko Friedemann .altset_idx = 0, 2503c05fce58SMarko Friedemann .attributes = 0, 2504c05fce58SMarko Friedemann .endpoint = 0x04, 2505c05fce58SMarko Friedemann .ep_attr = 0x05, 2506c05fce58SMarko Friedemann .rates = SNDRV_PCM_RATE_CONTINUOUS, 2507c05fce58SMarko Friedemann .rate_min = 22050, 2508c05fce58SMarko Friedemann .rate_max = 22050 2509c05fce58SMarko Friedemann } 2510c05fce58SMarko Friedemann }, 2511c05fce58SMarko Friedemann { 2512c05fce58SMarko Friedemann /* capture */ 2513fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 2514c05fce58SMarko Friedemann .formats = SNDRV_PCM_FMTBIT_S16_LE, 2515c05fce58SMarko Friedemann .channels = 1, 2516c05fce58SMarko Friedemann .iface = 1, 2517c05fce58SMarko Friedemann .altsetting = 0, 2518c05fce58SMarko Friedemann .altset_idx = 0, 2519c05fce58SMarko Friedemann .attributes = 0, 2520c05fce58SMarko Friedemann .endpoint = 0x85, 2521c05fce58SMarko Friedemann .ep_attr = 0x05, 2522c05fce58SMarko Friedemann .rates = SNDRV_PCM_RATE_CONTINUOUS, 2523c05fce58SMarko Friedemann .rate_min = 16000, 2524c05fce58SMarko Friedemann .rate_max = 16000 2525c05fce58SMarko Friedemann } 2526c05fce58SMarko Friedemann }, 2527fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2528c05fce58SMarko Friedemann } 2529c05fce58SMarko Friedemann } 2530c05fce58SMarko Friedemann }, 2531c05fce58SMarko Friedemann 2532c9024668SDidier Villevalois /* Reloop Play */ 2533c9024668SDidier Villevalois { 2534c9024668SDidier Villevalois USB_DEVICE(0x200c, 0x100b), 2535c9024668SDidier Villevalois .bInterfaceClass = USB_CLASS_PER_INTERFACE, 2536fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2537fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2538fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2539c9024668SDidier Villevalois { 2540fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 2541c9024668SDidier Villevalois .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2542c9024668SDidier Villevalois .channels = 4, 2543c9024668SDidier Villevalois .iface = 1, 2544c9024668SDidier Villevalois .altsetting = 1, 2545c9024668SDidier Villevalois .altset_idx = 1, 2546c9024668SDidier Villevalois .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, 2547c9024668SDidier Villevalois .endpoint = 0x01, 2548c9024668SDidier Villevalois .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE, 2549c9024668SDidier Villevalois .rates = SNDRV_PCM_RATE_44100 | 2550c9024668SDidier Villevalois SNDRV_PCM_RATE_48000, 2551c9024668SDidier Villevalois .rate_min = 44100, 2552c9024668SDidier Villevalois .rate_max = 48000, 2553c9024668SDidier Villevalois .nr_rates = 2, 2554c9024668SDidier Villevalois .rate_table = (unsigned int[]) { 2555c9024668SDidier Villevalois 44100, 48000 2556c9024668SDidier Villevalois } 2557c9024668SDidier Villevalois } 2558c9024668SDidier Villevalois }, 2559fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2560c9024668SDidier Villevalois } 2561c9024668SDidier Villevalois } 2562c9024668SDidier Villevalois }, 2563c9024668SDidier Villevalois 2564e5779998SDaniel Mack { 2565e5779998SDaniel Mack /* 2566dacacb0aSPanu Matilainen * ZOOM R16/24 in audio interface mode. 2567e0570446SRicard Wanderlof * Playback requires an extra four byte LE length indicator 2568e0570446SRicard Wanderlof * at the start of each isochronous packet. This quirk is 2569e0570446SRicard Wanderlof * enabled in create_standard_audio_quirk(). 2570dacacb0aSPanu Matilainen */ 2571dacacb0aSPanu Matilainen USB_DEVICE(0x1686, 0x00dd), 2572fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2573fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2574fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, /* Playback */ 2575fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, /* Capture */ 2576fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIDI(3) }, /* Midi */ 2577fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2578dacacb0aSPanu Matilainen } 2579dacacb0aSPanu Matilainen } 2580dacacb0aSPanu Matilainen }, 2581dacacb0aSPanu Matilainen 2582dacacb0aSPanu Matilainen { 2583dacacb0aSPanu Matilainen /* 2584e5779998SDaniel Mack * Some USB MIDI devices don't have an audio control interface, 2585e5779998SDaniel Mack * so we have to grab MIDI streaming interfaces here. 2586e5779998SDaniel Mack */ 2587e5779998SDaniel Mack .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | 2588e5779998SDaniel Mack USB_DEVICE_ID_MATCH_INT_SUBCLASS, 2589e5779998SDaniel Mack .bInterfaceClass = USB_CLASS_AUDIO, 2590e5779998SDaniel Mack .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING, 2591fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2592fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_MIDI(QUIRK_ANY_INTERFACE) 2593e5779998SDaniel Mack } 2594e5779998SDaniel Mack }, 2595e5779998SDaniel Mack 25965c62383cSTakashi Iwai /* Rane SL-1 */ 25975c62383cSTakashi Iwai { 25985c62383cSTakashi Iwai USB_DEVICE(0x13e5, 0x0001), 2599fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2600fb2ed616STakashi Iwai QUIRK_DATA_STANDARD_AUDIO(QUIRK_ANY_INTERFACE) 26015c62383cSTakashi Iwai } 26025c62383cSTakashi Iwai }, 26035c62383cSTakashi Iwai 26045ebf6b1eSTakashi Iwai /* disabled due to regression for other devices; 26055ebf6b1eSTakashi Iwai * see https://bugzilla.kernel.org/show_bug.cgi?id=199905 26065ebf6b1eSTakashi Iwai */ 26075ebf6b1eSTakashi Iwai #if 0 260833193dcaSMartin Peres { 260933193dcaSMartin Peres /* 261033193dcaSMartin Peres * Nura's first gen headphones use Cambridge Silicon Radio's vendor 261133193dcaSMartin Peres * ID, but it looks like the product ID actually is only for Nura. 261233193dcaSMartin Peres * The capture interface does not work at all (even on Windows), 261333193dcaSMartin Peres * and only the 48 kHz sample rate works for the playback interface. 261433193dcaSMartin Peres */ 261533193dcaSMartin Peres USB_DEVICE(0x0a12, 0x1243), 2616fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2617fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2618fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2619fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(1) }, /* Capture */ 262033193dcaSMartin Peres /* Playback */ 262133193dcaSMartin Peres { 2622fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 262333193dcaSMartin Peres .formats = SNDRV_PCM_FMTBIT_S16_LE, 262433193dcaSMartin Peres .channels = 2, 262533193dcaSMartin Peres .iface = 2, 262633193dcaSMartin Peres .altsetting = 1, 262733193dcaSMartin Peres .altset_idx = 1, 262833193dcaSMartin Peres .attributes = UAC_EP_CS_ATTR_FILL_MAX | 262933193dcaSMartin Peres UAC_EP_CS_ATTR_SAMPLE_RATE, 263033193dcaSMartin Peres .endpoint = 0x03, 263133193dcaSMartin Peres .ep_attr = USB_ENDPOINT_XFER_ISOC, 263233193dcaSMartin Peres .rates = SNDRV_PCM_RATE_48000, 263333193dcaSMartin Peres .rate_min = 48000, 263433193dcaSMartin Peres .rate_max = 48000, 263533193dcaSMartin Peres .nr_rates = 1, 263633193dcaSMartin Peres .rate_table = (unsigned int[]) { 263733193dcaSMartin Peres 48000 263833193dcaSMartin Peres } 263933193dcaSMartin Peres } 264033193dcaSMartin Peres }, 2641fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 264233193dcaSMartin Peres } 264333193dcaSMartin Peres } 264433193dcaSMartin Peres }, 26455ebf6b1eSTakashi Iwai #endif /* disabled */ 264633193dcaSMartin Peres 2647240a8af9SErik Veijola { 2648240a8af9SErik Veijola /* 2649240a8af9SErik Veijola * Bower's & Wilkins PX headphones only support the 48 kHz sample rate 2650240a8af9SErik Veijola * even though it advertises more. The capture interface doesn't work 2651240a8af9SErik Veijola * even on windows. 2652240a8af9SErik Veijola */ 2653240a8af9SErik Veijola USB_DEVICE(0x19b5, 0x0021), 2654fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2655fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2656fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2657240a8af9SErik Veijola /* Playback */ 2658240a8af9SErik Veijola { 2659fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 2660240a8af9SErik Veijola .formats = SNDRV_PCM_FMTBIT_S16_LE, 2661240a8af9SErik Veijola .channels = 2, 2662c369c8dbSNicolas Huaman .iface = 1, 2663240a8af9SErik Veijola .altsetting = 1, 2664240a8af9SErik Veijola .altset_idx = 1, 2665240a8af9SErik Veijola .attributes = UAC_EP_CS_ATTR_FILL_MAX | 2666240a8af9SErik Veijola UAC_EP_CS_ATTR_SAMPLE_RATE, 2667240a8af9SErik Veijola .endpoint = 0x03, 2668240a8af9SErik Veijola .ep_attr = USB_ENDPOINT_XFER_ISOC, 2669240a8af9SErik Veijola .rates = SNDRV_PCM_RATE_48000, 2670240a8af9SErik Veijola .rate_min = 48000, 2671240a8af9SErik Veijola .rate_max = 48000, 2672240a8af9SErik Veijola .nr_rates = 1, 2673240a8af9SErik Veijola .rate_table = (unsigned int[]) { 2674240a8af9SErik Veijola 48000 2675240a8af9SErik Veijola } 2676240a8af9SErik Veijola } 2677240a8af9SErik Veijola }, 2678fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2679240a8af9SErik Veijola } 2680240a8af9SErik Veijola } 2681240a8af9SErik Veijola }, 2682a634090aSManuel Reinhardt /* MOTU Microbook II */ 2683a634090aSManuel Reinhardt { 26842edb84e3SAlexander Tsoy USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004), 2685fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2686a634090aSManuel Reinhardt .vendor_name = "MOTU", 2687a634090aSManuel Reinhardt .product_name = "MicroBookII", 2688fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2689fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(0) }, 2690a634090aSManuel Reinhardt { 2691fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2692a634090aSManuel Reinhardt .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2693a634090aSManuel Reinhardt .channels = 6, 2694a634090aSManuel Reinhardt .iface = 0, 2695a634090aSManuel Reinhardt .altsetting = 1, 2696a634090aSManuel Reinhardt .altset_idx = 1, 2697a634090aSManuel Reinhardt .attributes = 0, 2698a634090aSManuel Reinhardt .endpoint = 0x84, 2699a634090aSManuel Reinhardt .rates = SNDRV_PCM_RATE_96000, 2700a634090aSManuel Reinhardt .ep_attr = USB_ENDPOINT_XFER_ISOC | 2701a634090aSManuel Reinhardt USB_ENDPOINT_SYNC_ASYNC, 2702a634090aSManuel Reinhardt .rate_min = 96000, 2703a634090aSManuel Reinhardt .rate_max = 96000, 2704a634090aSManuel Reinhardt .nr_rates = 1, 2705a634090aSManuel Reinhardt .maxpacksize = 0x00d8, 2706a634090aSManuel Reinhardt .rate_table = (unsigned int[]) { 2707a634090aSManuel Reinhardt 96000 2708a634090aSManuel Reinhardt } 2709a634090aSManuel Reinhardt } 2710a634090aSManuel Reinhardt }, 2711a634090aSManuel Reinhardt { 2712fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2713a634090aSManuel Reinhardt .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2714a634090aSManuel Reinhardt .channels = 8, 2715a634090aSManuel Reinhardt .iface = 0, 2716a634090aSManuel Reinhardt .altsetting = 1, 2717a634090aSManuel Reinhardt .altset_idx = 1, 2718a634090aSManuel Reinhardt .attributes = 0, 2719a634090aSManuel Reinhardt .endpoint = 0x03, 27207b0efea4STakashi Iwai .ep_idx = 1, 2721a634090aSManuel Reinhardt .rates = SNDRV_PCM_RATE_96000, 2722a634090aSManuel Reinhardt .ep_attr = USB_ENDPOINT_XFER_ISOC | 2723a634090aSManuel Reinhardt USB_ENDPOINT_SYNC_ASYNC, 2724a634090aSManuel Reinhardt .rate_min = 96000, 2725a634090aSManuel Reinhardt .rate_max = 96000, 2726a634090aSManuel Reinhardt .nr_rates = 1, 2727a634090aSManuel Reinhardt .maxpacksize = 0x0120, 2728a634090aSManuel Reinhardt .rate_table = (unsigned int[]) { 2729a634090aSManuel Reinhardt 96000 2730a634090aSManuel Reinhardt } 2731a634090aSManuel Reinhardt } 2732a634090aSManuel Reinhardt }, 2733fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2734a634090aSManuel Reinhardt } 2735a634090aSManuel Reinhardt } 2736a634090aSManuel Reinhardt }, 2737118b2806SArd van Breemen { 2738118b2806SArd van Breemen /* 2739118b2806SArd van Breemen * PIONEER DJ DDJ-SX3 2740118b2806SArd van Breemen * PCM is 12 channels out, 10 channels in @ 44.1 fixed 2741118b2806SArd van Breemen * interface 0, vendor class alt setting 1 for endpoints 5 and 0x86 2742118b2806SArd van Breemen * The feedback for the output is the input. 2743118b2806SArd van Breemen */ 2744118b2806SArd van Breemen USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023), 2745fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2746fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 2747118b2806SArd van Breemen { 2748fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2749118b2806SArd van Breemen .formats = SNDRV_PCM_FMTBIT_S32_LE, 2750118b2806SArd van Breemen .channels = 12, 2751118b2806SArd van Breemen .iface = 0, 2752118b2806SArd van Breemen .altsetting = 1, 2753118b2806SArd van Breemen .altset_idx = 1, 2754118b2806SArd van Breemen .endpoint = 0x05, 2755118b2806SArd van Breemen .ep_attr = USB_ENDPOINT_XFER_ISOC| 2756118b2806SArd van Breemen USB_ENDPOINT_SYNC_ASYNC, 2757118b2806SArd van Breemen .rates = SNDRV_PCM_RATE_44100, 2758118b2806SArd van Breemen .rate_min = 44100, 2759118b2806SArd van Breemen .rate_max = 44100, 2760118b2806SArd van Breemen .nr_rates = 1, 2761118b2806SArd van Breemen .rate_table = (unsigned int[]) { 44100 } 2762118b2806SArd van Breemen } 2763118b2806SArd van Breemen }, 2764118b2806SArd van Breemen { 2765fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 2766118b2806SArd van Breemen .formats = SNDRV_PCM_FMTBIT_S32_LE, 2767118b2806SArd van Breemen .channels = 10, 2768118b2806SArd van Breemen .iface = 0, 2769118b2806SArd van Breemen .altsetting = 1, 2770118b2806SArd van Breemen .altset_idx = 1, 2771118b2806SArd van Breemen .endpoint = 0x86, 2772eae4d054STakashi Iwai .ep_idx = 1, 2773118b2806SArd van Breemen .ep_attr = USB_ENDPOINT_XFER_ISOC| 2774118b2806SArd van Breemen USB_ENDPOINT_SYNC_ASYNC| 2775118b2806SArd van Breemen USB_ENDPOINT_USAGE_IMPLICIT_FB, 2776118b2806SArd van Breemen .rates = SNDRV_PCM_RATE_44100, 2777118b2806SArd van Breemen .rate_min = 44100, 2778118b2806SArd van Breemen .rate_max = 44100, 2779118b2806SArd van Breemen .nr_rates = 1, 2780118b2806SArd van Breemen .rate_table = (unsigned int[]) { 44100 } 2781118b2806SArd van Breemen } 2782118b2806SArd van Breemen }, 2783fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 2784118b2806SArd van Breemen } 2785118b2806SArd van Breemen } 2786118b2806SArd van Breemen }, 278773d8c940SFrantišek Kučera { 278873d8c940SFrantišek Kučera /* 278973d8c940SFrantišek Kučera * Pioneer DJ DJM-250MK2 279014335d8bSFrantišek Kučera * PCM is 8 channels out @ 48 fixed (endpoint 0x01) 279114335d8bSFrantišek Kučera * and 8 channels in @ 48 fixed (endpoint 0x82). 279273d8c940SFrantišek Kučera * 279314335d8bSFrantišek Kučera * Both playback and recording is working, even simultaneously. 279414335d8bSFrantišek Kučera * 279514335d8bSFrantišek Kučera * Playback channels could be mapped to: 279614335d8bSFrantišek Kučera * - CH1 279714335d8bSFrantišek Kučera * - CH2 279814335d8bSFrantišek Kučera * - AUX 279914335d8bSFrantišek Kučera * 280014335d8bSFrantišek Kučera * Recording channels could be mapped to: 280114335d8bSFrantišek Kučera * - Post CH1 Fader 280214335d8bSFrantišek Kučera * - Post CH2 Fader 280314335d8bSFrantišek Kučera * - Cross Fader A 280414335d8bSFrantišek Kučera * - Cross Fader B 280514335d8bSFrantišek Kučera * - MIC 280614335d8bSFrantišek Kučera * - AUX 280714335d8bSFrantišek Kučera * - REC OUT 280814335d8bSFrantišek Kučera * 280914335d8bSFrantišek Kučera * There is remaining problem with recording directly from PHONO/LINE. 281014335d8bSFrantišek Kučera * If we map a channel to: 281114335d8bSFrantišek Kučera * - CH1 Control Tone PHONO 281214335d8bSFrantišek Kučera * - CH1 Control Tone LINE 281314335d8bSFrantišek Kučera * - CH2 Control Tone PHONO 281414335d8bSFrantišek Kučera * - CH2 Control Tone LINE 281514335d8bSFrantišek Kučera * it is silent. 281614335d8bSFrantišek Kučera * There is no signal even on other operating systems with official drivers. 281714335d8bSFrantišek Kučera * The signal appears only when a supported application is started. 281814335d8bSFrantišek Kučera * This needs to be investigated yet... 281914335d8bSFrantišek Kučera * (there is quite a lot communication on the USB in both directions) 282014335d8bSFrantišek Kučera * 282114335d8bSFrantišek Kučera * In current version this mixer could be used for playback 282214335d8bSFrantišek Kučera * and for recording from vinyls (through Post CH* Fader) 282314335d8bSFrantišek Kučera * but not for DVS (Digital Vinyl Systems) like in Mixxx. 282473d8c940SFrantišek Kučera */ 282573d8c940SFrantišek Kučera USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017), 2826fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2827fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 282873d8c940SFrantišek Kučera { 2829fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 283073d8c940SFrantišek Kučera .formats = SNDRV_PCM_FMTBIT_S24_3LE, 283173d8c940SFrantišek Kučera .channels = 8, // outputs 283273d8c940SFrantišek Kučera .iface = 0, 283373d8c940SFrantišek Kučera .altsetting = 1, 283473d8c940SFrantišek Kučera .altset_idx = 1, 283573d8c940SFrantišek Kučera .endpoint = 0x01, 283673d8c940SFrantišek Kučera .ep_attr = USB_ENDPOINT_XFER_ISOC| 283773d8c940SFrantišek Kučera USB_ENDPOINT_SYNC_ASYNC, 283873d8c940SFrantišek Kučera .rates = SNDRV_PCM_RATE_48000, 283973d8c940SFrantišek Kučera .rate_min = 48000, 284073d8c940SFrantišek Kučera .rate_max = 48000, 284173d8c940SFrantišek Kučera .nr_rates = 1, 284273d8c940SFrantišek Kučera .rate_table = (unsigned int[]) { 48000 } 284373d8c940SFrantišek Kučera } 284473d8c940SFrantišek Kučera }, 284573d8c940SFrantišek Kučera { 2846fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 284714335d8bSFrantišek Kučera .formats = SNDRV_PCM_FMTBIT_S24_3LE, 284814335d8bSFrantišek Kučera .channels = 8, // inputs 284914335d8bSFrantišek Kučera .iface = 0, 285014335d8bSFrantišek Kučera .altsetting = 1, 285114335d8bSFrantišek Kučera .altset_idx = 1, 285214335d8bSFrantišek Kučera .endpoint = 0x82, 2853eae4d054STakashi Iwai .ep_idx = 1, 285414335d8bSFrantišek Kučera .ep_attr = USB_ENDPOINT_XFER_ISOC| 285514335d8bSFrantišek Kučera USB_ENDPOINT_SYNC_ASYNC| 285614335d8bSFrantišek Kučera USB_ENDPOINT_USAGE_IMPLICIT_FB, 285714335d8bSFrantišek Kučera .rates = SNDRV_PCM_RATE_48000, 285814335d8bSFrantišek Kučera .rate_min = 48000, 285914335d8bSFrantišek Kučera .rate_max = 48000, 286014335d8bSFrantišek Kučera .nr_rates = 1, 286114335d8bSFrantišek Kučera .rate_table = (unsigned int[]) { 48000 } 286214335d8bSFrantišek Kučera } 286314335d8bSFrantišek Kučera }, 2864fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 286573d8c940SFrantišek Kučera } 286673d8c940SFrantišek Kučera } 286773d8c940SFrantišek Kučera }, 28686e859617SHector Martin { 28696e859617SHector Martin /* 28706e859617SHector Martin * PIONEER DJ DDJ-RB 28716e859617SHector Martin * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed 28726e859617SHector Martin * The feedback for the output is the dummy input. 28736e859617SHector Martin */ 28746e859617SHector Martin USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e), 2875fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2876fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 28776e859617SHector Martin { 2878fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 28796e859617SHector Martin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 28806e859617SHector Martin .channels = 4, 28816e859617SHector Martin .iface = 0, 28826e859617SHector Martin .altsetting = 1, 28836e859617SHector Martin .altset_idx = 1, 28846e859617SHector Martin .endpoint = 0x01, 28856e859617SHector Martin .ep_attr = USB_ENDPOINT_XFER_ISOC| 28866e859617SHector Martin USB_ENDPOINT_SYNC_ASYNC, 28876e859617SHector Martin .rates = SNDRV_PCM_RATE_44100, 28886e859617SHector Martin .rate_min = 44100, 28896e859617SHector Martin .rate_max = 44100, 28906e859617SHector Martin .nr_rates = 1, 28916e859617SHector Martin .rate_table = (unsigned int[]) { 44100 } 28926e859617SHector Martin } 28936e859617SHector Martin }, 28946e859617SHector Martin { 2895fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 28966e859617SHector Martin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 28976e859617SHector Martin .channels = 2, 28986e859617SHector Martin .iface = 0, 28996e859617SHector Martin .altsetting = 1, 29006e859617SHector Martin .altset_idx = 1, 29016e859617SHector Martin .endpoint = 0x82, 2902eae4d054STakashi Iwai .ep_idx = 1, 29036e859617SHector Martin .ep_attr = USB_ENDPOINT_XFER_ISOC| 29046e859617SHector Martin USB_ENDPOINT_SYNC_ASYNC| 29056e859617SHector Martin USB_ENDPOINT_USAGE_IMPLICIT_FB, 29066e859617SHector Martin .rates = SNDRV_PCM_RATE_44100, 29076e859617SHector Martin .rate_min = 44100, 29086e859617SHector Martin .rate_max = 44100, 29096e859617SHector Martin .nr_rates = 1, 29106e859617SHector Martin .rate_table = (unsigned int[]) { 44100 } 29116e859617SHector Martin } 29126e859617SHector Martin }, 2913fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 29146e859617SHector Martin } 29156e859617SHector Martin } 29166e859617SHector Martin }, 2917240a8af9SErik Veijola 29187fccfecfSDmitry Panchenko { 29197fccfecfSDmitry Panchenko /* 292083ab7b45SDaniel Martin * PIONEER DJ DDJ-RR 292183ab7b45SDaniel Martin * PCM is 6 channels out & 4 channels in @ 44.1 fixed 292283ab7b45SDaniel Martin */ 292383ab7b45SDaniel Martin USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d), 2924fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2925fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 292683ab7b45SDaniel Martin { 2927fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 292883ab7b45SDaniel Martin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 292983ab7b45SDaniel Martin .channels = 6, //Master, Headphones & Booth 293083ab7b45SDaniel Martin .iface = 0, 293183ab7b45SDaniel Martin .altsetting = 1, 293283ab7b45SDaniel Martin .altset_idx = 1, 293383ab7b45SDaniel Martin .endpoint = 0x01, 293483ab7b45SDaniel Martin .ep_attr = USB_ENDPOINT_XFER_ISOC| 293583ab7b45SDaniel Martin USB_ENDPOINT_SYNC_ASYNC, 293683ab7b45SDaniel Martin .rates = SNDRV_PCM_RATE_44100, 293783ab7b45SDaniel Martin .rate_min = 44100, 293883ab7b45SDaniel Martin .rate_max = 44100, 293983ab7b45SDaniel Martin .nr_rates = 1, 294083ab7b45SDaniel Martin .rate_table = (unsigned int[]) { 44100 } 294183ab7b45SDaniel Martin } 294283ab7b45SDaniel Martin }, 294383ab7b45SDaniel Martin { 2944fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 294583ab7b45SDaniel Martin .formats = SNDRV_PCM_FMTBIT_S24_3LE, 294683ab7b45SDaniel Martin .channels = 4, //2x RCA inputs (CH1 & CH2) 294783ab7b45SDaniel Martin .iface = 0, 294883ab7b45SDaniel Martin .altsetting = 1, 294983ab7b45SDaniel Martin .altset_idx = 1, 295083ab7b45SDaniel Martin .endpoint = 0x82, 2951eae4d054STakashi Iwai .ep_idx = 1, 295283ab7b45SDaniel Martin .ep_attr = USB_ENDPOINT_XFER_ISOC| 295383ab7b45SDaniel Martin USB_ENDPOINT_SYNC_ASYNC| 295483ab7b45SDaniel Martin USB_ENDPOINT_USAGE_IMPLICIT_FB, 295583ab7b45SDaniel Martin .rates = SNDRV_PCM_RATE_44100, 295683ab7b45SDaniel Martin .rate_min = 44100, 295783ab7b45SDaniel Martin .rate_max = 44100, 295883ab7b45SDaniel Martin .nr_rates = 1, 295983ab7b45SDaniel Martin .rate_table = (unsigned int[]) { 44100 } 296083ab7b45SDaniel Martin } 296183ab7b45SDaniel Martin }, 2962fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 296383ab7b45SDaniel Martin } 296483ab7b45SDaniel Martin } 296583ab7b45SDaniel Martin }, 296683ab7b45SDaniel Martin 296783ab7b45SDaniel Martin { 296883ab7b45SDaniel Martin /* 29692c854e5cSTakashi Iwai * PIONEER DJ DDJ-SR2 29702c854e5cSTakashi Iwai * PCM is 4 channels out, 6 channels in @ 44.1 fixed 29712c854e5cSTakashi Iwai * The Feedback for the output is the input 29722c854e5cSTakashi Iwai */ 29732c854e5cSTakashi Iwai USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e), 2974fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 2975fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 29762c854e5cSTakashi Iwai { 2977fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 29782c854e5cSTakashi Iwai .formats = SNDRV_PCM_FMTBIT_S24_3LE, 29792c854e5cSTakashi Iwai .channels = 4, 29802c854e5cSTakashi Iwai .iface = 0, 29812c854e5cSTakashi Iwai .altsetting = 1, 29822c854e5cSTakashi Iwai .altset_idx = 1, 29832c854e5cSTakashi Iwai .endpoint = 0x01, 29842c854e5cSTakashi Iwai .ep_attr = USB_ENDPOINT_XFER_ISOC| 29852c854e5cSTakashi Iwai USB_ENDPOINT_SYNC_ASYNC, 29862c854e5cSTakashi Iwai .rates = SNDRV_PCM_RATE_44100, 29872c854e5cSTakashi Iwai .rate_min = 44100, 29882c854e5cSTakashi Iwai .rate_max = 44100, 29892c854e5cSTakashi Iwai .nr_rates = 1, 29902c854e5cSTakashi Iwai .rate_table = (unsigned int[]) { 44100 } 29912c854e5cSTakashi Iwai } 29922c854e5cSTakashi Iwai }, 29932c854e5cSTakashi Iwai { 2994fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 29952c854e5cSTakashi Iwai .formats = SNDRV_PCM_FMTBIT_S24_3LE, 29962c854e5cSTakashi Iwai .channels = 6, 29972c854e5cSTakashi Iwai .iface = 0, 29982c854e5cSTakashi Iwai .altsetting = 1, 29992c854e5cSTakashi Iwai .altset_idx = 1, 30002c854e5cSTakashi Iwai .endpoint = 0x82, 3001eae4d054STakashi Iwai .ep_idx = 1, 30022c854e5cSTakashi Iwai .ep_attr = USB_ENDPOINT_XFER_ISOC| 30032c854e5cSTakashi Iwai USB_ENDPOINT_SYNC_ASYNC| 30042c854e5cSTakashi Iwai USB_ENDPOINT_USAGE_IMPLICIT_FB, 30052c854e5cSTakashi Iwai .rates = SNDRV_PCM_RATE_44100, 30062c854e5cSTakashi Iwai .rate_min = 44100, 30072c854e5cSTakashi Iwai .rate_max = 44100, 30082c854e5cSTakashi Iwai .nr_rates = 1, 30092c854e5cSTakashi Iwai .rate_table = (unsigned int[]) { 44100 } 30102c854e5cSTakashi Iwai } 30112c854e5cSTakashi Iwai }, 3012fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 30132c854e5cSTakashi Iwai } 30142c854e5cSTakashi Iwai } 30152c854e5cSTakashi Iwai }, 30162c854e5cSTakashi Iwai 30172c854e5cSTakashi Iwai { 30182c854e5cSTakashi Iwai /* 30197fccfecfSDmitry Panchenko * Pioneer DJ DJM-900NXS2 30207fccfecfSDmitry Panchenko * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE 30217fccfecfSDmitry Panchenko */ 30227fccfecfSDmitry Panchenko USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a), 3023fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3024fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 30257fccfecfSDmitry Panchenko { 3026fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 30277fccfecfSDmitry Panchenko .formats = SNDRV_PCM_FMTBIT_S24_3LE, 30287fccfecfSDmitry Panchenko .channels = 10, 30297fccfecfSDmitry Panchenko .iface = 0, 30307fccfecfSDmitry Panchenko .altsetting = 1, 30317fccfecfSDmitry Panchenko .altset_idx = 1, 30327fccfecfSDmitry Panchenko .endpoint = 0x01, 30337fccfecfSDmitry Panchenko .ep_attr = USB_ENDPOINT_XFER_ISOC| 30347fccfecfSDmitry Panchenko USB_ENDPOINT_SYNC_ASYNC, 30357fccfecfSDmitry Panchenko .rates = SNDRV_PCM_RATE_44100| 30367fccfecfSDmitry Panchenko SNDRV_PCM_RATE_48000| 30377fccfecfSDmitry Panchenko SNDRV_PCM_RATE_96000, 30387fccfecfSDmitry Panchenko .rate_min = 44100, 30397fccfecfSDmitry Panchenko .rate_max = 96000, 30407fccfecfSDmitry Panchenko .nr_rates = 3, 30417fccfecfSDmitry Panchenko .rate_table = (unsigned int[]) { 30427fccfecfSDmitry Panchenko 44100, 48000, 96000 30437fccfecfSDmitry Panchenko } 30447fccfecfSDmitry Panchenko } 30457fccfecfSDmitry Panchenko }, 30467fccfecfSDmitry Panchenko { 3047fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 30487fccfecfSDmitry Panchenko .formats = SNDRV_PCM_FMTBIT_S24_3LE, 30497fccfecfSDmitry Panchenko .channels = 12, 30507fccfecfSDmitry Panchenko .iface = 0, 30517fccfecfSDmitry Panchenko .altsetting = 1, 30527fccfecfSDmitry Panchenko .altset_idx = 1, 30537fccfecfSDmitry Panchenko .endpoint = 0x82, 3054eae4d054STakashi Iwai .ep_idx = 1, 30557fccfecfSDmitry Panchenko .ep_attr = USB_ENDPOINT_XFER_ISOC| 30567fccfecfSDmitry Panchenko USB_ENDPOINT_SYNC_ASYNC| 30577fccfecfSDmitry Panchenko USB_ENDPOINT_USAGE_IMPLICIT_FB, 30587fccfecfSDmitry Panchenko .rates = SNDRV_PCM_RATE_44100| 30597fccfecfSDmitry Panchenko SNDRV_PCM_RATE_48000| 30607fccfecfSDmitry Panchenko SNDRV_PCM_RATE_96000, 30617fccfecfSDmitry Panchenko .rate_min = 44100, 30627fccfecfSDmitry Panchenko .rate_max = 96000, 30637fccfecfSDmitry Panchenko .nr_rates = 3, 30647fccfecfSDmitry Panchenko .rate_table = (unsigned int[]) { 30657fccfecfSDmitry Panchenko 44100, 48000, 96000 30667fccfecfSDmitry Panchenko } 30677fccfecfSDmitry Panchenko } 30687fccfecfSDmitry Panchenko }, 3069fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 30707fccfecfSDmitry Panchenko } 30717fccfecfSDmitry Panchenko } 30727fccfecfSDmitry Panchenko }, 30737f5ad9c9STakashi Iwai 30747501f472SGeraldo Nascimento { 30757501f472SGeraldo Nascimento /* 30767501f472SGeraldo Nascimento * PIONEER DJ DDJ-800 30777501f472SGeraldo Nascimento * PCM is 6 channels out, 6 channels in @ 44.1 fixed 30787501f472SGeraldo Nascimento * The Feedback for the output is the input 30797501f472SGeraldo Nascimento */ 30807501f472SGeraldo Nascimento USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029), 3081fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3082fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 30837501f472SGeraldo Nascimento { 3084fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 30857501f472SGeraldo Nascimento .formats = SNDRV_PCM_FMTBIT_S24_3LE, 30867501f472SGeraldo Nascimento .channels = 6, 30877501f472SGeraldo Nascimento .iface = 0, 30887501f472SGeraldo Nascimento .altsetting = 1, 30897501f472SGeraldo Nascimento .altset_idx = 1, 30907501f472SGeraldo Nascimento .endpoint = 0x01, 30917501f472SGeraldo Nascimento .ep_attr = USB_ENDPOINT_XFER_ISOC| 30927501f472SGeraldo Nascimento USB_ENDPOINT_SYNC_ASYNC, 30937501f472SGeraldo Nascimento .rates = SNDRV_PCM_RATE_44100, 30947501f472SGeraldo Nascimento .rate_min = 44100, 30957501f472SGeraldo Nascimento .rate_max = 44100, 30967501f472SGeraldo Nascimento .nr_rates = 1, 30977501f472SGeraldo Nascimento .rate_table = (unsigned int[]) { 44100 } 30987501f472SGeraldo Nascimento } 30997501f472SGeraldo Nascimento }, 31007501f472SGeraldo Nascimento { 3101fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 31027501f472SGeraldo Nascimento .formats = SNDRV_PCM_FMTBIT_S24_3LE, 31037501f472SGeraldo Nascimento .channels = 6, 31047501f472SGeraldo Nascimento .iface = 0, 31057501f472SGeraldo Nascimento .altsetting = 1, 31067501f472SGeraldo Nascimento .altset_idx = 1, 31077501f472SGeraldo Nascimento .endpoint = 0x82, 31087501f472SGeraldo Nascimento .ep_idx = 1, 31097501f472SGeraldo Nascimento .ep_attr = USB_ENDPOINT_XFER_ISOC| 31107501f472SGeraldo Nascimento USB_ENDPOINT_SYNC_ASYNC| 31117501f472SGeraldo Nascimento USB_ENDPOINT_USAGE_IMPLICIT_FB, 31127501f472SGeraldo Nascimento .rates = SNDRV_PCM_RATE_44100, 31137501f472SGeraldo Nascimento .rate_min = 44100, 31147501f472SGeraldo Nascimento .rate_max = 44100, 31157501f472SGeraldo Nascimento .nr_rates = 1, 31167501f472SGeraldo Nascimento .rate_table = (unsigned int[]) { 44100 } 31177501f472SGeraldo Nascimento } 31187501f472SGeraldo Nascimento }, 3119fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 31207501f472SGeraldo Nascimento } 31217501f472SGeraldo Nascimento } 31227501f472SGeraldo Nascimento }, 31237501f472SGeraldo Nascimento 3124e337bf19SHector Martin /* 31256e2c9105SJohn Veness * MacroSilicon MS2100/MS2106 based AV capture cards 31266e2c9105SJohn Veness * 31276e2c9105SJohn Veness * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch. 31286e2c9105SJohn Veness * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if 31296e2c9105SJohn Veness * they pretend to be 96kHz mono as a workaround for stereo being broken 31306e2c9105SJohn Veness * by that... 31316e2c9105SJohn Veness * 31326e2c9105SJohn Veness * They also have an issue with initial stream alignment that causes the 31336e2c9105SJohn Veness * channels to be swapped and out of phase, which is dealt with in quirks.c. 31346e2c9105SJohn Veness */ 31356e2c9105SJohn Veness { 31366e2c9105SJohn Veness USB_AUDIO_DEVICE(0x534d, 0x0021), 3137fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 31386e2c9105SJohn Veness .vendor_name = "MacroSilicon", 31396e2c9105SJohn Veness .product_name = "MS210x", 3140fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3141fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(2) }, 31426e2c9105SJohn Veness { 3143fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 31446e2c9105SJohn Veness .formats = SNDRV_PCM_FMTBIT_S16_LE, 31456e2c9105SJohn Veness .channels = 2, 31466e2c9105SJohn Veness .iface = 3, 31476e2c9105SJohn Veness .altsetting = 1, 31486e2c9105SJohn Veness .altset_idx = 1, 31496e2c9105SJohn Veness .attributes = 0, 31506e2c9105SJohn Veness .endpoint = 0x82, 31516e2c9105SJohn Veness .ep_attr = USB_ENDPOINT_XFER_ISOC | 31526e2c9105SJohn Veness USB_ENDPOINT_SYNC_ASYNC, 31536e2c9105SJohn Veness .rates = SNDRV_PCM_RATE_CONTINUOUS, 31546e2c9105SJohn Veness .rate_min = 48000, 31556e2c9105SJohn Veness .rate_max = 48000, 31566e2c9105SJohn Veness } 31576e2c9105SJohn Veness }, 3158fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 31596e2c9105SJohn Veness } 31606e2c9105SJohn Veness } 31616e2c9105SJohn Veness }, 31626e2c9105SJohn Veness 31636e2c9105SJohn Veness /* 3164e337bf19SHector Martin * MacroSilicon MS2109 based HDMI capture cards 3165e337bf19SHector Martin * 3166e337bf19SHector Martin * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch. 3167af158a7fSTakashi Iwai * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if 3168e337bf19SHector Martin * they pretend to be 96kHz mono as a workaround for stereo being broken 3169e337bf19SHector Martin * by that... 3170e337bf19SHector Martin * 317174a2a7deSHector Martin * They also have an issue with initial stream alignment that causes the 317274a2a7deSHector Martin * channels to be swapped and out of phase, which is dealt with in quirks.c. 3173e337bf19SHector Martin */ 3174e337bf19SHector Martin { 3175fa10635fSTakashi Iwai USB_AUDIO_DEVICE(0x534d, 0x2109), 3176fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3177e337bf19SHector Martin .vendor_name = "MacroSilicon", 3178e337bf19SHector Martin .product_name = "MS2109", 3179fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3180fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_MIXER(2) }, 3181e337bf19SHector Martin { 3182fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(3) { 3183e337bf19SHector Martin .formats = SNDRV_PCM_FMTBIT_S16_LE, 3184e337bf19SHector Martin .channels = 2, 3185e337bf19SHector Martin .iface = 3, 3186e337bf19SHector Martin .altsetting = 1, 3187e337bf19SHector Martin .altset_idx = 1, 3188e337bf19SHector Martin .attributes = 0, 3189e337bf19SHector Martin .endpoint = 0x82, 3190e337bf19SHector Martin .ep_attr = USB_ENDPOINT_XFER_ISOC | 3191e337bf19SHector Martin USB_ENDPOINT_SYNC_ASYNC, 3192e337bf19SHector Martin .rates = SNDRV_PCM_RATE_CONTINUOUS, 3193e337bf19SHector Martin .rate_min = 48000, 3194e337bf19SHector Martin .rate_max = 48000, 3195e337bf19SHector Martin } 3196e337bf19SHector Martin }, 3197fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3198e337bf19SHector Martin } 3199e337bf19SHector Martin } 3200e337bf19SHector Martin }, 3201b952ac76SOlivia Mackintosh { 3202b952ac76SOlivia Mackintosh /* 3203b952ac76SOlivia Mackintosh * Pioneer DJ DJM-750 3204b952ac76SOlivia Mackintosh * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE 3205b952ac76SOlivia Mackintosh */ 3206b952ac76SOlivia Mackintosh USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f), 3207fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3208fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3209b952ac76SOlivia Mackintosh { 3210fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 3211b952ac76SOlivia Mackintosh .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3212b952ac76SOlivia Mackintosh .channels = 8, 3213b952ac76SOlivia Mackintosh .iface = 0, 3214b952ac76SOlivia Mackintosh .altsetting = 1, 3215b952ac76SOlivia Mackintosh .altset_idx = 1, 3216b952ac76SOlivia Mackintosh .endpoint = 0x05, 3217b952ac76SOlivia Mackintosh .ep_attr = USB_ENDPOINT_XFER_ISOC| 3218b952ac76SOlivia Mackintosh USB_ENDPOINT_SYNC_ASYNC, 3219b952ac76SOlivia Mackintosh .rates = SNDRV_PCM_RATE_44100| 3220b952ac76SOlivia Mackintosh SNDRV_PCM_RATE_48000| 3221b952ac76SOlivia Mackintosh SNDRV_PCM_RATE_96000, 3222b952ac76SOlivia Mackintosh .rate_min = 44100, 3223b952ac76SOlivia Mackintosh .rate_max = 96000, 3224b952ac76SOlivia Mackintosh .nr_rates = 3, 3225b952ac76SOlivia Mackintosh .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3226b952ac76SOlivia Mackintosh } 3227b952ac76SOlivia Mackintosh }, 3228b952ac76SOlivia Mackintosh { 3229fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 3230b952ac76SOlivia Mackintosh .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3231b952ac76SOlivia Mackintosh .channels = 8, 3232b952ac76SOlivia Mackintosh .iface = 0, 3233b952ac76SOlivia Mackintosh .altsetting = 1, 3234b952ac76SOlivia Mackintosh .altset_idx = 1, 3235b952ac76SOlivia Mackintosh .endpoint = 0x86, 3236b952ac76SOlivia Mackintosh .ep_idx = 1, 3237b952ac76SOlivia Mackintosh .ep_attr = USB_ENDPOINT_XFER_ISOC| 3238b952ac76SOlivia Mackintosh USB_ENDPOINT_SYNC_ASYNC| 3239b952ac76SOlivia Mackintosh USB_ENDPOINT_USAGE_IMPLICIT_FB, 3240b952ac76SOlivia Mackintosh .rates = SNDRV_PCM_RATE_44100| 3241b952ac76SOlivia Mackintosh SNDRV_PCM_RATE_48000| 3242b952ac76SOlivia Mackintosh SNDRV_PCM_RATE_96000, 3243b952ac76SOlivia Mackintosh .rate_min = 44100, 3244b952ac76SOlivia Mackintosh .rate_max = 96000, 3245b952ac76SOlivia Mackintosh .nr_rates = 3, 3246b952ac76SOlivia Mackintosh .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3247b952ac76SOlivia Mackintosh } 3248b952ac76SOlivia Mackintosh }, 3249fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3250b952ac76SOlivia Mackintosh } 3251b952ac76SOlivia Mackintosh } 3252b952ac76SOlivia Mackintosh }, 32539119e566SOlivia Mackintosh { 32549119e566SOlivia Mackintosh /* 32556d277881SWilliam Overton * Pioneer DJ DJM-750MK2 32566d277881SWilliam Overton * 10 channels playback & 12 channels capture @ 48kHz S24LE 32576d277881SWilliam Overton */ 32586d277881SWilliam Overton USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b), 3259fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3260fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 32616d277881SWilliam Overton { 3262fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 32636d277881SWilliam Overton .formats = SNDRV_PCM_FMTBIT_S24_3LE, 32646d277881SWilliam Overton .channels = 10, 32656d277881SWilliam Overton .iface = 0, 32666d277881SWilliam Overton .altsetting = 1, 32676d277881SWilliam Overton .altset_idx = 1, 32686d277881SWilliam Overton .endpoint = 0x01, 32696d277881SWilliam Overton .ep_attr = USB_ENDPOINT_XFER_ISOC| 32706d277881SWilliam Overton USB_ENDPOINT_SYNC_ASYNC, 32716d277881SWilliam Overton .rates = SNDRV_PCM_RATE_48000, 32726d277881SWilliam Overton .rate_min = 48000, 32736d277881SWilliam Overton .rate_max = 48000, 32746d277881SWilliam Overton .nr_rates = 1, 32756d277881SWilliam Overton .rate_table = (unsigned int[]) { 32766d277881SWilliam Overton 48000 32776d277881SWilliam Overton } 32786d277881SWilliam Overton } 32796d277881SWilliam Overton }, 32806d277881SWilliam Overton { 3281fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 32826d277881SWilliam Overton .formats = SNDRV_PCM_FMTBIT_S24_3LE, 32836d277881SWilliam Overton .channels = 12, 32846d277881SWilliam Overton .iface = 0, 32856d277881SWilliam Overton .altsetting = 1, 32866d277881SWilliam Overton .altset_idx = 1, 32876d277881SWilliam Overton .endpoint = 0x82, 32886d277881SWilliam Overton .ep_idx = 1, 32896d277881SWilliam Overton .ep_attr = USB_ENDPOINT_XFER_ISOC| 32906d277881SWilliam Overton USB_ENDPOINT_SYNC_ASYNC| 32916d277881SWilliam Overton USB_ENDPOINT_USAGE_IMPLICIT_FB, 32926d277881SWilliam Overton .rates = SNDRV_PCM_RATE_48000, 32936d277881SWilliam Overton .rate_min = 48000, 32946d277881SWilliam Overton .rate_max = 48000, 32956d277881SWilliam Overton .nr_rates = 1, 32966d277881SWilliam Overton .rate_table = (unsigned int[]) { 48000 } 32976d277881SWilliam Overton } 32986d277881SWilliam Overton }, 3299fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 33006d277881SWilliam Overton } 33016d277881SWilliam Overton } 33026d277881SWilliam Overton }, 33036d277881SWilliam Overton { 33046d277881SWilliam Overton /* 3305a3c30b0cSNicolas MURE * Pioneer DJ DJM-850 3306a3c30b0cSNicolas MURE * 8 channels playback and 8 channels capture @ 44.1/48/96kHz S24LE 3307a3c30b0cSNicolas MURE * Playback on EP 0x05 3308a3c30b0cSNicolas MURE * Capture on EP 0x86 3309a3c30b0cSNicolas MURE */ 3310a3c30b0cSNicolas MURE USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163), 3311fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3312fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3313a3c30b0cSNicolas MURE { 3314fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 3315a3c30b0cSNicolas MURE .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3316a3c30b0cSNicolas MURE .channels = 8, 3317a3c30b0cSNicolas MURE .iface = 0, 3318a3c30b0cSNicolas MURE .altsetting = 1, 3319a3c30b0cSNicolas MURE .altset_idx = 1, 3320a3c30b0cSNicolas MURE .endpoint = 0x05, 3321a3c30b0cSNicolas MURE .ep_attr = USB_ENDPOINT_XFER_ISOC| 3322a3c30b0cSNicolas MURE USB_ENDPOINT_SYNC_ASYNC| 3323a3c30b0cSNicolas MURE USB_ENDPOINT_USAGE_DATA, 3324a3c30b0cSNicolas MURE .rates = SNDRV_PCM_RATE_44100| 3325a3c30b0cSNicolas MURE SNDRV_PCM_RATE_48000| 3326a3c30b0cSNicolas MURE SNDRV_PCM_RATE_96000, 3327a3c30b0cSNicolas MURE .rate_min = 44100, 3328a3c30b0cSNicolas MURE .rate_max = 96000, 3329a3c30b0cSNicolas MURE .nr_rates = 3, 3330a3c30b0cSNicolas MURE .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3331a3c30b0cSNicolas MURE } 3332a3c30b0cSNicolas MURE }, 3333a3c30b0cSNicolas MURE { 3334fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 3335a3c30b0cSNicolas MURE .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3336a3c30b0cSNicolas MURE .channels = 8, 3337a3c30b0cSNicolas MURE .iface = 0, 3338a3c30b0cSNicolas MURE .altsetting = 1, 3339a3c30b0cSNicolas MURE .altset_idx = 1, 3340a3c30b0cSNicolas MURE .endpoint = 0x86, 3341a3c30b0cSNicolas MURE .ep_idx = 1, 3342a3c30b0cSNicolas MURE .ep_attr = USB_ENDPOINT_XFER_ISOC| 3343a3c30b0cSNicolas MURE USB_ENDPOINT_SYNC_ASYNC| 3344a3c30b0cSNicolas MURE USB_ENDPOINT_USAGE_DATA, 3345a3c30b0cSNicolas MURE .rates = SNDRV_PCM_RATE_44100| 3346a3c30b0cSNicolas MURE SNDRV_PCM_RATE_48000| 3347a3c30b0cSNicolas MURE SNDRV_PCM_RATE_96000, 3348a3c30b0cSNicolas MURE .rate_min = 44100, 3349a3c30b0cSNicolas MURE .rate_max = 96000, 3350a3c30b0cSNicolas MURE .nr_rates = 3, 3351a3c30b0cSNicolas MURE .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3352a3c30b0cSNicolas MURE } 3353a3c30b0cSNicolas MURE }, 3354fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3355a3c30b0cSNicolas MURE } 3356a3c30b0cSNicolas MURE } 3357a3c30b0cSNicolas MURE }, 3358a3c30b0cSNicolas MURE { 3359a3c30b0cSNicolas MURE /* 33609119e566SOlivia Mackintosh * Pioneer DJ DJM-450 33619119e566SOlivia Mackintosh * PCM is 8 channels out @ 48 fixed (endpoint 0x01) 33629119e566SOlivia Mackintosh * and 8 channels in @ 48 fixed (endpoint 0x82). 33639119e566SOlivia Mackintosh */ 33649119e566SOlivia Mackintosh USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013), 3365fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3366fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 33679119e566SOlivia Mackintosh { 3368fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 33699119e566SOlivia Mackintosh .formats = SNDRV_PCM_FMTBIT_S24_3LE, 33709119e566SOlivia Mackintosh .channels = 8, // outputs 33719119e566SOlivia Mackintosh .iface = 0, 33729119e566SOlivia Mackintosh .altsetting = 1, 33739119e566SOlivia Mackintosh .altset_idx = 1, 33749119e566SOlivia Mackintosh .endpoint = 0x01, 33759119e566SOlivia Mackintosh .ep_attr = USB_ENDPOINT_XFER_ISOC| 33769119e566SOlivia Mackintosh USB_ENDPOINT_SYNC_ASYNC, 33779119e566SOlivia Mackintosh .rates = SNDRV_PCM_RATE_48000, 33789119e566SOlivia Mackintosh .rate_min = 48000, 33799119e566SOlivia Mackintosh .rate_max = 48000, 33809119e566SOlivia Mackintosh .nr_rates = 1, 33819119e566SOlivia Mackintosh .rate_table = (unsigned int[]) { 48000 } 33829119e566SOlivia Mackintosh } 33839119e566SOlivia Mackintosh }, 33849119e566SOlivia Mackintosh { 3385fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(0) { 33869119e566SOlivia Mackintosh .formats = SNDRV_PCM_FMTBIT_S24_3LE, 33879119e566SOlivia Mackintosh .channels = 8, // inputs 33889119e566SOlivia Mackintosh .iface = 0, 33899119e566SOlivia Mackintosh .altsetting = 1, 33909119e566SOlivia Mackintosh .altset_idx = 1, 33919119e566SOlivia Mackintosh .endpoint = 0x82, 33929119e566SOlivia Mackintosh .ep_idx = 1, 33939119e566SOlivia Mackintosh .ep_attr = USB_ENDPOINT_XFER_ISOC| 33949119e566SOlivia Mackintosh USB_ENDPOINT_SYNC_ASYNC| 33959119e566SOlivia Mackintosh USB_ENDPOINT_USAGE_IMPLICIT_FB, 33969119e566SOlivia Mackintosh .rates = SNDRV_PCM_RATE_48000, 33979119e566SOlivia Mackintosh .rate_min = 48000, 33989119e566SOlivia Mackintosh .rate_max = 48000, 33999119e566SOlivia Mackintosh .nr_rates = 1, 34009119e566SOlivia Mackintosh .rate_table = (unsigned int[]) { 48000 } 34019119e566SOlivia Mackintosh } 34029119e566SOlivia Mackintosh }, 3403fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 34049119e566SOlivia Mackintosh } 34059119e566SOlivia Mackintosh } 34069119e566SOlivia Mackintosh }, 34073c414eb6SBrendan Grieve { 34083c414eb6SBrendan Grieve /* 34093c414eb6SBrendan Grieve * Sennheiser GSP670 34103c414eb6SBrendan Grieve * Change order of interfaces loaded 34113c414eb6SBrendan Grieve */ 34123c414eb6SBrendan Grieve USB_DEVICE(0x1395, 0x0300), 34133c414eb6SBrendan Grieve .bInterfaceClass = USB_CLASS_PER_INTERFACE, 3414fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3415fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 34163c414eb6SBrendan Grieve // Communication 3417fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(3) }, 34183c414eb6SBrendan Grieve // Recording 3419fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(4) }, 34203c414eb6SBrendan Grieve // Main 3421fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 3422fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 34233c414eb6SBrendan Grieve } 34243c414eb6SBrendan Grieve } 34253c414eb6SBrendan Grieve }, 34264fb7c24fSEgor Vorontsov { 34274fb7c24fSEgor Vorontsov /* 34282307a0e1SEgor Vorontsov * Fiero SC-01 (firmware v1.0.0 @ 48 kHz) 34292307a0e1SEgor Vorontsov */ 34302307a0e1SEgor Vorontsov USB_DEVICE(0x2b53, 0x0023), 3431fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 34322307a0e1SEgor Vorontsov .vendor_name = "Fiero", 34332307a0e1SEgor Vorontsov .product_name = "SC-01", 3434fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3435fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 34362307a0e1SEgor Vorontsov /* Playback */ 34372307a0e1SEgor Vorontsov { 3438fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 34392307a0e1SEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 34402307a0e1SEgor Vorontsov .channels = 2, 34412307a0e1SEgor Vorontsov .fmt_bits = 24, 34422307a0e1SEgor Vorontsov .iface = 1, 34432307a0e1SEgor Vorontsov .altsetting = 1, 34442307a0e1SEgor Vorontsov .altset_idx = 1, 34452307a0e1SEgor Vorontsov .endpoint = 0x01, 34462307a0e1SEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 34472307a0e1SEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC, 34482307a0e1SEgor Vorontsov .rates = SNDRV_PCM_RATE_48000, 34492307a0e1SEgor Vorontsov .rate_min = 48000, 34502307a0e1SEgor Vorontsov .rate_max = 48000, 34512307a0e1SEgor Vorontsov .nr_rates = 1, 34522307a0e1SEgor Vorontsov .rate_table = (unsigned int[]) { 48000 }, 34532307a0e1SEgor Vorontsov .clock = 0x29 34542307a0e1SEgor Vorontsov } 34552307a0e1SEgor Vorontsov }, 34562307a0e1SEgor Vorontsov /* Capture */ 34572307a0e1SEgor Vorontsov { 3458fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 34592307a0e1SEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 34602307a0e1SEgor Vorontsov .channels = 2, 34612307a0e1SEgor Vorontsov .fmt_bits = 24, 34622307a0e1SEgor Vorontsov .iface = 2, 34632307a0e1SEgor Vorontsov .altsetting = 1, 34642307a0e1SEgor Vorontsov .altset_idx = 1, 34652307a0e1SEgor Vorontsov .endpoint = 0x82, 34662307a0e1SEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 34672307a0e1SEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC | 34682307a0e1SEgor Vorontsov USB_ENDPOINT_USAGE_IMPLICIT_FB, 34692307a0e1SEgor Vorontsov .rates = SNDRV_PCM_RATE_48000, 34702307a0e1SEgor Vorontsov .rate_min = 48000, 34712307a0e1SEgor Vorontsov .rate_max = 48000, 34722307a0e1SEgor Vorontsov .nr_rates = 1, 34732307a0e1SEgor Vorontsov .rate_table = (unsigned int[]) { 48000 }, 34742307a0e1SEgor Vorontsov .clock = 0x29 34752307a0e1SEgor Vorontsov } 34762307a0e1SEgor Vorontsov }, 3477fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 34782307a0e1SEgor Vorontsov } 34792307a0e1SEgor Vorontsov } 34802307a0e1SEgor Vorontsov }, 34812307a0e1SEgor Vorontsov { 34822307a0e1SEgor Vorontsov /* 34832307a0e1SEgor Vorontsov * Fiero SC-01 (firmware v1.0.0 @ 96 kHz) 34842307a0e1SEgor Vorontsov */ 34852307a0e1SEgor Vorontsov USB_DEVICE(0x2b53, 0x0024), 3486fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 34872307a0e1SEgor Vorontsov .vendor_name = "Fiero", 34882307a0e1SEgor Vorontsov .product_name = "SC-01", 3489fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3490fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 34912307a0e1SEgor Vorontsov /* Playback */ 34922307a0e1SEgor Vorontsov { 3493fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 34942307a0e1SEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 34952307a0e1SEgor Vorontsov .channels = 2, 34962307a0e1SEgor Vorontsov .fmt_bits = 24, 34972307a0e1SEgor Vorontsov .iface = 1, 34982307a0e1SEgor Vorontsov .altsetting = 1, 34992307a0e1SEgor Vorontsov .altset_idx = 1, 35002307a0e1SEgor Vorontsov .endpoint = 0x01, 35012307a0e1SEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 35022307a0e1SEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC, 35032307a0e1SEgor Vorontsov .rates = SNDRV_PCM_RATE_96000, 35042307a0e1SEgor Vorontsov .rate_min = 96000, 35052307a0e1SEgor Vorontsov .rate_max = 96000, 35062307a0e1SEgor Vorontsov .nr_rates = 1, 35072307a0e1SEgor Vorontsov .rate_table = (unsigned int[]) { 96000 }, 35082307a0e1SEgor Vorontsov .clock = 0x29 35092307a0e1SEgor Vorontsov } 35102307a0e1SEgor Vorontsov }, 35112307a0e1SEgor Vorontsov /* Capture */ 35122307a0e1SEgor Vorontsov { 3513fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 35142307a0e1SEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 35152307a0e1SEgor Vorontsov .channels = 2, 35162307a0e1SEgor Vorontsov .fmt_bits = 24, 35172307a0e1SEgor Vorontsov .iface = 2, 35182307a0e1SEgor Vorontsov .altsetting = 1, 35192307a0e1SEgor Vorontsov .altset_idx = 1, 35202307a0e1SEgor Vorontsov .endpoint = 0x82, 35212307a0e1SEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 35222307a0e1SEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC | 35232307a0e1SEgor Vorontsov USB_ENDPOINT_USAGE_IMPLICIT_FB, 35242307a0e1SEgor Vorontsov .rates = SNDRV_PCM_RATE_96000, 35252307a0e1SEgor Vorontsov .rate_min = 96000, 35262307a0e1SEgor Vorontsov .rate_max = 96000, 35272307a0e1SEgor Vorontsov .nr_rates = 1, 35282307a0e1SEgor Vorontsov .rate_table = (unsigned int[]) { 96000 }, 35292307a0e1SEgor Vorontsov .clock = 0x29 35302307a0e1SEgor Vorontsov } 35312307a0e1SEgor Vorontsov }, 3532fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 35332307a0e1SEgor Vorontsov } 35342307a0e1SEgor Vorontsov } 35352307a0e1SEgor Vorontsov }, 35362307a0e1SEgor Vorontsov { 35372307a0e1SEgor Vorontsov /* 35384fb7c24fSEgor Vorontsov * Fiero SC-01 (firmware v1.1.0) 35394fb7c24fSEgor Vorontsov */ 35404fb7c24fSEgor Vorontsov USB_DEVICE(0x2b53, 0x0031), 3541fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 35424fb7c24fSEgor Vorontsov .vendor_name = "Fiero", 35434fb7c24fSEgor Vorontsov .product_name = "SC-01", 3544fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3545fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(0) }, 35464fb7c24fSEgor Vorontsov /* Playback */ 35474fb7c24fSEgor Vorontsov { 3548fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(1) { 35494fb7c24fSEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 35504fb7c24fSEgor Vorontsov .channels = 2, 35514fb7c24fSEgor Vorontsov .fmt_bits = 24, 35524fb7c24fSEgor Vorontsov .iface = 1, 35534fb7c24fSEgor Vorontsov .altsetting = 1, 35544fb7c24fSEgor Vorontsov .altset_idx = 1, 35554fb7c24fSEgor Vorontsov .endpoint = 0x01, 35564fb7c24fSEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 35574fb7c24fSEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC, 35584fb7c24fSEgor Vorontsov .rates = SNDRV_PCM_RATE_48000 | 35594fb7c24fSEgor Vorontsov SNDRV_PCM_RATE_96000, 35604fb7c24fSEgor Vorontsov .rate_min = 48000, 35614fb7c24fSEgor Vorontsov .rate_max = 96000, 35624fb7c24fSEgor Vorontsov .nr_rates = 2, 35634fb7c24fSEgor Vorontsov .rate_table = (unsigned int[]) { 48000, 96000 }, 35644fb7c24fSEgor Vorontsov .clock = 0x29 35654fb7c24fSEgor Vorontsov } 35664fb7c24fSEgor Vorontsov }, 35674fb7c24fSEgor Vorontsov /* Capture */ 35684fb7c24fSEgor Vorontsov { 3569fb2ed616STakashi Iwai QUIRK_DATA_AUDIOFORMAT(2) { 35704fb7c24fSEgor Vorontsov .formats = SNDRV_PCM_FMTBIT_S32_LE, 35714fb7c24fSEgor Vorontsov .channels = 2, 35724fb7c24fSEgor Vorontsov .fmt_bits = 24, 35734fb7c24fSEgor Vorontsov .iface = 2, 35744fb7c24fSEgor Vorontsov .altsetting = 1, 35754fb7c24fSEgor Vorontsov .altset_idx = 1, 35764fb7c24fSEgor Vorontsov .endpoint = 0x82, 35774fb7c24fSEgor Vorontsov .ep_attr = USB_ENDPOINT_XFER_ISOC | 35784fb7c24fSEgor Vorontsov USB_ENDPOINT_SYNC_ASYNC | 35794fb7c24fSEgor Vorontsov USB_ENDPOINT_USAGE_IMPLICIT_FB, 35804fb7c24fSEgor Vorontsov .rates = SNDRV_PCM_RATE_48000 | 35814fb7c24fSEgor Vorontsov SNDRV_PCM_RATE_96000, 35824fb7c24fSEgor Vorontsov .rate_min = 48000, 35834fb7c24fSEgor Vorontsov .rate_max = 96000, 35844fb7c24fSEgor Vorontsov .nr_rates = 2, 35854fb7c24fSEgor Vorontsov .rate_table = (unsigned int[]) { 48000, 96000 }, 35864fb7c24fSEgor Vorontsov .clock = 0x29 35874fb7c24fSEgor Vorontsov } 35884fb7c24fSEgor Vorontsov }, 3589fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 35904fb7c24fSEgor Vorontsov } 35914fb7c24fSEgor Vorontsov } 35924fb7c24fSEgor Vorontsov }, 3593788449aeSdengxiang { 3594788449aeSdengxiang /* Advanced modes of the Mythware XA001AU. 3595788449aeSdengxiang * For the standard mode, Mythware XA001AU has ID ffad:a001 3596788449aeSdengxiang */ 3597788449aeSdengxiang USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001), 3598fb2ed616STakashi Iwai QUIRK_DRIVER_INFO { 3599788449aeSdengxiang .vendor_name = "Mythware", 3600788449aeSdengxiang .product_name = "XA001AU", 3601fb2ed616STakashi Iwai QUIRK_DATA_COMPOSITE { 3602fb2ed616STakashi Iwai { QUIRK_DATA_IGNORE(0) }, 3603fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(1) }, 3604fb2ed616STakashi Iwai { QUIRK_DATA_STANDARD_AUDIO(2) }, 3605fb2ed616STakashi Iwai QUIRK_COMPOSITE_END 3606788449aeSdengxiang } 3607788449aeSdengxiang } 3608788449aeSdengxiang }, 3609e337bf19SHector Martin 3610e5779998SDaniel Mack #undef USB_DEVICE_VENDOR_SPEC 3611fa10635fSTakashi Iwai #undef USB_AUDIO_DEVICE 3612