aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/usbquirks.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb/usbquirks.h')
-rw-r--r--sound/usb/usbquirks.h327
1 files changed, 270 insertions, 57 deletions
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index 88bbd944d4be..f74e652a1e51 100644
--- a/sound/usb/usbquirks.h
+++ b/sound/usb/usbquirks.h
@@ -116,6 +116,7 @@ YAMAHA_DEVICE(0x1039, NULL),
116YAMAHA_DEVICE(0x103a, NULL), 116YAMAHA_DEVICE(0x103a, NULL),
117YAMAHA_DEVICE(0x103b, NULL), 117YAMAHA_DEVICE(0x103b, NULL),
118YAMAHA_DEVICE(0x103c, NULL), 118YAMAHA_DEVICE(0x103c, NULL),
119YAMAHA_DEVICE(0x103d, NULL),
119YAMAHA_DEVICE(0x2000, "DGP-7"), 120YAMAHA_DEVICE(0x2000, "DGP-7"),
120YAMAHA_DEVICE(0x2001, "DGP-5"), 121YAMAHA_DEVICE(0x2001, "DGP-5"),
121YAMAHA_DEVICE(0x2002, NULL), 122YAMAHA_DEVICE(0x2002, NULL),
@@ -203,11 +204,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
203 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 204 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
204 .vendor_name = "EDIROL", 205 .vendor_name = "EDIROL",
205 .product_name = "UM-4", 206 .product_name = "UM-4",
206 .ifnum = 2, 207 .ifnum = QUIRK_ANY_INTERFACE,
207 .type = QUIRK_MIDI_FIXED_ENDPOINT, 208 .type = QUIRK_COMPOSITE,
208 .data = & (const snd_usb_midi_endpoint_info_t) { 209 .data = (const snd_usb_audio_quirk_t[]) {
209 .out_cables = 0x000f, 210 {
210 .in_cables = 0x000f 211 .ifnum = 0,
212 .type = QUIRK_IGNORE_INTERFACE
213 },
214 {
215 .ifnum = 1,
216 .type = QUIRK_IGNORE_INTERFACE
217 },
218 {
219 .ifnum = 2,
220 .type = QUIRK_MIDI_FIXED_ENDPOINT,
221 .data = & (const snd_usb_midi_endpoint_info_t) {
222 .out_cables = 0x000f,
223 .in_cables = 0x000f
224 }
225 },
226 {
227 .ifnum = -1
228 }
211 } 229 }
212 } 230 }
213}, 231},
@@ -216,11 +234,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
216 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 234 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
217 .vendor_name = "Roland", 235 .vendor_name = "Roland",
218 .product_name = "SC-8850", 236 .product_name = "SC-8850",
219 .ifnum = 2, 237 .ifnum = QUIRK_ANY_INTERFACE,
220 .type = QUIRK_MIDI_FIXED_ENDPOINT, 238 .type = QUIRK_COMPOSITE,
221 .data = & (const snd_usb_midi_endpoint_info_t) { 239 .data = (const snd_usb_audio_quirk_t[]) {
222 .out_cables = 0x003f, 240 {
223 .in_cables = 0x003f 241 .ifnum = 0,
242 .type = QUIRK_IGNORE_INTERFACE
243 },
244 {
245 .ifnum = 1,
246 .type = QUIRK_IGNORE_INTERFACE
247 },
248 {
249 .ifnum = 2,
250 .type = QUIRK_MIDI_FIXED_ENDPOINT,
251 .data = & (const snd_usb_midi_endpoint_info_t) {
252 .out_cables = 0x003f,
253 .in_cables = 0x003f
254 }
255 },
256 {
257 .ifnum = -1
258 }
224 } 259 }
225 } 260 }
226}, 261},
@@ -229,11 +264,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
229 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 264 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
230 .vendor_name = "Roland", 265 .vendor_name = "Roland",
231 .product_name = "U-8", 266 .product_name = "U-8",
232 .ifnum = 2, 267 .ifnum = QUIRK_ANY_INTERFACE,
233 .type = QUIRK_MIDI_FIXED_ENDPOINT, 268 .type = QUIRK_COMPOSITE,
234 .data = & (const snd_usb_midi_endpoint_info_t) { 269 .data = (const snd_usb_audio_quirk_t[]) {
235 .out_cables = 0x0005, 270 {
236 .in_cables = 0x0005 271 .ifnum = 0,
272 .type = QUIRK_IGNORE_INTERFACE
273 },
274 {
275 .ifnum = 1,
276 .type = QUIRK_IGNORE_INTERFACE
277 },
278 {
279 .ifnum = 2,
280 .type = QUIRK_MIDI_FIXED_ENDPOINT,
281 .data = & (const snd_usb_midi_endpoint_info_t) {
282 .out_cables = 0x0005,
283 .in_cables = 0x0005
284 }
285 },
286 {
287 .ifnum = -1
288 }
237 } 289 }
238 } 290 }
239}, 291},
@@ -242,11 +294,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
242 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 294 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
243 .vendor_name = "EDIROL", 295 .vendor_name = "EDIROL",
244 .product_name = "UM-2", 296 .product_name = "UM-2",
245 .ifnum = 2, 297 .ifnum = QUIRK_ANY_INTERFACE,
246 .type = QUIRK_MIDI_FIXED_ENDPOINT, 298 .type = QUIRK_COMPOSITE,
247 .data = & (const snd_usb_midi_endpoint_info_t) { 299 .data = (const snd_usb_audio_quirk_t[]) {
248 .out_cables = 0x0003, 300 {
249 .in_cables = 0x0003 301 .ifnum = 0,
302 .type = QUIRK_IGNORE_INTERFACE
303 },
304 {
305 .ifnum = 1,
306 .type = QUIRK_IGNORE_INTERFACE
307 },
308 {
309 .ifnum = 2,
310 .type = QUIRK_MIDI_FIXED_ENDPOINT,
311 .data = & (const snd_usb_midi_endpoint_info_t) {
312 .out_cables = 0x0003,
313 .in_cables = 0x0003
314 }
315 },
316 {
317 .ifnum = -1
318 }
250 } 319 }
251 } 320 }
252}, 321},
@@ -255,11 +324,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
255 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 324 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
256 .vendor_name = "Roland", 325 .vendor_name = "Roland",
257 .product_name = "SC-8820", 326 .product_name = "SC-8820",
258 .ifnum = 2, 327 .ifnum = QUIRK_ANY_INTERFACE,
259 .type = QUIRK_MIDI_FIXED_ENDPOINT, 328 .type = QUIRK_COMPOSITE,
260 .data = & (const snd_usb_midi_endpoint_info_t) { 329 .data = (const snd_usb_audio_quirk_t[]) {
261 .out_cables = 0x0013, 330 {
262 .in_cables = 0x0013 331 .ifnum = 0,
332 .type = QUIRK_IGNORE_INTERFACE
333 },
334 {
335 .ifnum = 1,
336 .type = QUIRK_IGNORE_INTERFACE
337 },
338 {
339 .ifnum = 2,
340 .type = QUIRK_MIDI_FIXED_ENDPOINT,
341 .data = & (const snd_usb_midi_endpoint_info_t) {
342 .out_cables = 0x0013,
343 .in_cables = 0x0013
344 }
345 },
346 {
347 .ifnum = -1
348 }
263 } 349 }
264 } 350 }
265}, 351},
@@ -268,11 +354,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
268 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 354 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
269 .vendor_name = "Roland", 355 .vendor_name = "Roland",
270 .product_name = "PC-300", 356 .product_name = "PC-300",
271 .ifnum = 2, 357 .ifnum = QUIRK_ANY_INTERFACE,
272 .type = QUIRK_MIDI_FIXED_ENDPOINT, 358 .type = QUIRK_COMPOSITE,
273 .data = & (const snd_usb_midi_endpoint_info_t) { 359 .data = (const snd_usb_audio_quirk_t[]) {
274 .out_cables = 0x0001, 360 {
275 .in_cables = 0x0001 361 .ifnum = 0,
362 .type = QUIRK_IGNORE_INTERFACE
363 },
364 {
365 .ifnum = 1,
366 .type = QUIRK_IGNORE_INTERFACE
367 },
368 {
369 .ifnum = 2,
370 .type = QUIRK_MIDI_FIXED_ENDPOINT,
371 .data = & (const snd_usb_midi_endpoint_info_t) {
372 .out_cables = 0x0001,
373 .in_cables = 0x0001
374 }
375 },
376 {
377 .ifnum = -1
378 }
276 } 379 }
277 } 380 }
278}, 381},
@@ -281,11 +384,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
281 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 384 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
282 .vendor_name = "EDIROL", 385 .vendor_name = "EDIROL",
283 .product_name = "UM-1", 386 .product_name = "UM-1",
284 .ifnum = 2, 387 .ifnum = QUIRK_ANY_INTERFACE,
285 .type = QUIRK_MIDI_FIXED_ENDPOINT, 388 .type = QUIRK_COMPOSITE,
286 .data = & (const snd_usb_midi_endpoint_info_t) { 389 .data = (const snd_usb_audio_quirk_t[]) {
287 .out_cables = 0x0001, 390 {
288 .in_cables = 0x0001 391 .ifnum = 0,
392 .type = QUIRK_IGNORE_INTERFACE
393 },
394 {
395 .ifnum = 1,
396 .type = QUIRK_IGNORE_INTERFACE
397 },
398 {
399 .ifnum = 2,
400 .type = QUIRK_MIDI_FIXED_ENDPOINT,
401 .data = & (const snd_usb_midi_endpoint_info_t) {
402 .out_cables = 0x0001,
403 .in_cables = 0x0001
404 }
405 },
406 {
407 .ifnum = -1
408 }
289 } 409 }
290 } 410 }
291}, 411},
@@ -294,11 +414,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
294 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 414 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
295 .vendor_name = "Roland", 415 .vendor_name = "Roland",
296 .product_name = "SK-500", 416 .product_name = "SK-500",
297 .ifnum = 2, 417 .ifnum = QUIRK_ANY_INTERFACE,
298 .type = QUIRK_MIDI_FIXED_ENDPOINT, 418 .type = QUIRK_COMPOSITE,
299 .data = & (const snd_usb_midi_endpoint_info_t) { 419 .data = (const snd_usb_audio_quirk_t[]) {
300 .out_cables = 0x0013, 420 {
301 .in_cables = 0x0013 421 .ifnum = 0,
422 .type = QUIRK_IGNORE_INTERFACE
423 },
424 {
425 .ifnum = 1,
426 .type = QUIRK_IGNORE_INTERFACE
427 },
428 {
429 .ifnum = 2,
430 .type = QUIRK_MIDI_FIXED_ENDPOINT,
431 .data = & (const snd_usb_midi_endpoint_info_t) {
432 .out_cables = 0x0013,
433 .in_cables = 0x0013
434 }
435 },
436 {
437 .ifnum = -1
438 }
302 } 439 }
303 } 440 }
304}, 441},
@@ -421,11 +558,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
421 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 558 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
422 .vendor_name = "EDIROL", 559 .vendor_name = "EDIROL",
423 .product_name = "SD-90", 560 .product_name = "SD-90",
424 .ifnum = 2, 561 .ifnum = QUIRK_ANY_INTERFACE,
425 .type = QUIRK_MIDI_FIXED_ENDPOINT, 562 .type = QUIRK_COMPOSITE,
426 .data = & (const snd_usb_midi_endpoint_info_t) { 563 .data = (const snd_usb_audio_quirk_t[]) {
427 .out_cables = 0x000f, 564 {
428 .in_cables = 0x000f 565 .ifnum = 0,
566 .type = QUIRK_IGNORE_INTERFACE
567 },
568 {
569 .ifnum = 1,
570 .type = QUIRK_IGNORE_INTERFACE
571 },
572 {
573 .ifnum = 2,
574 .type = QUIRK_MIDI_FIXED_ENDPOINT,
575 .data = & (const snd_usb_midi_endpoint_info_t) {
576 .out_cables = 0x000f,
577 .in_cables = 0x000f
578 }
579 },
580 {
581 .ifnum = -1
582 }
429 } 583 }
430 } 584 }
431}, 585},
@@ -434,11 +588,28 @@ YAMAHA_DEVICE(0x7010, "UB99"),
434 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 588 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
435 .vendor_name = "Roland", 589 .vendor_name = "Roland",
436 .product_name = "MMP-2", 590 .product_name = "MMP-2",
437 .ifnum = 2, 591 .ifnum = QUIRK_ANY_INTERFACE,
438 .type = QUIRK_MIDI_FIXED_ENDPOINT, 592 .type = QUIRK_COMPOSITE,
439 .data = & (const snd_usb_midi_endpoint_info_t) { 593 .data = (const snd_usb_audio_quirk_t[]) {
440 .out_cables = 0x0001, 594 {
441 .in_cables = 0x0001 595 .ifnum = 0,
596 .type = QUIRK_IGNORE_INTERFACE
597 },
598 {
599 .ifnum = 1,
600 .type = QUIRK_IGNORE_INTERFACE
601 },
602 {
603 .ifnum = 2,
604 .type = QUIRK_MIDI_FIXED_ENDPOINT,
605 .data = & (const snd_usb_midi_endpoint_info_t) {
606 .out_cables = 0x0001,
607 .in_cables = 0x0001
608 }
609 },
610 {
611 .ifnum = -1
612 }
442 } 613 }
443 } 614 }
444}, 615},
@@ -609,15 +780,33 @@ YAMAHA_DEVICE(0x7010, "UB99"),
609 } 780 }
610}, 781},
611{ 782{
783 /*
784 * This quirk is for the "Advanced Driver" mode. If off, the GS-10
785 * has ID 0x003c and is standard compliant, but has only 16-bit PCM
786 * and no MIDI.
787 */
612 USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b), 788 USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b),
613 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 789 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
614 .vendor_name = "BOSS", 790 .vendor_name = "BOSS",
615 .product_name = "GS-10", 791 .product_name = "GS-10",
616 .ifnum = 3, 792 .ifnum = QUIRK_ANY_INTERFACE,
617 .type = QUIRK_MIDI_FIXED_ENDPOINT, 793 .type = QUIRK_COMPOSITE,
618 .data = & (const snd_usb_midi_endpoint_info_t) { 794 .data = & (const snd_usb_audio_quirk_t[]) {
619 .out_cables = 0x0003, 795 {
620 .in_cables = 0x0003 796 .ifnum = 1,
797 .type = QUIRK_AUDIO_STANDARD_INTERFACE
798 },
799 {
800 .ifnum = 2,
801 .type = QUIRK_AUDIO_STANDARD_INTERFACE
802 },
803 {
804 .ifnum = 3,
805 .type = QUIRK_MIDI_STANDARD_INTERFACE
806 },
807 {
808 .ifnum = -1
809 }
621 } 810 }
622 } 811 }
623}, 812},
@@ -1071,7 +1260,12 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1071/* Mark of the Unicorn devices */ 1260/* Mark of the Unicorn devices */
1072{ 1261{
1073 /* thanks to Robert A. Lerche <ral 'at' msbit.com> */ 1262 /* thanks to Robert A. Lerche <ral 'at' msbit.com> */
1074 USB_DEVICE(0x07fd, 0x0001), 1263 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1264 USB_DEVICE_ID_MATCH_PRODUCT |
1265 USB_DEVICE_ID_MATCH_DEV_SUBCLASS,
1266 .idVendor = 0x07fd,
1267 .idProduct = 0x0001,
1268 .bDeviceSubClass = 2,
1075 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1269 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
1076 .vendor_name = "MOTU", 1270 .vendor_name = "MOTU",
1077 .product_name = "Fastlane", 1271 .product_name = "Fastlane",
@@ -1080,7 +1274,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1080 .data = & (const snd_usb_audio_quirk_t[]) { 1274 .data = & (const snd_usb_audio_quirk_t[]) {
1081 { 1275 {
1082 .ifnum = 0, 1276 .ifnum = 0,
1083 .type = QUIRK_MIDI_MOTU 1277 .type = QUIRK_MIDI_RAW
1084 }, 1278 },
1085 { 1279 {
1086 .ifnum = 1, 1280 .ifnum = 1,
@@ -1185,6 +1379,25 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1185}, 1379},
1186 1380
1187{ 1381{
1382 USB_DEVICE(0x4752, 0x0011),
1383 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
1384 .vendor_name = "Miditech",
1385 .product_name = "Midistart-2",
1386 .ifnum = 0,
1387 .type = QUIRK_MIDI_MIDITECH
1388 }
1389},
1390{
1391 USB_DEVICE(0x7104, 0x2202),
1392 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
1393 .vendor_name = "Miditech",
1394 .product_name = "MidiStudio-2",
1395 .ifnum = 0,
1396 .type = QUIRK_MIDI_MIDITECH
1397 }
1398},
1399
1400{
1188 /* 1401 /*
1189 * Some USB MIDI devices don't have an audio control interface, 1402 * Some USB MIDI devices don't have an audio control interface,
1190 * so we have to grab MIDI streaming interfaces here. 1403 * so we have to grab MIDI streaming interfaces here.