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.h263
1 files changed, 194 insertions, 69 deletions
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index a892bda03df..2b426c1fd0e 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,
@@ -1016,36 +1016,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1016 } 1016 }
1017}, 1017},
1018{ 1018{
1019 USB_DEVICE(0x0582, 0x0044),
1020 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1021 .vendor_name = "Roland",
1022 .product_name = "UA-1000",
1023 .ifnum = QUIRK_ANY_INTERFACE,
1024 .type = QUIRK_COMPOSITE,
1025 .data = (const struct snd_usb_audio_quirk[]) {
1026 {
1027 .ifnum = 1,
1028 .type = QUIRK_AUDIO_EDIROL_UA1000
1029 },
1030 {
1031 .ifnum = 2,
1032 .type = QUIRK_AUDIO_EDIROL_UA1000
1033 },
1034 {
1035 .ifnum = 3,
1036 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1037 .data = & (const struct snd_usb_midi_endpoint_info) {
1038 .out_cables = 0x0003,
1039 .in_cables = 0x0003
1040 }
1041 },
1042 {
1043 .ifnum = -1
1044 }
1045 }
1046 }
1047},
1048{
1049 /* has ID 0x0049 when not in "Advanced Driver" mode */ 1019 /* has ID 0x0049 when not in "Advanced Driver" mode */
1050 USB_DEVICE(0x0582, 0x0047), 1020 USB_DEVICE(0x0582, 0x0047),
1051 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1021 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
@@ -1266,37 +1236,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1266 } 1236 }
1267 } 1237 }
1268}, 1238},
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{ 1239{
1301 /* has ID 0x0081 when not in "Advanced Driver" mode */ 1240 /* has ID 0x0081 when not in "Advanced Driver" mode */
1302 USB_DEVICE(0x0582, 0x0080), 1241 USB_DEVICE(0x0582, 0x0080),
@@ -2073,6 +2012,33 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2073 } 2012 }
2074}, 2013},
2075 2014
2015/* Access Music devices */
2016{
2017 /* VirusTI Desktop */
2018 USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),
2019 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2020 .ifnum = QUIRK_ANY_INTERFACE,
2021 .type = QUIRK_COMPOSITE,
2022 .data = &(const struct snd_usb_audio_quirk[]) {
2023 {
2024 .ifnum = 3,
2025 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2026 .data = &(const struct snd_usb_midi_endpoint_info) {
2027 .out_cables = 0x0003,
2028 .in_cables = 0x0003
2029 }
2030 },
2031 {
2032 .ifnum = 4,
2033 .type = QUIRK_IGNORE_INTERFACE
2034 },
2035 {
2036 .ifnum = -1
2037 }
2038 }
2039 }
2040},
2041
2076/* */ 2042/* */
2077{ 2043{
2078 /* aka. Serato Scratch Live DJ Box */ 2044 /* aka. Serato Scratch Live DJ Box */
@@ -2105,6 +2071,165 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2105 } 2071 }
2106}, 2072},
2107 2073
2074/* Hauppauge HVR-950Q and HVR-850 */
2075{
2076 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7200),
2077 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2078 USB_DEVICE_ID_MATCH_INT_CLASS |
2079 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2080 .bInterfaceClass = USB_CLASS_AUDIO,
2081 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2082 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2083 .vendor_name = "Hauppauge",
2084 .product_name = "HVR-950Q",
2085 .ifnum = QUIRK_ANY_INTERFACE,
2086 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2087 }
2088},
2089{
2090 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7201),
2091 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2092 USB_DEVICE_ID_MATCH_INT_CLASS |
2093 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2094 .bInterfaceClass = USB_CLASS_AUDIO,
2095 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2096 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2097 .vendor_name = "Hauppauge",
2098 .product_name = "HVR-950Q",
2099 .ifnum = QUIRK_ANY_INTERFACE,
2100 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2101 }
2102},
2103{
2104 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7202),
2105 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2106 USB_DEVICE_ID_MATCH_INT_CLASS |
2107 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2108 .bInterfaceClass = USB_CLASS_AUDIO,
2109 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2110 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2111 .vendor_name = "Hauppauge",
2112 .product_name = "HVR-950Q",
2113 .ifnum = QUIRK_ANY_INTERFACE,
2114 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2115 }
2116},
2117{
2118 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7203),
2119 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2120 USB_DEVICE_ID_MATCH_INT_CLASS |
2121 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2122 .bInterfaceClass = USB_CLASS_AUDIO,
2123 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2124 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2125 .vendor_name = "Hauppauge",
2126 .product_name = "HVR-950Q",
2127 .ifnum = QUIRK_ANY_INTERFACE,
2128 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2129 }
2130},
2131{
2132 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7204),
2133 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2134 USB_DEVICE_ID_MATCH_INT_CLASS |
2135 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2136 .bInterfaceClass = USB_CLASS_AUDIO,
2137 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2138 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2139 .vendor_name = "Hauppauge",
2140 .product_name = "HVR-950Q",
2141 .ifnum = QUIRK_ANY_INTERFACE,
2142 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2143 }
2144},
2145{
2146 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7205),
2147 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2148 USB_DEVICE_ID_MATCH_INT_CLASS |
2149 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2150 .bInterfaceClass = USB_CLASS_AUDIO,
2151 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2152 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2153 .vendor_name = "Hauppauge",
2154 .product_name = "HVR-950Q",
2155 .ifnum = QUIRK_ANY_INTERFACE,
2156 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2157 }
2158},
2159{
2160 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7250),
2161 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2162 USB_DEVICE_ID_MATCH_INT_CLASS |
2163 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2164 .bInterfaceClass = USB_CLASS_AUDIO,
2165 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2166 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2167 .vendor_name = "Hauppauge",
2168 .product_name = "HVR-950Q",
2169 .ifnum = QUIRK_ANY_INTERFACE,
2170 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2171 }
2172},
2173{
2174 USB_DEVICE_VENDOR_SPEC(0x2040, 0x7230),
2175 .match_flags = USB_DEVICE_ID_MATCH_DEVICE |
2176 USB_DEVICE_ID_MATCH_INT_CLASS |
2177 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2178 .bInterfaceClass = USB_CLASS_AUDIO,
2179 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
2180 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2181 .vendor_name = "Hauppauge",
2182 .product_name = "HVR-850",
2183 .ifnum = QUIRK_ANY_INTERFACE,
2184 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
2185 }
2186},
2187
2188/* Digidesign Mbox */
2189{
2190 /* Thanks to Clemens Ladisch <clemens@ladisch.de> */
2191 USB_DEVICE(0x0dba, 0x1000),
2192 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2193 .vendor_name = "Digidesign",
2194 .product_name = "MBox",
2195 .ifnum = QUIRK_ANY_INTERFACE,
2196 .type = QUIRK_COMPOSITE,
2197 .data = (const struct snd_usb_audio_quirk[]){
2198 {
2199 .ifnum = 0,
2200 .type = QUIRK_IGNORE_INTERFACE,
2201 },
2202 {
2203 .ifnum = 1,
2204 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2205 .data = &(const struct audioformat) {
2206 .format = SNDRV_PCM_FORMAT_S24_3BE,
2207 .channels = 2,
2208 .iface = 1,
2209 .altsetting = 1,
2210 .altset_idx = 1,
2211 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2212 .endpoint = 0x02,
2213 .ep_attr = 0x01,
2214 .maxpacksize = 0x130,
2215 .rates = SNDRV_PCM_RATE_44100 |
2216 SNDRV_PCM_RATE_48000,
2217 .rate_min = 44100,
2218 .rate_max = 48000,
2219 .nr_rates = 2,
2220 .rate_table = (unsigned int[]) {
2221 44100, 48000
2222 }
2223 }
2224 },
2225 {
2226 .ifnum = -1
2227 }
2228 }
2229
2230 }
2231},
2232
2108{ 2233{
2109 /* 2234 /*
2110 * Some USB MIDI devices don't have an audio control interface, 2235 * Some USB MIDI devices don't have an audio control interface,
@@ -2113,7 +2238,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
2113 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | 2238 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
2114 USB_DEVICE_ID_MATCH_INT_SUBCLASS, 2239 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2115 .bInterfaceClass = USB_CLASS_AUDIO, 2240 .bInterfaceClass = USB_CLASS_AUDIO,
2116 .bInterfaceSubClass = USB_SUBCLASS_MIDI_STREAMING, 2241 .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
2117 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2242 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2118 .ifnum = QUIRK_ANY_INTERFACE, 2243 .ifnum = QUIRK_ANY_INTERFACE,
2119 .type = QUIRK_MIDI_STANDARD_INTERFACE 2244 .type = QUIRK_MIDI_STANDARD_INTERFACE