aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/usbquirks.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb/usbquirks.h')
-rw-r--r--sound/usb/usbquirks.h233
1 files changed, 194 insertions, 39 deletions
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index a892bda03df9..f06faf7917b9 100644
--- a/sound/usb/usbquirks.h
+++ b/sound/usb/usbquirks.h
@@ -91,7 +91,7 @@
91 .idVendor = 0x046d, 91 .idVendor = 0x046d,
92 .idProduct = 0x0850, 92 .idProduct = 0x0850,
93 .bInterfaceClass = USB_CLASS_AUDIO, 93 .bInterfaceClass = USB_CLASS_AUDIO,
94 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 94 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
95}, 95},
96{ 96{
97 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | 97 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
@@ -100,7 +100,7 @@
100 .idVendor = 0x046d, 100 .idVendor = 0x046d,
101 .idProduct = 0x08ae, 101 .idProduct = 0x08ae,
102 .bInterfaceClass = USB_CLASS_AUDIO, 102 .bInterfaceClass = USB_CLASS_AUDIO,
103 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 103 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
104}, 104},
105{ 105{
106 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | 106 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
@@ -109,7 +109,7 @@
109 .idVendor = 0x046d, 109 .idVendor = 0x046d,
110 .idProduct = 0x08c6, 110 .idProduct = 0x08c6,
111 .bInterfaceClass = USB_CLASS_AUDIO, 111 .bInterfaceClass = USB_CLASS_AUDIO,
112 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 112 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
113}, 113},
114{ 114{
115 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | 115 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
@@ -118,7 +118,7 @@
118 .idVendor = 0x046d, 118 .idVendor = 0x046d,
119 .idProduct = 0x08f0, 119 .idProduct = 0x08f0,
120 .bInterfaceClass = USB_CLASS_AUDIO, 120 .bInterfaceClass = USB_CLASS_AUDIO,
121 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 121 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
122}, 122},
123{ 123{
124 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | 124 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
@@ -127,7 +127,7 @@
127 .idVendor = 0x046d, 127 .idVendor = 0x046d,
128 .idProduct = 0x08f5, 128 .idProduct = 0x08f5,
129 .bInterfaceClass = USB_CLASS_AUDIO, 129 .bInterfaceClass = USB_CLASS_AUDIO,
130 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 130 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
131}, 131},
132{ 132{
133 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | 133 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
@@ -136,7 +136,7 @@
136 .idVendor = 0x046d, 136 .idVendor = 0x046d,
137 .idProduct = 0x08f6, 137 .idProduct = 0x08f6,
138 .bInterfaceClass = USB_CLASS_AUDIO, 138 .bInterfaceClass = USB_CLASS_AUDIO,
139 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 139 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
140}, 140},
141{ 141{
142 USB_DEVICE(0x046d, 0x0990), 142 USB_DEVICE(0x046d, 0x0990),
@@ -301,7 +301,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
301 .iface = 1, 301 .iface = 1,
302 .altsetting = 1, 302 .altsetting = 1,
303 .altset_idx = 1, 303 .altset_idx = 1,
304 .attributes = EP_CS_ATTR_FILL_MAX, 304 .attributes = UAC_EP_CS_ATTR_FILL_MAX,
305 .endpoint = 0x81, 305 .endpoint = 0x81,
306 .ep_attr = 0x05, 306 .ep_attr = 0x05,
307 .rates = SNDRV_PCM_RATE_CONTINUOUS, 307 .rates = SNDRV_PCM_RATE_CONTINUOUS,
@@ -1266,37 +1266,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1266 } 1266 }
1267 } 1267 }
1268}, 1268},
1269/* Roland UA-101 in High-Speed Mode only */
1270{
1271 USB_DEVICE(0x0582, 0x007d),
1272 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1273 .vendor_name = "Roland",
1274 .product_name = "UA-101",
1275 .ifnum = QUIRK_ANY_INTERFACE,
1276 .type = QUIRK_COMPOSITE,
1277 .data = (const struct snd_usb_audio_quirk[]) {
1278 {
1279 .ifnum = 0,
1280 .type = QUIRK_AUDIO_EDIROL_UA101
1281 },
1282 {
1283 .ifnum = 1,
1284 .type = QUIRK_AUDIO_EDIROL_UA101
1285 },
1286 {
1287 .ifnum = 2,
1288 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1289 .data = & (const struct snd_usb_midi_endpoint_info) {
1290 .out_cables = 0x0001,
1291 .in_cables = 0x0001
1292 }
1293 },
1294 {
1295 .ifnum = -1
1296 }
1297 }
1298 }
1299},
1300{ 1269{
1301 /* has ID 0x0081 when not in "Advanced Driver" mode */ 1270 /* has ID 0x0081 when not in "Advanced Driver" mode */
1302 USB_DEVICE(0x0582, 0x0080), 1271 USB_DEVICE(0x0582, 0x0080),
@@ -2073,6 +2042,33 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2073 } 2042 }
2074}, 2043},
2075 2044
2045/* Access Music devices */
2046{
2047 /* VirusTI Desktop */
2048 USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),
2049 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2050 .ifnum = QUIRK_ANY_INTERFACE,
2051 .type = QUIRK_COMPOSITE,
2052 .data = &(const struct snd_usb_audio_quirk[]) {
2053 {
2054 .ifnum = 3,
2055 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2056 .data = &(const struct snd_usb_midi_endpoint_info) {
2057 .out_cables = 0x0003,
2058 .in_cables = 0x0003
2059 }
2060 },
2061 {
2062 .ifnum = 4,
2063 .type = QUIRK_IGNORE_INTERFACE
2064 },
2065 {
2066 .ifnum = -1
2067 }
2068 }
2069 }
2070},
2071
2076/* */ 2072/* */
2077{ 2073{
2078 /* aka. Serato Scratch Live DJ Box */ 2074 /* aka. Serato Scratch Live DJ Box */
@@ -2105,6 +2101,165 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2105 } 2101 }
2106}, 2102},
2107 2103
2104/* Hauppauge HVR-950Q and HVR-850 */
2105{
2106 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7200),
2107 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2108 USB_DEVICE_ID_MATCH_INT_CLASS |
2109 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2110 .bInterfaceClass = USB_CLASS_AUDIO,
2111 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2112 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2113 .vendor_name = "Hauppauge",
2114 .product_name = "HVR-950Q",
2115 .ifnum = QUIRK_ANY_INTERFACE,
2116 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2117 }
2118},
2119{
2120 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7201),
2121 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2122 USB_DEVICE_ID_MATCH_INT_CLASS |
2123 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2124 .bInterfaceClass = USB_CLASS_AUDIO,
2125 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2126 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2127 .vendor_name = "Hauppauge",
2128 .product_name = "HVR-950Q",
2129 .ifnum = QUIRK_ANY_INTERFACE,
2130 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2131 }
2132},
2133{
2134 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7202),
2135 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2136 USB_DEVICE_ID_MATCH_INT_CLASS |
2137 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2138 .bInterfaceClass = USB_CLASS_AUDIO,
2139 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2140 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2141 .vendor_name = "Hauppauge",
2142 .product_name = "HVR-950Q",
2143 .ifnum = QUIRK_ANY_INTERFACE,
2144 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2145 }
2146},
2147{
2148 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7203),
2149 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2150 USB_DEVICE_ID_MATCH_INT_CLASS |
2151 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2152 .bInterfaceClass = USB_CLASS_AUDIO,
2153 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2154 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2155 .vendor_name = "Hauppauge",
2156 .product_name = "HVR-950Q",
2157 .ifnum = QUIRK_ANY_INTERFACE,
2158 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2159 }
2160},
2161{
2162 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7204),
2163 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2164 USB_DEVICE_ID_MATCH_INT_CLASS |
2165 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2166 .bInterfaceClass = USB_CLASS_AUDIO,
2167 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2168 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2169 .vendor_name = "Hauppauge",
2170 .product_name = "HVR-950Q",
2171 .ifnum = QUIRK_ANY_INTERFACE,
2172 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2173 }
2174},
2175{
2176 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7205),
2177 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2178 USB_DEVICE_ID_MATCH_INT_CLASS |
2179 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2180 .bInterfaceClass = USB_CLASS_AUDIO,
2181 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2182 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2183 .vendor_name = "Hauppauge",
2184 .product_name = "HVR-950Q",
2185 .ifnum = QUIRK_ANY_INTERFACE,
2186 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2187 }
2188},
2189{
2190 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7250),
2191 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2192 USB_DEVICE_ID_MATCH_INT_CLASS |
2193 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2194 .bInterfaceClass = USB_CLASS_AUDIO,
2195 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2196 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2197 .vendor_name = "Hauppauge",
2198 .product_name = "HVR-950Q",
2199 .ifnum = QUIRK_ANY_INTERFACE,
2200 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2201 }
2202},
2203{
2204 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7230),
2205 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2206 USB_DEVICE_ID_MATCH_INT_CLASS |
2207 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2208 .bInterfaceClass = USB_CLASS_AUDIO,
2209 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2210 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2211 .vendor_name = "Hauppauge",
2212 .product_name = "HVR-850",
2213 .ifnum = QUIRK_ANY_INTERFACE,
2214 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2215 }
2216},
2217
2218/* Digidesign Mbox */
2219{
2220 /* Thanks to Clemens Ladisch <clemens@ladisch.de> */
2221 USB_DEVICE(0x0dba, 0x1000),
2222 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2223 .vendor_name = "Digidesign",
2224 .product_name = "MBox",
2225 .ifnum = QUIRK_ANY_INTERFACE,
2226 .type = QUIRK_COMPOSITE,
2227 .data = (const struct snd_usb_audio_quirk[]){
2228 {
2229 .ifnum = 0,
2230 .type = QUIRK_IGNORE_INTERFACE,
2231 },
2232 {
2233 .ifnum = 1,
2234 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2235 .data = &(const struct audioformat) {
2236 .format = SNDRV_PCM_FORMAT_S24_3BE,
2237 .channels = 2,
2238 .iface = 1,
2239 .altsetting = 1,
2240 .altset_idx = 1,
2241 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2242 .endpoint = 0x02,
2243 .ep_attr = 0x01,
2244 .maxpacksize = 0x130,
2245 .rates = SNDRV_PCM_RATE_44100 |
2246 SNDRV_PCM_RATE_48000,
2247 .rate_min = 44100,
2248 .rate_max = 48000,
2249 .nr_rates = 2,
2250 .rate_table = (unsigned int[]) {
2251 44100, 48000
2252 }
2253 }
2254 },
2255 {
2256 .ifnum = -1
2257 }
2258 }
2259
2260 }
2261},
2262
2108{ 2263{
2109 /* 2264 /*
2110 * Some USB MIDI devices don't have an audio control interface, 2265 * Some USB MIDI devices don't have an audio control interface,
@@ -2113,7 +2268,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2113 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | 2268 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
2114 USB_DEVICE_ID_MATCH_INT_SUBCLASS, 2269 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2115 .bInterfaceClass = USB_CLASS_AUDIO, 2270 .bInterfaceClass = USB_CLASS_AUDIO,
2116 .bInterfaceSubClass = USB_SUBCLASS_MIDI_STREAMING, 2271 .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
2117 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2272 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2118 .ifnum = QUIRK_ANY_INTERFACE, 2273 .ifnum = QUIRK_ANY_INTERFACE,
2119 .type = QUIRK_MIDI_STANDARD_INTERFACE 2274 .type = QUIRK_MIDI_STANDARD_INTERFACE