vserver 1.9.5.x5
[linux-2.6.git] / sound / usb / usbquirks.h
index 29989b6..e79721c 100644 (file)
@@ -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 <emillo@libero.it> for helping researching this data */
+       /* thanks to Emiliano Grilli <emillo@libero.it>
+        * 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