diff options
Diffstat (limited to 'sound/usb/usbquirks.h')
-rw-r--r-- | sound/usb/usbquirks.h | 233 |
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 |