brintos

brintos / linux-shallow public Read only

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