aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/quirks-table.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb/quirks-table.h')
-rw-r--r--sound/usb/quirks-table.h198
1 files changed, 198 insertions, 0 deletions
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 88d8cebbb244..49f9af995d7a 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -1457,6 +1457,40 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1457 } 1457 }
1458}, 1458},
1459{ 1459{
1460 /* Advanced mode of the Roland VG-99, with MIDI and 24-bit PCM at 44.1
1461 * kHz. In standard mode, the device has ID 0582:00b3, and offers
1462 * 16-bit PCM at 44.1 kHz with no MIDI.
1463 */
1464 USB_DEVICE(0x0582, 0x00b2),
1465 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1466 .vendor_name = "Roland",
1467 .product_name = "VG-99",
1468 .ifnum = QUIRK_ANY_INTERFACE,
1469 .type = QUIRK_COMPOSITE,
1470 .data = (const struct snd_usb_audio_quirk[]) {
1471 {
1472 .ifnum = 0,
1473 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1474 },
1475 {
1476 .ifnum = 1,
1477 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1478 },
1479 {
1480 .ifnum = 2,
1481 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1482 .data = & (const struct snd_usb_midi_endpoint_info) {
1483 .out_cables = 0x0003,
1484 .in_cables = 0x0003
1485 }
1486 },
1487 {
1488 .ifnum = -1
1489 }
1490 }
1491 }
1492},
1493{
1460 /* Roland SonicCell */ 1494 /* Roland SonicCell */
1461 USB_DEVICE(0x0582, 0x00c2), 1495 USB_DEVICE(0x0582, 0x00c2),
1462 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1496 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
@@ -2163,6 +2197,77 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2163 } 2197 }
2164}, 2198},
2165{ 2199{
2200 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
2201 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2202 /* .vendor_name = "M-Audio", */
2203 /* .product_name = "Fast Track C400", */
2204 .ifnum = QUIRK_ANY_INTERFACE,
2205 .type = QUIRK_COMPOSITE,
2206 .data = &(const struct snd_usb_audio_quirk[]) {
2207 {
2208 .ifnum = 1,
2209 .type = QUIRK_AUDIO_STANDARD_MIXER,
2210 },
2211 /* Playback */
2212 {
2213 .ifnum = 2,
2214 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2215 .data = &(const struct audioformat) {
2216 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2217 .channels = 6,
2218 .iface = 2,
2219 .altsetting = 1,
2220 .altset_idx = 1,
2221 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2222 .endpoint = 0x01,
2223 .ep_attr = 0x09,
2224 .rates = SNDRV_PCM_RATE_44100 |
2225 SNDRV_PCM_RATE_48000 |
2226 SNDRV_PCM_RATE_88200 |
2227 SNDRV_PCM_RATE_96000,
2228 .rate_min = 44100,
2229 .rate_max = 96000,
2230 .nr_rates = 4,
2231 .rate_table = (unsigned int[]) {
2232 44100, 48000, 88200, 96000
2233 },
2234 .clock = 0x81,
2235 }
2236 },
2237 /* Capture */
2238 {
2239 .ifnum = 3,
2240 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2241 .data = &(const struct audioformat) {
2242 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2243 .channels = 4,
2244 .iface = 3,
2245 .altsetting = 1,
2246 .altset_idx = 1,
2247 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2248 .endpoint = 0x81,
2249 .ep_attr = 0x05,
2250 .rates = SNDRV_PCM_RATE_44100 |
2251 SNDRV_PCM_RATE_48000 |
2252 SNDRV_PCM_RATE_88200 |
2253 SNDRV_PCM_RATE_96000,
2254 .rate_min = 44100,
2255 .rate_max = 96000,
2256 .nr_rates = 4,
2257 .rate_table = (unsigned int[]) {
2258 44100, 48000, 88200, 96000
2259 },
2260 .clock = 0x81,
2261 }
2262 },
2263 /* MIDI */
2264 {
2265 .ifnum = -1 /* Interface = 4 */
2266 }
2267 }
2268 }
2269},
2270{
2166 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080), 2271 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080),
2167 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2272 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2168 /* .vendor_name = "M-Audio", */ 2273 /* .vendor_name = "M-Audio", */
@@ -2880,6 +2985,99 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2880 } 2985 }
2881}, 2986},
2882 2987
2988/* Reloop Play */
2989{
2990 USB_DEVICE(0x200c, 0x100b),
2991 .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2992 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2993 .ifnum = QUIRK_ANY_INTERFACE,
2994 .type = QUIRK_COMPOSITE,
2995 .data = &(const struct snd_usb_audio_quirk[]) {
2996 {
2997 .ifnum = 0,
2998 .type = QUIRK_AUDIO_STANDARD_MIXER,
2999 },
3000 {
3001 .ifnum = 1,
3002 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3003 .data = &(const struct audioformat) {
3004 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3005 .channels = 4,
3006 .iface = 1,
3007 .altsetting = 1,
3008 .altset_idx = 1,
3009 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
3010 .endpoint = 0x01,
3011 .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,
3012 .rates = SNDRV_PCM_RATE_44100 |
3013 SNDRV_PCM_RATE_48000,
3014 .rate_min = 44100,
3015 .rate_max = 48000,
3016 .nr_rates = 2,
3017 .rate_table = (unsigned int[]) {
3018 44100, 48000
3019 }
3020 }
3021 },
3022 {
3023 .ifnum = -1
3024 }
3025 }
3026 }
3027},
3028
3029{
3030 /*
3031 * Focusrite Scarlett 18i6
3032 *
3033 * Avoid mixer creation, which otherwise fails because some of
3034 * the interface descriptor subtypes for interface 0 are
3035 * unknown. That should be fixed or worked-around but this at
3036 * least allows the device to be used successfully with a DAW
3037 * and an external mixer. See comments below about other
3038 * ignored interfaces.
3039 */
3040 USB_DEVICE(0x1235, 0x8004),
3041 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
3042 .vendor_name = "Focusrite",
3043 .product_name = "Scarlett 18i6",
3044 .ifnum = QUIRK_ANY_INTERFACE,
3045 .type = QUIRK_COMPOSITE,
3046 .data = & (const struct snd_usb_audio_quirk[]) {
3047 {
3048 /* InterfaceSubClass 1 (Control Device) */
3049 .ifnum = 0,
3050 .type = QUIRK_IGNORE_INTERFACE
3051 },
3052 {
3053 .ifnum = 1,
3054 .type = QUIRK_AUDIO_STANDARD_INTERFACE
3055 },
3056 {
3057 .ifnum = 2,
3058 .type = QUIRK_AUDIO_STANDARD_INTERFACE
3059 },
3060 {
3061 /* InterfaceSubClass 1 (Control Device) */
3062 .ifnum = 3,
3063 .type = QUIRK_IGNORE_INTERFACE
3064 },
3065 {
3066 .ifnum = 4,
3067 .type = QUIRK_MIDI_STANDARD_INTERFACE
3068 },
3069 {
3070 /* InterfaceSubClass 1 (Device Firmware Update) */
3071 .ifnum = 5,
3072 .type = QUIRK_IGNORE_INTERFACE
3073 },
3074 {
3075 .ifnum = -1
3076 }
3077 }
3078 }
3079},
3080
2883{ 3081{
2884 /* 3082 /*
2885 * Some USB MIDI devices don't have an audio control interface, 3083 * Some USB MIDI devices don't have an audio control interface,