diff options
Diffstat (limited to 'sound/usb/quirks-table.h')
-rw-r--r-- | sound/usb/quirks-table.h | 198 |
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, |