diff options
Diffstat (limited to 'sound/usb/usbquirks.h')
-rw-r--r-- | sound/usb/usbquirks.h | 327 |
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), | |||
116 | YAMAHA_DEVICE(0x103a, NULL), | 116 | YAMAHA_DEVICE(0x103a, NULL), |
117 | YAMAHA_DEVICE(0x103b, NULL), | 117 | YAMAHA_DEVICE(0x103b, NULL), |
118 | YAMAHA_DEVICE(0x103c, NULL), | 118 | YAMAHA_DEVICE(0x103c, NULL), |
119 | YAMAHA_DEVICE(0x103d, NULL), | ||
119 | YAMAHA_DEVICE(0x2000, "DGP-7"), | 120 | YAMAHA_DEVICE(0x2000, "DGP-7"), |
120 | YAMAHA_DEVICE(0x2001, "DGP-5"), | 121 | YAMAHA_DEVICE(0x2001, "DGP-5"), |
121 | YAMAHA_DEVICE(0x2002, NULL), | 122 | YAMAHA_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. |