X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sound%2Fusb%2Fusbquirks.h;h=e79721ce1af18330eb215f370f23687ccab37ad1;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=29989b61d39b8b3b4b150c091991f0f85bf04f04;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 29989b61d..e79721ce1 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h @@ -91,6 +91,31 @@ YAMAHA_DEVICE(0x1020, "EZ-250i"), YAMAHA_DEVICE(0x1021, "MOTIF ES 6"), YAMAHA_DEVICE(0x1022, "MOTIF ES 7"), YAMAHA_DEVICE(0x1023, "MOTIF ES 8"), +YAMAHA_DEVICE(0x1024, "CVP-301"), +YAMAHA_DEVICE(0x1025, "CVP-303"), +YAMAHA_DEVICE(0x1026, "CVP-305"), +YAMAHA_DEVICE(0x1027, "CVP-307"), +YAMAHA_DEVICE(0x1028, "CVP-309"), +YAMAHA_DEVICE(0x1029, "CVP-309GP"), +YAMAHA_DEVICE(0x102a, "PSR-1500"), +YAMAHA_DEVICE(0x102b, "PSR-3000"), +YAMAHA_DEVICE(0x102e, "ELS-01/01C"), +YAMAHA_DEVICE(0x1030, "PSR-295/293"), +YAMAHA_DEVICE(0x1031, "DGX-205/203"), +YAMAHA_DEVICE(0x1032, "DGX-305"), +YAMAHA_DEVICE(0x1033, "DGX-505"), +YAMAHA_DEVICE(0x1034, NULL), +YAMAHA_DEVICE(0x1035, NULL), +YAMAHA_DEVICE(0x1036, NULL), +YAMAHA_DEVICE(0x1037, NULL), +YAMAHA_DEVICE(0x1038, NULL), +YAMAHA_DEVICE(0x1039, NULL), +YAMAHA_DEVICE(0x103a, NULL), +YAMAHA_DEVICE(0x103b, NULL), +YAMAHA_DEVICE(0x103c, NULL), +YAMAHA_DEVICE(0x2000, "DGP-7"), +YAMAHA_DEVICE(0x2001, "DGP-5"), +YAMAHA_DEVICE(0x2002, NULL), YAMAHA_DEVICE(0x5000, "CS1D"), YAMAHA_DEVICE(0x5001, "DSP1D"), YAMAHA_DEVICE(0x5002, "DME32"), @@ -100,6 +125,11 @@ YAMAHA_DEVICE(0x5005, "ACU16-C"), YAMAHA_DEVICE(0x5006, "NHB32-C"), YAMAHA_DEVICE(0x5007, "DM1000"), YAMAHA_DEVICE(0x5008, "01V96"), +YAMAHA_DEVICE(0x500a, "PM5D"), +YAMAHA_DEVICE(0x500b, "DME64N"), +YAMAHA_DEVICE(0x500c, "DME24N"), +YAMAHA_DEVICE(0x7000, "DTX"), +YAMAHA_DEVICE(0x7010, "UB99"), #undef YAMAHA_DEVICE #undef YAMAHA_INTERFACE @@ -113,7 +143,7 @@ YAMAHA_DEVICE(0x5008, "01V96"), .product_name = "UA-100", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, - .data = & (const snd_usb_audio_quirk_t[]) { + .data = (const snd_usb_audio_quirk_t[]) { { .ifnum = 0, .type = QUIRK_AUDIO_FIXED_ENDPOINT, @@ -267,14 +297,15 @@ YAMAHA_DEVICE(0x5008, "01V96"), } }, { - /* thanks to Emiliano Grilli for helping researching this data */ + /* thanks to Emiliano Grilli + * for helping researching this data */ USB_DEVICE(0x0582, 0x000c), .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { .vendor_name = "Roland", .product_name = "SC-D70", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, - .data = & (const snd_usb_audio_quirk_t[]) { + .data = (const snd_usb_audio_quirk_t[]) { { .ifnum = 0, .type = QUIRK_AUDIO_FIXED_ENDPOINT, @@ -338,7 +369,7 @@ YAMAHA_DEVICE(0x5008, "01V96"), .product_name = "UA-5", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, - .data = & (const snd_usb_audio_quirk_t[]) { + .data = (const snd_usb_audio_quirk_t[]) { { .ifnum = 1, .type = QUIRK_AUDIO_STANDARD_INTERFACE @@ -443,7 +474,7 @@ YAMAHA_DEVICE(0x5008, "01V96"), .product_name = "UA-20", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, - .data = & (const snd_usb_audio_quirk_t[]) { + .data = (const snd_usb_audio_quirk_t[]) { { .ifnum = 1, .type = QUIRK_AUDIO_STANDARD_INTERFACE @@ -488,16 +519,34 @@ YAMAHA_DEVICE(0x5008, "01V96"), } } }, -{ +{ /* + * This quirk is for the "Advanced" modes of the Edirol UA-700. + * If the sample format switch is not in an advanced setting, the + * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks), + * but offers only 16-bit PCM and no MIDI. + */ USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b), .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { .vendor_name = "EDIROL", .product_name = "UA-700", - .ifnum = 3, - .type = QUIRK_MIDI_FIXED_ENDPOINT, - .data = & (const snd_usb_midi_endpoint_info_t) { - .out_cables = 0x0003, - .in_cables = 0x0003 + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = (const snd_usb_audio_quirk_t[]) { + { + .ifnum = 1, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = 3, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = -1 + } } } }, @@ -579,6 +628,36 @@ YAMAHA_DEVICE(0x5008, "01V96"), } } }, +{ + USB_DEVICE(0x0582, 0x0044), + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { + .vendor_name = "Roland", + .product_name = "UA-1000", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = (const snd_usb_audio_quirk_t[]) { + { + .ifnum = 1, + .type = QUIRK_AUDIO_EDIROL_UA1000 + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_EDIROL_UA1000 + }, + { + .ifnum = 3, + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = & (const snd_usb_midi_endpoint_info_t) { + .out_cables = 0x0003, + .in_cables = 0x0003 + } + }, + { + .ifnum = -1 + } + } + } +}, { USB_DEVICE(0x0582, 0x0048), .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { @@ -629,7 +708,7 @@ YAMAHA_DEVICE(0x5008, "01V96"), .product_name = "UA-3FX", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, - .data = & (const snd_usb_audio_quirk_t[]) { + .data = (const snd_usb_audio_quirk_t[]) { { .ifnum = 1, .type = QUIRK_AUDIO_STANDARD_INTERFACE @@ -653,6 +732,37 @@ YAMAHA_DEVICE(0x5008, "01V96"), .type = QUIRK_MIDI_STANDARD_INTERFACE } }, +{ /* + * This quirk is for the "Advanced" modes of the Edirol UA-25. + * If the switch is not in an advanced setting, the UA-25 has + * ID 0x0582/0x0073 and is standard compliant (no quirks), but + * offers only 16-bit PCM at 44.1 kHz and no MIDI. + */ + USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074), + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { + .vendor_name = "EDIROL", + .product_name = "UA-25", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = (const snd_usb_audio_quirk_t[]) { + { + .ifnum = 0, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = 1, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_EDIROL_UA700_UA25 + }, + { + .ifnum = -1 + } + } + } +}, /* Midiman/M-Audio devices */ { @@ -756,11 +866,42 @@ YAMAHA_DEVICE(0x5008, "01V96"), .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { .vendor_name = "M-Audio", .product_name = "Quattro", - .ifnum = 9, - .type = QUIRK_MIDI_MIDIMAN, - .data = & (const snd_usb_midi_endpoint_info_t) { - .out_cables = 0x0001, - .in_cables = 0x0001 + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = & (const snd_usb_audio_quirk_t[]) { + /* + * Interfaces 0-2 are "Windows-compatible", 16-bit only, + * and share endpoints with the other interfaces. + * Ignore them. The other interfaces can do 24 bits, + * but captured samples are big-endian (see usbaudio.c). + */ + { + .ifnum = 4, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 5, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 7, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 8, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 9, + .type = QUIRK_MIDI_MIDIMAN, + .data = & (const snd_usb_midi_endpoint_info_t) { + .out_cables = 0x0001, + .in_cables = 0x0001 + } + }, + { + .ifnum = -1 + } } } }, @@ -841,4 +982,19 @@ YAMAHA_DEVICE(0x5008, "01V96"), } }, +{ + /* + * Some USB MIDI devices don't have an audio control interface, + * so we have to grab MIDI streaming interfaces here. + */ + .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | + USB_DEVICE_ID_MATCH_INT_SUBCLASS, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = USB_SUBCLASS_MIDI_STREAMING, + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_MIDI_STANDARD_INTERFACE + } +}, + #undef USB_DEVICE_VENDOR_SPEC