~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/usb/quirks-table.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /sound/usb/quirks-table.h (Version linux-6.12-rc7) and /sound/usb/quirks-table.h (Version linux-5.11.22)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *      1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*                                                  2 /*
  3  * ALSA USB Audio Driver                            3  * ALSA USB Audio Driver
  4  *                                                  4  *
  5  * Copyright (c) 2002 by Takashi Iwai <tiwai@s      5  * Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>,
  6  *                       Clemens Ladisch <clem      6  *                       Clemens Ladisch <clemens@ladisch.de>
  7  */                                                 7  */
  8                                                     8 
  9 /*                                                  9 /*
 10  * The contents of this file are part of the d     10  * The contents of this file are part of the driver's id_table.
 11  *                                                 11  *
 12  * In a perfect world, this file would be empt     12  * In a perfect world, this file would be empty.
 13  */                                                13  */
 14                                                    14 
 15 /*                                                 15 /*
 16  * Use this for devices where other interfaces     16  * Use this for devices where other interfaces are standard compliant,
 17  * to prevent the quirk being applied to those     17  * to prevent the quirk being applied to those interfaces. (To work with
 18  * hotplugging, bDeviceClass must be set to US     18  * hotplugging, bDeviceClass must be set to USB_CLASS_PER_INTERFACE.)
 19  */                                                19  */
 20 #define USB_DEVICE_VENDOR_SPEC(vend, prod) \       20 #define USB_DEVICE_VENDOR_SPEC(vend, prod) \
 21         .match_flags = USB_DEVICE_ID_MATCH_VEN     21         .match_flags = USB_DEVICE_ID_MATCH_VENDOR | \
 22                        USB_DEVICE_ID_MATCH_PRO     22                        USB_DEVICE_ID_MATCH_PRODUCT | \
 23                        USB_DEVICE_ID_MATCH_INT     23                        USB_DEVICE_ID_MATCH_INT_CLASS, \
 24         .idVendor = vend, \                        24         .idVendor = vend, \
 25         .idProduct = prod, \                       25         .idProduct = prod, \
 26         .bInterfaceClass = USB_CLASS_VENDOR_SP     26         .bInterfaceClass = USB_CLASS_VENDOR_SPEC
 27                                                    27 
 28 /* A standard entry matching with vid/pid and      28 /* A standard entry matching with vid/pid and the audio class/subclass */
 29 #define USB_AUDIO_DEVICE(vend, prod) \             29 #define USB_AUDIO_DEVICE(vend, prod) \
 30         .match_flags = USB_DEVICE_ID_MATCH_DEV     30         .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
 31                        USB_DEVICE_ID_MATCH_INT     31                        USB_DEVICE_ID_MATCH_INT_CLASS | \
 32                        USB_DEVICE_ID_MATCH_INT     32                        USB_DEVICE_ID_MATCH_INT_SUBCLASS, \
 33         .idVendor = vend, \                        33         .idVendor = vend, \
 34         .idProduct = prod, \                       34         .idProduct = prod, \
 35         .bInterfaceClass = USB_CLASS_AUDIO, \      35         .bInterfaceClass = USB_CLASS_AUDIO, \
 36         .bInterfaceSubClass = USB_SUBCLASS_AUD     36         .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
 37                                                    37 
 38 /* Quirk .driver_info, followed by the definit << 
 39  * put like QUIRK_DRIVER_INFO { ... } in each  << 
 40  */                                            << 
 41 #define QUIRK_DRIVER_INFO \                    << 
 42         .driver_info = (unsigned long)&(const  << 
 43                                                << 
 44 /*                                             << 
 45  * Macros for quirk data entries               << 
 46  */                                            << 
 47                                                << 
 48 /* Quirk data entry for ignoring the interface << 
 49 #define QUIRK_DATA_IGNORE(_ifno) \             << 
 50         .ifnum = (_ifno), .type = QUIRK_IGNORE << 
 51 /* Quirk data entry for a standard audio inter << 
 52 #define QUIRK_DATA_STANDARD_AUDIO(_ifno) \     << 
 53         .ifnum = (_ifno), .type = QUIRK_AUDIO_ << 
 54 /* Quirk data entry for a standard MIDI interf << 
 55 #define QUIRK_DATA_STANDARD_MIDI(_ifno) \      << 
 56         .ifnum = (_ifno), .type = QUIRK_MIDI_S << 
 57 /* Quirk data entry for a standard mixer inter << 
 58 #define QUIRK_DATA_STANDARD_MIXER(_ifno) \     << 
 59         .ifnum = (_ifno), .type = QUIRK_AUDIO_ << 
 60                                                << 
 61 /* Quirk data entry for Yamaha MIDI */         << 
 62 #define QUIRK_DATA_MIDI_YAMAHA(_ifno) \        << 
 63         .ifnum = (_ifno), .type = QUIRK_MIDI_Y << 
 64 /* Quirk data entry for Edirol UAxx */         << 
 65 #define QUIRK_DATA_EDIROL_UAXX(_ifno) \        << 
 66         .ifnum = (_ifno), .type = QUIRK_AUDIO_ << 
 67 /* Quirk data entry for raw bytes interface */ << 
 68 #define QUIRK_DATA_RAW_BYTES(_ifno) \          << 
 69         .ifnum = (_ifno), .type = QUIRK_MIDI_R << 
 70                                                << 
 71 /* Quirk composite array terminator */         << 
 72 #define QUIRK_COMPOSITE_END     { .ifnum = -1  << 
 73                                                << 
 74 /* Quirk data entry for composite quirks;      << 
 75  * followed by the quirk array that is termina << 
 76  * e.g. QUIRK_DATA_COMPOSITE { { quirk1 }, { q << 
 77  */                                            << 
 78 #define QUIRK_DATA_COMPOSITE \                 << 
 79         .ifnum = QUIRK_ANY_INTERFACE, \        << 
 80         .type = QUIRK_COMPOSITE, \             << 
 81         .data = &(const struct snd_usb_audio_q << 
 82                                                << 
 83 /* Quirk data entry for a fixed audio endpoint << 
 84  * followed by audioformat definition          << 
 85  * e.g. QUIRK_DATA_AUDIOFORMAT(n) { .formats = << 
 86  */                                            << 
 87 #define QUIRK_DATA_AUDIOFORMAT(_ifno)       \  << 
 88         .ifnum = (_ifno),                   \  << 
 89         .type = QUIRK_AUDIO_FIXED_ENDPOINT, \  << 
 90         .data = &(const struct audioformat)    << 
 91                                                << 
 92 /* Quirk data entry for a fixed MIDI endpoint; << 
 93  * followed by snd_usb_midi_endpoint_info defi << 
 94  * e.g. QUIRK_DATA_MIDI_FIXED_ENDPOINT(n) { .o << 
 95  */                                            << 
 96 #define QUIRK_DATA_MIDI_FIXED_ENDPOINT(_ifno)  << 
 97         .ifnum = (_ifno),                      << 
 98         .type = QUIRK_MIDI_FIXED_ENDPOINT,     << 
 99         .data = &(const struct snd_usb_midi_en << 
100 /* Quirk data entry for a MIDIMAN MIDI endpoin << 
101 #define QUIRK_DATA_MIDI_MIDIMAN(_ifno) \       << 
102         .ifnum = (_ifno),              \       << 
103         .type = QUIRK_MIDI_MIDIMAN,    \       << 
104         .data = &(const struct snd_usb_midi_en << 
105 /* Quirk data entry for a EMAGIC MIDI endpoint << 
106 #define QUIRK_DATA_MIDI_EMAGIC(_ifno) \        << 
107         .ifnum = (_ifno),             \        << 
108         .type = QUIRK_MIDI_EMAGIC,    \        << 
109         .data = &(const struct snd_usb_midi_en << 
110                                                << 
111 /*                                             << 
112  * Here we go... the quirk table definition be << 
113  */                                            << 
114                                                << 
115 /* FTDI devices */                                 38 /* FTDI devices */
116 {                                                  39 {
117         USB_DEVICE(0x0403, 0xb8d8),                40         USB_DEVICE(0x0403, 0xb8d8),
118         QUIRK_DRIVER_INFO {                    !!  41         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
119                 /* .vendor_name = "STARR LABS"     42                 /* .vendor_name = "STARR LABS", */
120                 /* .product_name = "Starr Labs     43                 /* .product_name = "Starr Labs MIDI USB device", */
121                 .ifnum = 0,                        44                 .ifnum = 0,
122                 .type = QUIRK_MIDI_FTDI            45                 .type = QUIRK_MIDI_FTDI
123         }                                          46         }
124 },                                                 47 },
125                                                    48 
126 {                                                  49 {
127         /* Creative BT-D1 */                       50         /* Creative BT-D1 */
128         USB_DEVICE(0x041e, 0x0005),                51         USB_DEVICE(0x041e, 0x0005),
129         QUIRK_DRIVER_INFO {                    !!  52         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
130                 QUIRK_DATA_AUDIOFORMAT(1) {    !!  53                 .ifnum = 1,
                                                   >>  54                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >>  55                 .data = &(const struct audioformat) {
131                         .formats = SNDRV_PCM_F     56                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
132                         .channels = 2,             57                         .channels = 2,
133                         .iface = 1,                58                         .iface = 1,
134                         .altsetting = 1,           59                         .altsetting = 1,
135                         .altset_idx = 1,           60                         .altset_idx = 1,
136                         .endpoint = 0x03,          61                         .endpoint = 0x03,
137                         .ep_attr = USB_ENDPOIN     62                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
138                         .attributes = 0,           63                         .attributes = 0,
139                         .rates = SNDRV_PCM_RAT     64                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
140                         .rate_min = 48000,         65                         .rate_min = 48000,
141                         .rate_max = 48000,         66                         .rate_max = 48000,
142                 }                                  67                 }
143         }                                          68         }
144 },                                                 69 },
145                                                    70 
146 /* E-Mu 0202 USB */                                71 /* E-Mu 0202 USB */
147 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) },        72 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) },
148 /* E-Mu 0404 USB */                                73 /* E-Mu 0404 USB */
149 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) },        74 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) },
150 /* E-Mu Tracker Pre */                             75 /* E-Mu Tracker Pre */
151 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) },        76 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) },
152 /* E-Mu 0204 USB */                                77 /* E-Mu 0204 USB */
153 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) },        78 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) },
154 /* Ktmicro Usb_audio device */                 << 
155 { USB_DEVICE_VENDOR_SPEC(0x31b2, 0x0011) },    << 
156                                                << 
157 /*                                             << 
158  * Creative Technology, Ltd Live! Cam Sync HD  << 
159  * The device advertises 8 formats, but only a << 
160  * hardware and 24 bits give chopped audio, so << 
161  * combination.                                << 
162  */                                            << 
163 {                                              << 
164         USB_AUDIO_DEVICE(0x041e, 0x4095),      << 
165         QUIRK_DRIVER_INFO {                    << 
166                 QUIRK_DATA_COMPOSITE {         << 
167                         { QUIRK_DATA_STANDARD_ << 
168                         {                      << 
169                                 QUIRK_DATA_AUD << 
170                                         .forma << 
171                                         .chann << 
172                                         .fmt_b << 
173                                         .iface << 
174                                         .altse << 
175                                         .altse << 
176                                         .endpo << 
177                                         .ep_at << 
178                                         .rates << 
179                                         .rate_ << 
180                                         .rate_ << 
181                                         .nr_ra << 
182                                         .rate_ << 
183                                 },             << 
184                         },                     << 
185                         QUIRK_COMPOSITE_END    << 
186                 },                             << 
187         },                                     << 
188 },                                             << 
189                                                    79 
190 /*                                                 80 /*
191  * HP Wireless Audio                               81  * HP Wireless Audio
192  * When not ignored, causes instability issues     82  * When not ignored, causes instability issues for some users, forcing them to
193  * skip the entire module.                         83  * skip the entire module.
194  */                                                84  */
195 {                                                  85 {
196         USB_DEVICE(0x0424, 0xb832),                86         USB_DEVICE(0x0424, 0xb832),
197         QUIRK_DRIVER_INFO {                    !!  87         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
198                 .vendor_name = "Standard Micro     88                 .vendor_name = "Standard Microsystems Corp.",
199                 .product_name = "HP Wireless A     89                 .product_name = "HP Wireless Audio",
200                 QUIRK_DATA_COMPOSITE {         !!  90                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >>  91                 .type = QUIRK_COMPOSITE,
                                                   >>  92                 .data = (const struct snd_usb_audio_quirk[]) {
201                         /* Mixer */                93                         /* Mixer */
202                         { QUIRK_DATA_IGNORE(0) !!  94                         {
                                                   >>  95                                 .ifnum = 0,
                                                   >>  96                                 .type = QUIRK_IGNORE_INTERFACE,
                                                   >>  97                         },
203                         /* Playback */             98                         /* Playback */
204                         { QUIRK_DATA_IGNORE(1) !!  99                         {
                                                   >> 100                                 .ifnum = 1,
                                                   >> 101                                 .type = QUIRK_IGNORE_INTERFACE,
                                                   >> 102                         },
205                         /* Capture */             103                         /* Capture */
206                         { QUIRK_DATA_IGNORE(2) !! 104                         {
                                                   >> 105                                 .ifnum = 2,
                                                   >> 106                                 .type = QUIRK_IGNORE_INTERFACE,
                                                   >> 107                         },
207                         /* HID Device, .ifnum     108                         /* HID Device, .ifnum = 3 */
208                         QUIRK_COMPOSITE_END    !! 109                         {
                                                   >> 110                                 .ifnum = -1,
                                                   >> 111                         }
209                 }                                 112                 }
210         }                                         113         }
211 },                                                114 },
212                                                   115 
213 /*                                                116 /*
214  * Logitech QuickCam: bDeviceClass is vendor-s    117  * Logitech QuickCam: bDeviceClass is vendor-specific, so generic interface
215  * class matches do not take effect without an    118  * class matches do not take effect without an explicit ID match.
216  */                                               119  */
217 { USB_AUDIO_DEVICE(0x046d, 0x0850) },             120 { USB_AUDIO_DEVICE(0x046d, 0x0850) },
218 { USB_AUDIO_DEVICE(0x046d, 0x08ae) },             121 { USB_AUDIO_DEVICE(0x046d, 0x08ae) },
219 { USB_AUDIO_DEVICE(0x046d, 0x08c6) },             122 { USB_AUDIO_DEVICE(0x046d, 0x08c6) },
220 { USB_AUDIO_DEVICE(0x046d, 0x08f0) },             123 { USB_AUDIO_DEVICE(0x046d, 0x08f0) },
221 { USB_AUDIO_DEVICE(0x046d, 0x08f5) },             124 { USB_AUDIO_DEVICE(0x046d, 0x08f5) },
222 { USB_AUDIO_DEVICE(0x046d, 0x08f6) },             125 { USB_AUDIO_DEVICE(0x046d, 0x08f6) },
223 { USB_AUDIO_DEVICE(0x046d, 0x0990) },             126 { USB_AUDIO_DEVICE(0x046d, 0x0990) },
224                                                   127 
225 /*                                                128 /*
226  * Yamaha devices                                 129  * Yamaha devices
227  */                                               130  */
228                                                   131 
229 #define YAMAHA_DEVICE(id, name) { \               132 #define YAMAHA_DEVICE(id, name) { \
230         USB_DEVICE(0x0499, id), \                 133         USB_DEVICE(0x0499, id), \
231         QUIRK_DRIVER_INFO { \                  !! 134         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \
232                 .vendor_name = "Yamaha", \        135                 .vendor_name = "Yamaha", \
233                 .product_name = name, \           136                 .product_name = name, \
234                 QUIRK_DATA_MIDI_YAMAHA(QUIRK_A !! 137                 .ifnum = QUIRK_ANY_INTERFACE, \
                                                   >> 138                 .type = QUIRK_MIDI_YAMAHA \
235         } \                                       139         } \
236 }                                                 140 }
237 #define YAMAHA_INTERFACE(id, intf, name) { \      141 #define YAMAHA_INTERFACE(id, intf, name) { \
238         USB_DEVICE_VENDOR_SPEC(0x0499, id), \     142         USB_DEVICE_VENDOR_SPEC(0x0499, id), \
239         QUIRK_DRIVER_INFO { \                  !! 143         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \
240                 .vendor_name = "Yamaha", \        144                 .vendor_name = "Yamaha", \
241                 .product_name = name, \           145                 .product_name = name, \
242                 QUIRK_DATA_MIDI_YAMAHA(intf) \ !! 146                 .ifnum = intf, \
                                                   >> 147                 .type = QUIRK_MIDI_YAMAHA \
243         } \                                       148         } \
244 }                                                 149 }
245 YAMAHA_DEVICE(0x1000, "UX256"),                   150 YAMAHA_DEVICE(0x1000, "UX256"),
246 YAMAHA_DEVICE(0x1001, "MU1000"),                  151 YAMAHA_DEVICE(0x1001, "MU1000"),
247 YAMAHA_DEVICE(0x1002, "MU2000"),                  152 YAMAHA_DEVICE(0x1002, "MU2000"),
248 YAMAHA_DEVICE(0x1003, "MU500"),                   153 YAMAHA_DEVICE(0x1003, "MU500"),
249 YAMAHA_INTERFACE(0x1004, 3, "UW500"),             154 YAMAHA_INTERFACE(0x1004, 3, "UW500"),
250 YAMAHA_DEVICE(0x1005, "MOTIF6"),                  155 YAMAHA_DEVICE(0x1005, "MOTIF6"),
251 YAMAHA_DEVICE(0x1006, "MOTIF7"),                  156 YAMAHA_DEVICE(0x1006, "MOTIF7"),
252 YAMAHA_DEVICE(0x1007, "MOTIF8"),                  157 YAMAHA_DEVICE(0x1007, "MOTIF8"),
253 YAMAHA_DEVICE(0x1008, "UX96"),                    158 YAMAHA_DEVICE(0x1008, "UX96"),
254 YAMAHA_DEVICE(0x1009, "UX16"),                    159 YAMAHA_DEVICE(0x1009, "UX16"),
255 YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),            160 YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),
256 YAMAHA_DEVICE(0x100c, "UC-MX"),                   161 YAMAHA_DEVICE(0x100c, "UC-MX"),
257 YAMAHA_DEVICE(0x100d, "UC-KX"),                   162 YAMAHA_DEVICE(0x100d, "UC-KX"),
258 YAMAHA_DEVICE(0x100e, "S08"),                     163 YAMAHA_DEVICE(0x100e, "S08"),
259 YAMAHA_DEVICE(0x100f, "CLP-150"),                 164 YAMAHA_DEVICE(0x100f, "CLP-150"),
260 YAMAHA_DEVICE(0x1010, "CLP-170"),                 165 YAMAHA_DEVICE(0x1010, "CLP-170"),
261 YAMAHA_DEVICE(0x1011, "P-250"),                   166 YAMAHA_DEVICE(0x1011, "P-250"),
262 YAMAHA_DEVICE(0x1012, "TYROS"),                   167 YAMAHA_DEVICE(0x1012, "TYROS"),
263 YAMAHA_DEVICE(0x1013, "PF-500"),                  168 YAMAHA_DEVICE(0x1013, "PF-500"),
264 YAMAHA_DEVICE(0x1014, "S90"),                     169 YAMAHA_DEVICE(0x1014, "S90"),
265 YAMAHA_DEVICE(0x1015, "MOTIF-R"),                 170 YAMAHA_DEVICE(0x1015, "MOTIF-R"),
266 YAMAHA_DEVICE(0x1016, "MDP-5"),                   171 YAMAHA_DEVICE(0x1016, "MDP-5"),
267 YAMAHA_DEVICE(0x1017, "CVP-204"),                 172 YAMAHA_DEVICE(0x1017, "CVP-204"),
268 YAMAHA_DEVICE(0x1018, "CVP-206"),                 173 YAMAHA_DEVICE(0x1018, "CVP-206"),
269 YAMAHA_DEVICE(0x1019, "CVP-208"),                 174 YAMAHA_DEVICE(0x1019, "CVP-208"),
270 YAMAHA_DEVICE(0x101a, "CVP-210"),                 175 YAMAHA_DEVICE(0x101a, "CVP-210"),
271 YAMAHA_DEVICE(0x101b, "PSR-1100"),                176 YAMAHA_DEVICE(0x101b, "PSR-1100"),
272 YAMAHA_DEVICE(0x101c, "PSR-2100"),                177 YAMAHA_DEVICE(0x101c, "PSR-2100"),
273 YAMAHA_DEVICE(0x101d, "CLP-175"),                 178 YAMAHA_DEVICE(0x101d, "CLP-175"),
274 YAMAHA_DEVICE(0x101e, "PSR-K1"),                  179 YAMAHA_DEVICE(0x101e, "PSR-K1"),
275 YAMAHA_DEVICE(0x101f, "EZ-J24"),                  180 YAMAHA_DEVICE(0x101f, "EZ-J24"),
276 YAMAHA_DEVICE(0x1020, "EZ-250i"),                 181 YAMAHA_DEVICE(0x1020, "EZ-250i"),
277 YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),              182 YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),
278 YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),              183 YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),
279 YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),              184 YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),
280 YAMAHA_DEVICE(0x1024, "CVP-301"),                 185 YAMAHA_DEVICE(0x1024, "CVP-301"),
281 YAMAHA_DEVICE(0x1025, "CVP-303"),                 186 YAMAHA_DEVICE(0x1025, "CVP-303"),
282 YAMAHA_DEVICE(0x1026, "CVP-305"),                 187 YAMAHA_DEVICE(0x1026, "CVP-305"),
283 YAMAHA_DEVICE(0x1027, "CVP-307"),                 188 YAMAHA_DEVICE(0x1027, "CVP-307"),
284 YAMAHA_DEVICE(0x1028, "CVP-309"),                 189 YAMAHA_DEVICE(0x1028, "CVP-309"),
285 YAMAHA_DEVICE(0x1029, "CVP-309GP"),               190 YAMAHA_DEVICE(0x1029, "CVP-309GP"),
286 YAMAHA_DEVICE(0x102a, "PSR-1500"),                191 YAMAHA_DEVICE(0x102a, "PSR-1500"),
287 YAMAHA_DEVICE(0x102b, "PSR-3000"),                192 YAMAHA_DEVICE(0x102b, "PSR-3000"),
288 YAMAHA_DEVICE(0x102e, "ELS-01/01C"),              193 YAMAHA_DEVICE(0x102e, "ELS-01/01C"),
289 YAMAHA_DEVICE(0x1030, "PSR-295/293"),             194 YAMAHA_DEVICE(0x1030, "PSR-295/293"),
290 YAMAHA_DEVICE(0x1031, "DGX-205/203"),             195 YAMAHA_DEVICE(0x1031, "DGX-205/203"),
291 YAMAHA_DEVICE(0x1032, "DGX-305"),                 196 YAMAHA_DEVICE(0x1032, "DGX-305"),
292 YAMAHA_DEVICE(0x1033, "DGX-505"),                 197 YAMAHA_DEVICE(0x1033, "DGX-505"),
293 YAMAHA_DEVICE(0x1034, NULL),                      198 YAMAHA_DEVICE(0x1034, NULL),
294 YAMAHA_DEVICE(0x1035, NULL),                      199 YAMAHA_DEVICE(0x1035, NULL),
295 YAMAHA_DEVICE(0x1036, NULL),                      200 YAMAHA_DEVICE(0x1036, NULL),
296 YAMAHA_DEVICE(0x1037, NULL),                      201 YAMAHA_DEVICE(0x1037, NULL),
297 YAMAHA_DEVICE(0x1038, NULL),                      202 YAMAHA_DEVICE(0x1038, NULL),
298 YAMAHA_DEVICE(0x1039, NULL),                      203 YAMAHA_DEVICE(0x1039, NULL),
299 YAMAHA_DEVICE(0x103a, NULL),                      204 YAMAHA_DEVICE(0x103a, NULL),
300 YAMAHA_DEVICE(0x103b, NULL),                      205 YAMAHA_DEVICE(0x103b, NULL),
301 YAMAHA_DEVICE(0x103c, NULL),                      206 YAMAHA_DEVICE(0x103c, NULL),
302 YAMAHA_DEVICE(0x103d, NULL),                      207 YAMAHA_DEVICE(0x103d, NULL),
303 YAMAHA_DEVICE(0x103e, NULL),                      208 YAMAHA_DEVICE(0x103e, NULL),
304 YAMAHA_DEVICE(0x103f, NULL),                      209 YAMAHA_DEVICE(0x103f, NULL),
305 YAMAHA_DEVICE(0x1040, NULL),                      210 YAMAHA_DEVICE(0x1040, NULL),
306 YAMAHA_DEVICE(0x1041, NULL),                      211 YAMAHA_DEVICE(0x1041, NULL),
307 YAMAHA_DEVICE(0x1042, NULL),                      212 YAMAHA_DEVICE(0x1042, NULL),
308 YAMAHA_DEVICE(0x1043, NULL),                      213 YAMAHA_DEVICE(0x1043, NULL),
309 YAMAHA_DEVICE(0x1044, NULL),                      214 YAMAHA_DEVICE(0x1044, NULL),
310 YAMAHA_DEVICE(0x1045, NULL),                      215 YAMAHA_DEVICE(0x1045, NULL),
311 YAMAHA_INTERFACE(0x104e, 0, NULL),                216 YAMAHA_INTERFACE(0x104e, 0, NULL),
312 YAMAHA_DEVICE(0x104f, NULL),                      217 YAMAHA_DEVICE(0x104f, NULL),
313 YAMAHA_DEVICE(0x1050, NULL),                      218 YAMAHA_DEVICE(0x1050, NULL),
314 YAMAHA_DEVICE(0x1051, NULL),                      219 YAMAHA_DEVICE(0x1051, NULL),
315 YAMAHA_DEVICE(0x1052, NULL),                      220 YAMAHA_DEVICE(0x1052, NULL),
316 YAMAHA_INTERFACE(0x1053, 0, NULL),                221 YAMAHA_INTERFACE(0x1053, 0, NULL),
317 YAMAHA_INTERFACE(0x1054, 0, NULL),                222 YAMAHA_INTERFACE(0x1054, 0, NULL),
318 YAMAHA_DEVICE(0x1055, NULL),                      223 YAMAHA_DEVICE(0x1055, NULL),
319 YAMAHA_DEVICE(0x1056, NULL),                      224 YAMAHA_DEVICE(0x1056, NULL),
320 YAMAHA_DEVICE(0x1057, NULL),                      225 YAMAHA_DEVICE(0x1057, NULL),
321 YAMAHA_DEVICE(0x1058, NULL),                      226 YAMAHA_DEVICE(0x1058, NULL),
322 YAMAHA_DEVICE(0x1059, NULL),                      227 YAMAHA_DEVICE(0x1059, NULL),
323 YAMAHA_DEVICE(0x105a, NULL),                      228 YAMAHA_DEVICE(0x105a, NULL),
324 YAMAHA_DEVICE(0x105b, NULL),                      229 YAMAHA_DEVICE(0x105b, NULL),
325 YAMAHA_DEVICE(0x105c, NULL),                      230 YAMAHA_DEVICE(0x105c, NULL),
326 YAMAHA_DEVICE(0x105d, NULL),                      231 YAMAHA_DEVICE(0x105d, NULL),
327 YAMAHA_DEVICE(0x1718, "P-125"),                << 
328 {                                                 232 {
329         USB_DEVICE(0x0499, 0x1503),               233         USB_DEVICE(0x0499, 0x1503),
330         QUIRK_DRIVER_INFO {                    !! 234         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
331                 /* .vendor_name = "Yamaha", */    235                 /* .vendor_name = "Yamaha", */
332                 /* .product_name = "MOX6/MOX8"    236                 /* .product_name = "MOX6/MOX8", */
333                 QUIRK_DATA_COMPOSITE {         !! 237                 .ifnum = QUIRK_ANY_INTERFACE,
334                         { QUIRK_DATA_STANDARD_ !! 238                 .type = QUIRK_COMPOSITE,
335                         { QUIRK_DATA_STANDARD_ !! 239                 .data = (const struct snd_usb_audio_quirk[]) {
336                         { QUIRK_DATA_MIDI_YAMA !! 240                         {
337                         QUIRK_COMPOSITE_END    !! 241                                 .ifnum = 1,
                                                   >> 242                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 243                         },
                                                   >> 244                         {
                                                   >> 245                                 .ifnum = 2,
                                                   >> 246                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 247                         },
                                                   >> 248                         {
                                                   >> 249                                 .ifnum = 3,
                                                   >> 250                                 .type = QUIRK_MIDI_YAMAHA
                                                   >> 251                         },
                                                   >> 252                         {
                                                   >> 253                                 .ifnum = -1
                                                   >> 254                         }
338                 }                                 255                 }
339         }                                         256         }
340 },                                                257 },
341 {                                                 258 {
342         USB_DEVICE(0x0499, 0x1507),               259         USB_DEVICE(0x0499, 0x1507),
343         QUIRK_DRIVER_INFO {                    !! 260         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
344                 /* .vendor_name = "Yamaha", */    261                 /* .vendor_name = "Yamaha", */
345                 /* .product_name = "THR10", */    262                 /* .product_name = "THR10", */
346                 QUIRK_DATA_COMPOSITE {         !! 263                 .ifnum = QUIRK_ANY_INTERFACE,
347                         { QUIRK_DATA_STANDARD_ !! 264                 .type = QUIRK_COMPOSITE,
348                         { QUIRK_DATA_STANDARD_ !! 265                 .data = (const struct snd_usb_audio_quirk[]) {
349                         { QUIRK_DATA_MIDI_YAMA !! 266                         {
350                         QUIRK_COMPOSITE_END    !! 267                                 .ifnum = 1,
                                                   >> 268                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 269                         },
                                                   >> 270                         {
                                                   >> 271                                 .ifnum = 2,
                                                   >> 272                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 273                         },
                                                   >> 274                         {
                                                   >> 275                                 .ifnum = 3,
                                                   >> 276                                 .type = QUIRK_MIDI_YAMAHA
                                                   >> 277                         },
                                                   >> 278                         {
                                                   >> 279                                 .ifnum = -1
                                                   >> 280                         }
351                 }                                 281                 }
352         }                                         282         }
353 },                                                283 },
354 {                                                 284 {
355         USB_DEVICE(0x0499, 0x1509),               285         USB_DEVICE(0x0499, 0x1509),
356         QUIRK_DRIVER_INFO {                    !! 286         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
357                 /* .vendor_name = "Yamaha", */    287                 /* .vendor_name = "Yamaha", */
358                 /* .product_name = "Steinberg     288                 /* .product_name = "Steinberg UR22", */
359                 QUIRK_DATA_COMPOSITE {         !! 289                 .ifnum = QUIRK_ANY_INTERFACE,
360                         { QUIRK_DATA_STANDARD_ !! 290                 .type = QUIRK_COMPOSITE,
361                         { QUIRK_DATA_STANDARD_ !! 291                 .data = (const struct snd_usb_audio_quirk[]) {
362                         { QUIRK_DATA_MIDI_YAMA !! 292                         {
363                         { QUIRK_DATA_IGNORE(4) !! 293                                 .ifnum = 1,
364                         QUIRK_COMPOSITE_END    !! 294                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 295                         },
                                                   >> 296                         {
                                                   >> 297                                 .ifnum = 2,
                                                   >> 298                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 299                         },
                                                   >> 300                         {
                                                   >> 301                                 .ifnum = 3,
                                                   >> 302                                 .type = QUIRK_MIDI_YAMAHA
                                                   >> 303                         },
                                                   >> 304                         {
                                                   >> 305                                 .ifnum = 4,
                                                   >> 306                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 307                         },
                                                   >> 308                         {
                                                   >> 309                                 .ifnum = -1
                                                   >> 310                         }
365                 }                                 311                 }
366         }                                         312         }
367 },                                                313 },
368 {                                                 314 {
369         USB_DEVICE(0x0499, 0x150a),               315         USB_DEVICE(0x0499, 0x150a),
370         QUIRK_DRIVER_INFO {                    !! 316         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
371                 /* .vendor_name = "Yamaha", */    317                 /* .vendor_name = "Yamaha", */
372                 /* .product_name = "THR5A", */    318                 /* .product_name = "THR5A", */
373                 QUIRK_DATA_COMPOSITE {         !! 319                 .ifnum = QUIRK_ANY_INTERFACE,
374                         { QUIRK_DATA_STANDARD_ !! 320                 .type = QUIRK_COMPOSITE,
375                         { QUIRK_DATA_STANDARD_ !! 321                 .data = (const struct snd_usb_audio_quirk[]) {
376                         { QUIRK_DATA_MIDI_YAMA !! 322                         {
377                         QUIRK_COMPOSITE_END    !! 323                                 .ifnum = 1,
                                                   >> 324                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 325                         },
                                                   >> 326                         {
                                                   >> 327                                 .ifnum = 2,
                                                   >> 328                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 329                         },
                                                   >> 330                         {
                                                   >> 331                                 .ifnum = 3,
                                                   >> 332                                 .type = QUIRK_MIDI_YAMAHA
                                                   >> 333                         },
                                                   >> 334                         {
                                                   >> 335                                 .ifnum = -1
                                                   >> 336                         }
378                 }                                 337                 }
379         }                                         338         }
380 },                                                339 },
381 {                                                 340 {
382         USB_DEVICE(0x0499, 0x150c),               341         USB_DEVICE(0x0499, 0x150c),
383         QUIRK_DRIVER_INFO {                    !! 342         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
384                 /* .vendor_name = "Yamaha", */    343                 /* .vendor_name = "Yamaha", */
385                 /* .product_name = "THR10C", *    344                 /* .product_name = "THR10C", */
386                 QUIRK_DATA_COMPOSITE {         !! 345                 .ifnum = QUIRK_ANY_INTERFACE,
387                         { QUIRK_DATA_STANDARD_ !! 346                 .type = QUIRK_COMPOSITE,
388                         { QUIRK_DATA_STANDARD_ !! 347                 .data = (const struct snd_usb_audio_quirk[]) {
389                         { QUIRK_DATA_MIDI_YAMA !! 348                         {
390                         QUIRK_COMPOSITE_END    !! 349                                 .ifnum = 1,
                                                   >> 350                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 351                         },
                                                   >> 352                         {
                                                   >> 353                                 .ifnum = 2,
                                                   >> 354                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 355                         },
                                                   >> 356                         {
                                                   >> 357                                 .ifnum = 3,
                                                   >> 358                                 .type = QUIRK_MIDI_YAMAHA
                                                   >> 359                         },
                                                   >> 360                         {
                                                   >> 361                                 .ifnum = -1
                                                   >> 362                         }
391                 }                                 363                 }
392         }                                         364         }
393 },                                                365 },
394 YAMAHA_DEVICE(0x2000, "DGP-7"),                   366 YAMAHA_DEVICE(0x2000, "DGP-7"),
395 YAMAHA_DEVICE(0x2001, "DGP-5"),                   367 YAMAHA_DEVICE(0x2001, "DGP-5"),
396 YAMAHA_DEVICE(0x2002, NULL),                      368 YAMAHA_DEVICE(0x2002, NULL),
397 YAMAHA_DEVICE(0x2003, NULL),                      369 YAMAHA_DEVICE(0x2003, NULL),
398 YAMAHA_DEVICE(0x5000, "CS1D"),                    370 YAMAHA_DEVICE(0x5000, "CS1D"),
399 YAMAHA_DEVICE(0x5001, "DSP1D"),                   371 YAMAHA_DEVICE(0x5001, "DSP1D"),
400 YAMAHA_DEVICE(0x5002, "DME32"),                   372 YAMAHA_DEVICE(0x5002, "DME32"),
401 YAMAHA_DEVICE(0x5003, "DM2000"),                  373 YAMAHA_DEVICE(0x5003, "DM2000"),
402 YAMAHA_DEVICE(0x5004, "02R96"),                   374 YAMAHA_DEVICE(0x5004, "02R96"),
403 YAMAHA_DEVICE(0x5005, "ACU16-C"),                 375 YAMAHA_DEVICE(0x5005, "ACU16-C"),
404 YAMAHA_DEVICE(0x5006, "NHB32-C"),                 376 YAMAHA_DEVICE(0x5006, "NHB32-C"),
405 YAMAHA_DEVICE(0x5007, "DM1000"),                  377 YAMAHA_DEVICE(0x5007, "DM1000"),
406 YAMAHA_DEVICE(0x5008, "01V96"),                   378 YAMAHA_DEVICE(0x5008, "01V96"),
407 YAMAHA_DEVICE(0x5009, "SPX2000"),                 379 YAMAHA_DEVICE(0x5009, "SPX2000"),
408 YAMAHA_DEVICE(0x500a, "PM5D"),                    380 YAMAHA_DEVICE(0x500a, "PM5D"),
409 YAMAHA_DEVICE(0x500b, "DME64N"),                  381 YAMAHA_DEVICE(0x500b, "DME64N"),
410 YAMAHA_DEVICE(0x500c, "DME24N"),                  382 YAMAHA_DEVICE(0x500c, "DME24N"),
411 YAMAHA_DEVICE(0x500d, NULL),                      383 YAMAHA_DEVICE(0x500d, NULL),
412 YAMAHA_DEVICE(0x500e, NULL),                      384 YAMAHA_DEVICE(0x500e, NULL),
413 YAMAHA_DEVICE(0x500f, NULL),                      385 YAMAHA_DEVICE(0x500f, NULL),
414 YAMAHA_DEVICE(0x7000, "DTX"),                     386 YAMAHA_DEVICE(0x7000, "DTX"),
415 YAMAHA_DEVICE(0x7010, "UB99"),                    387 YAMAHA_DEVICE(0x7010, "UB99"),
416 #undef YAMAHA_DEVICE                              388 #undef YAMAHA_DEVICE
417 #undef YAMAHA_INTERFACE                           389 #undef YAMAHA_INTERFACE
418 /* this catches most recent vendor-specific Ya    390 /* this catches most recent vendor-specific Yamaha devices */
419 {                                                 391 {
420         .match_flags = USB_DEVICE_ID_MATCH_VEN    392         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
421                        USB_DEVICE_ID_MATCH_INT    393                        USB_DEVICE_ID_MATCH_INT_CLASS,
422         .idVendor = 0x0499,                       394         .idVendor = 0x0499,
423         .bInterfaceClass = USB_CLASS_VENDOR_SP    395         .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
424         QUIRK_DRIVER_INFO {                    !! 396         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
425                 .ifnum = QUIRK_ANY_INTERFACE,     397                 .ifnum = QUIRK_ANY_INTERFACE,
426                 .type = QUIRK_AUTODETECT          398                 .type = QUIRK_AUTODETECT
427         }                                         399         }
428 },                                                400 },
429                                                   401 
430 /*                                                402 /*
431  * Roland/RolandED/Edirol/BOSS devices            403  * Roland/RolandED/Edirol/BOSS devices
432  */                                               404  */
433 {                                                 405 {
434         USB_DEVICE(0x0582, 0x0000),               406         USB_DEVICE(0x0582, 0x0000),
435         QUIRK_DRIVER_INFO {                    !! 407         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
436                 .vendor_name = "Roland",          408                 .vendor_name = "Roland",
437                 .product_name = "UA-100",         409                 .product_name = "UA-100",
438                 QUIRK_DATA_COMPOSITE {         !! 410                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 411                 .type = QUIRK_COMPOSITE,
                                                   >> 412                 .data = (const struct snd_usb_audio_quirk[]) {
439                         {                         413                         {
440                                 QUIRK_DATA_AUD !! 414                                 .ifnum = 0,
                                                   >> 415                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 416                                 .data = & (const struct audioformat) {
441                                         .forma    417                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
442                                         .chann    418                                         .channels = 4,
443                                         .iface    419                                         .iface = 0,
444                                         .altse    420                                         .altsetting = 1,
445                                         .altse    421                                         .altset_idx = 1,
446                                         .attri    422                                         .attributes = 0,
447                                         .endpo    423                                         .endpoint = 0x01,
448                                         .ep_at    424                                         .ep_attr = 0x09,
449                                         .rates    425                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
450                                         .rate_    426                                         .rate_min = 44100,
451                                         .rate_    427                                         .rate_max = 44100,
452                                 }                 428                                 }
453                         },                        429                         },
454                         {                         430                         {
455                                 QUIRK_DATA_AUD !! 431                                 .ifnum = 1,
                                                   >> 432                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 433                                 .data = & (const struct audioformat) {
456                                         .forma    434                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
457                                         .chann    435                                         .channels = 2,
458                                         .iface    436                                         .iface = 1,
459                                         .altse    437                                         .altsetting = 1,
460                                         .altse    438                                         .altset_idx = 1,
461                                         .attri    439                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX,
462                                         .endpo    440                                         .endpoint = 0x81,
463                                         .ep_at    441                                         .ep_attr = 0x05,
464                                         .rates    442                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
465                                         .rate_    443                                         .rate_min = 44100,
466                                         .rate_    444                                         .rate_max = 44100,
467                                 }                 445                                 }
468                         },                        446                         },
469                         {                         447                         {
470                                 QUIRK_DATA_MID !! 448                                 .ifnum = 2,
                                                   >> 449                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 450                                 .data = & (const struct snd_usb_midi_endpoint_info) {
471                                         .out_c    451                                         .out_cables = 0x0007,
472                                         .in_ca    452                                         .in_cables  = 0x0007
473                                 }                 453                                 }
474                         },                        454                         },
475                         QUIRK_COMPOSITE_END    !! 455                         {
                                                   >> 456                                 .ifnum = -1
                                                   >> 457                         }
476                 }                                 458                 }
477         }                                         459         }
478 },                                                460 },
479 {                                                 461 {
480         USB_DEVICE(0x0582, 0x0002),               462         USB_DEVICE(0x0582, 0x0002),
481         QUIRK_DRIVER_INFO {                    !! 463         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
482                 .vendor_name = "EDIROL",          464                 .vendor_name = "EDIROL",
483                 .product_name = "UM-4",           465                 .product_name = "UM-4",
484                 QUIRK_DATA_COMPOSITE {         !! 466                 .ifnum = QUIRK_ANY_INTERFACE,
485                         { QUIRK_DATA_IGNORE(0) !! 467                 .type = QUIRK_COMPOSITE,
486                         { QUIRK_DATA_IGNORE(1) !! 468                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 469                         {
                                                   >> 470                                 .ifnum = 0,
                                                   >> 471                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 472                         },
487                         {                         473                         {
488                                 QUIRK_DATA_MID !! 474                                 .ifnum = 1,
                                                   >> 475                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 476                         },
                                                   >> 477                         {
                                                   >> 478                                 .ifnum = 2,
                                                   >> 479                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 480                                 .data = & (const struct snd_usb_midi_endpoint_info) {
489                                         .out_c    481                                         .out_cables = 0x000f,
490                                         .in_ca    482                                         .in_cables  = 0x000f
491                                 }                 483                                 }
492                         },                        484                         },
493                         QUIRK_COMPOSITE_END    !! 485                         {
                                                   >> 486                                 .ifnum = -1
                                                   >> 487                         }
494                 }                                 488                 }
495         }                                         489         }
496 },                                                490 },
497 {                                                 491 {
498         USB_DEVICE(0x0582, 0x0003),               492         USB_DEVICE(0x0582, 0x0003),
499         QUIRK_DRIVER_INFO {                    !! 493         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
500                 .vendor_name = "Roland",          494                 .vendor_name = "Roland",
501                 .product_name = "SC-8850",        495                 .product_name = "SC-8850",
502                 QUIRK_DATA_COMPOSITE {         !! 496                 .ifnum = QUIRK_ANY_INTERFACE,
503                         { QUIRK_DATA_IGNORE(0) !! 497                 .type = QUIRK_COMPOSITE,
504                         { QUIRK_DATA_IGNORE(1) !! 498                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 499                         {
                                                   >> 500                                 .ifnum = 0,
                                                   >> 501                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 502                         },
505                         {                         503                         {
506                                 QUIRK_DATA_MID !! 504                                 .ifnum = 1,
                                                   >> 505                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 506                         },
                                                   >> 507                         {
                                                   >> 508                                 .ifnum = 2,
                                                   >> 509                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 510                                 .data = & (const struct snd_usb_midi_endpoint_info) {
507                                         .out_c    511                                         .out_cables = 0x003f,
508                                         .in_ca    512                                         .in_cables  = 0x003f
509                                 }                 513                                 }
510                         },                        514                         },
511                         QUIRK_COMPOSITE_END    !! 515                         {
                                                   >> 516                                 .ifnum = -1
                                                   >> 517                         }
512                 }                                 518                 }
513         }                                         519         }
514 },                                                520 },
515 {                                                 521 {
516         USB_DEVICE(0x0582, 0x0004),               522         USB_DEVICE(0x0582, 0x0004),
517         QUIRK_DRIVER_INFO {                    !! 523         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
518                 .vendor_name = "Roland",          524                 .vendor_name = "Roland",
519                 .product_name = "U-8",            525                 .product_name = "U-8",
520                 QUIRK_DATA_COMPOSITE {         !! 526                 .ifnum = QUIRK_ANY_INTERFACE,
521                         { QUIRK_DATA_IGNORE(0) !! 527                 .type = QUIRK_COMPOSITE,
522                         { QUIRK_DATA_IGNORE(1) !! 528                 .data = (const struct snd_usb_audio_quirk[]) {
523                         {                         529                         {
524                                 QUIRK_DATA_MID !! 530                                 .ifnum = 0,
                                                   >> 531                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 532                         },
                                                   >> 533                         {
                                                   >> 534                                 .ifnum = 1,
                                                   >> 535                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 536                         },
                                                   >> 537                         {
                                                   >> 538                                 .ifnum = 2,
                                                   >> 539                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 540                                 .data = & (const struct snd_usb_midi_endpoint_info) {
525                                         .out_c    541                                         .out_cables = 0x0005,
526                                         .in_ca    542                                         .in_cables  = 0x0005
527                                 }                 543                                 }
528                         },                        544                         },
529                         QUIRK_COMPOSITE_END    !! 545                         {
                                                   >> 546                                 .ifnum = -1
                                                   >> 547                         }
530                 }                                 548                 }
531         }                                         549         }
532 },                                                550 },
533 {                                                 551 {
534         /* Has ID 0x0099 when not in "Advanced    552         /* Has ID 0x0099 when not in "Advanced Driver" mode.
535          * The UM-2EX has only one input, but     553          * The UM-2EX has only one input, but we cannot detect this. */
536         USB_DEVICE(0x0582, 0x0005),               554         USB_DEVICE(0x0582, 0x0005),
537         QUIRK_DRIVER_INFO {                    !! 555         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
538                 .vendor_name = "EDIROL",          556                 .vendor_name = "EDIROL",
539                 .product_name = "UM-2",           557                 .product_name = "UM-2",
540                 QUIRK_DATA_COMPOSITE {         !! 558                 .ifnum = QUIRK_ANY_INTERFACE,
541                         { QUIRK_DATA_IGNORE(0) !! 559                 .type = QUIRK_COMPOSITE,
542                         { QUIRK_DATA_IGNORE(1) !! 560                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 561                         {
                                                   >> 562                                 .ifnum = 0,
                                                   >> 563                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 564                         },
                                                   >> 565                         {
                                                   >> 566                                 .ifnum = 1,
                                                   >> 567                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 568                         },
543                         {                         569                         {
544                                 QUIRK_DATA_MID !! 570                                 .ifnum = 2,
                                                   >> 571                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 572                                 .data = & (const struct snd_usb_midi_endpoint_info) {
545                                         .out_c    573                                         .out_cables = 0x0003,
546                                         .in_ca    574                                         .in_cables  = 0x0003
547                                 }                 575                                 }
548                         },                        576                         },
549                         QUIRK_COMPOSITE_END    !! 577                         {
                                                   >> 578                                 .ifnum = -1
                                                   >> 579                         }
550                 }                                 580                 }
551         }                                         581         }
552 },                                                582 },
553 {                                                 583 {
554         USB_DEVICE(0x0582, 0x0007),               584         USB_DEVICE(0x0582, 0x0007),
555         QUIRK_DRIVER_INFO {                    !! 585         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
556                 .vendor_name = "Roland",          586                 .vendor_name = "Roland",
557                 .product_name = "SC-8820",        587                 .product_name = "SC-8820",
558                 QUIRK_DATA_COMPOSITE {         !! 588                 .ifnum = QUIRK_ANY_INTERFACE,
559                         { QUIRK_DATA_IGNORE(0) !! 589                 .type = QUIRK_COMPOSITE,
560                         { QUIRK_DATA_IGNORE(1) !! 590                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 591                         {
                                                   >> 592                                 .ifnum = 0,
                                                   >> 593                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 594                         },
561                         {                         595                         {
562                                 QUIRK_DATA_MID !! 596                                 .ifnum = 1,
                                                   >> 597                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 598                         },
                                                   >> 599                         {
                                                   >> 600                                 .ifnum = 2,
                                                   >> 601                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 602                                 .data = & (const struct snd_usb_midi_endpoint_info) {
563                                         .out_c    603                                         .out_cables = 0x0013,
564                                         .in_ca    604                                         .in_cables  = 0x0013
565                                 }                 605                                 }
566                         },                        606                         },
567                         QUIRK_COMPOSITE_END    !! 607                         {
                                                   >> 608                                 .ifnum = -1
                                                   >> 609                         }
568                 }                                 610                 }
569         }                                         611         }
570 },                                                612 },
571 {                                                 613 {
572         USB_DEVICE(0x0582, 0x0008),               614         USB_DEVICE(0x0582, 0x0008),
573         QUIRK_DRIVER_INFO {                    !! 615         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
574                 .vendor_name = "Roland",          616                 .vendor_name = "Roland",
575                 .product_name = "PC-300",         617                 .product_name = "PC-300",
576                 QUIRK_DATA_COMPOSITE {         !! 618                 .ifnum = QUIRK_ANY_INTERFACE,
577                         { QUIRK_DATA_IGNORE(0) !! 619                 .type = QUIRK_COMPOSITE,
578                         { QUIRK_DATA_IGNORE(1) !! 620                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 621                         {
                                                   >> 622                                 .ifnum = 0,
                                                   >> 623                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 624                         },
                                                   >> 625                         {
                                                   >> 626                                 .ifnum = 1,
                                                   >> 627                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 628                         },
579                         {                         629                         {
580                                 QUIRK_DATA_MID !! 630                                 .ifnum = 2,
                                                   >> 631                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 632                                 .data = & (const struct snd_usb_midi_endpoint_info) {
581                                         .out_c    633                                         .out_cables = 0x0001,
582                                         .in_ca    634                                         .in_cables  = 0x0001
583                                 }                 635                                 }
584                         },                        636                         },
585                         QUIRK_COMPOSITE_END    !! 637                         {
                                                   >> 638                                 .ifnum = -1
                                                   >> 639                         }
586                 }                                 640                 }
587         }                                         641         }
588 },                                                642 },
589 {                                                 643 {
590         /* has ID 0x009d when not in "Advanced    644         /* has ID 0x009d when not in "Advanced Driver" mode */
591         USB_DEVICE(0x0582, 0x0009),               645         USB_DEVICE(0x0582, 0x0009),
592         QUIRK_DRIVER_INFO {                    !! 646         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
593                 .vendor_name = "EDIROL",          647                 .vendor_name = "EDIROL",
594                 .product_name = "UM-1",           648                 .product_name = "UM-1",
595                 QUIRK_DATA_COMPOSITE {         !! 649                 .ifnum = QUIRK_ANY_INTERFACE,
596                         { QUIRK_DATA_IGNORE(0) !! 650                 .type = QUIRK_COMPOSITE,
597                         { QUIRK_DATA_IGNORE(1) !! 651                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 652                         {
                                                   >> 653                                 .ifnum = 0,
                                                   >> 654                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 655                         },
                                                   >> 656                         {
                                                   >> 657                                 .ifnum = 1,
                                                   >> 658                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 659                         },
598                         {                         660                         {
599                                 QUIRK_DATA_MID !! 661                                 .ifnum = 2,
                                                   >> 662                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 663                                 .data = & (const struct snd_usb_midi_endpoint_info) {
600                                         .out_c    664                                         .out_cables = 0x0001,
601                                         .in_ca    665                                         .in_cables  = 0x0001
602                                 }                 666                                 }
603                         },                        667                         },
604                         QUIRK_COMPOSITE_END    !! 668                         {
                                                   >> 669                                 .ifnum = -1
                                                   >> 670                         }
605                 }                                 671                 }
606         }                                         672         }
607 },                                                673 },
608 {                                                 674 {
609         USB_DEVICE(0x0582, 0x000b),               675         USB_DEVICE(0x0582, 0x000b),
610         QUIRK_DRIVER_INFO {                    !! 676         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
611                 .vendor_name = "Roland",          677                 .vendor_name = "Roland",
612                 .product_name = "SK-500",         678                 .product_name = "SK-500",
613                 QUIRK_DATA_COMPOSITE {         !! 679                 .ifnum = QUIRK_ANY_INTERFACE,
614                         { QUIRK_DATA_IGNORE(0) !! 680                 .type = QUIRK_COMPOSITE,
615                         { QUIRK_DATA_IGNORE(1) !! 681                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 682                         {
                                                   >> 683                                 .ifnum = 0,
                                                   >> 684                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 685                         },
616                         {                         686                         {
617                                 QUIRK_DATA_MID !! 687                                 .ifnum = 1,
                                                   >> 688                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 689                         },
                                                   >> 690                         {
                                                   >> 691                                 .ifnum = 2,
                                                   >> 692                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 693                                 .data = & (const struct snd_usb_midi_endpoint_info) {
618                                         .out_c    694                                         .out_cables = 0x0013,
619                                         .in_ca    695                                         .in_cables  = 0x0013
620                                 }                 696                                 }
621                         },                        697                         },
622                         QUIRK_COMPOSITE_END    !! 698                         {
                                                   >> 699                                 .ifnum = -1
                                                   >> 700                         }
623                 }                                 701                 }
624         }                                         702         }
625 },                                                703 },
626 {                                                 704 {
627         /* thanks to Emiliano Grilli <emillo@l    705         /* thanks to Emiliano Grilli <emillo@libero.it>
628          * for helping researching this data *    706          * for helping researching this data */
629         USB_DEVICE(0x0582, 0x000c),               707         USB_DEVICE(0x0582, 0x000c),
630         QUIRK_DRIVER_INFO {                    !! 708         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
631                 .vendor_name = "Roland",          709                 .vendor_name = "Roland",
632                 .product_name = "SC-D70",         710                 .product_name = "SC-D70",
633                 QUIRK_DATA_COMPOSITE {         !! 711                 .ifnum = QUIRK_ANY_INTERFACE,
634                         { QUIRK_DATA_STANDARD_ !! 712                 .type = QUIRK_COMPOSITE,
635                         { QUIRK_DATA_STANDARD_ !! 713                 .data = (const struct snd_usb_audio_quirk[]) {
636                         {                         714                         {
637                                 QUIRK_DATA_MID !! 715                                 .ifnum = 0,
                                                   >> 716                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 717                         },
                                                   >> 718                         {
                                                   >> 719                                 .ifnum = 1,
                                                   >> 720                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 721                         },
                                                   >> 722                         {
                                                   >> 723                                 .ifnum = 2,
                                                   >> 724                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 725                                 .data = & (const struct snd_usb_midi_endpoint_info) {
638                                         .out_c    726                                         .out_cables = 0x0007,
639                                         .in_ca    727                                         .in_cables  = 0x0007
640                                 }                 728                                 }
641                         },                        729                         },
642                         QUIRK_COMPOSITE_END    !! 730                         {
                                                   >> 731                                 .ifnum = -1
                                                   >> 732                         }
643                 }                                 733                 }
644         }                                         734         }
645 },                                                735 },
646 {       /*                                        736 {       /*
647          * This quirk is for the "Advanced Dri    737          * This quirk is for the "Advanced Driver" mode of the Edirol UA-5.
648          * If the advanced mode switch at the     738          * If the advanced mode switch at the back of the unit is off, the
649          * UA-5 has ID 0x0582/0x0011 and is st    739          * UA-5 has ID 0x0582/0x0011 and is standard compliant (no quirks),
650          * but offers only 16-bit PCM.            740          * but offers only 16-bit PCM.
651          * In advanced mode, the UA-5 will out    741          * In advanced mode, the UA-5 will output S24_3LE samples (two
652          * channels) at the rate indicated on     742          * channels) at the rate indicated on the front switch, including
653          * the 96kHz sample rate.                 743          * the 96kHz sample rate.
654          */                                       744          */
655         USB_DEVICE(0x0582, 0x0010),               745         USB_DEVICE(0x0582, 0x0010),
656         QUIRK_DRIVER_INFO {                    !! 746         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
657                 .vendor_name = "EDIROL",          747                 .vendor_name = "EDIROL",
658                 .product_name = "UA-5",           748                 .product_name = "UA-5",
659                 QUIRK_DATA_COMPOSITE {         !! 749                 .ifnum = QUIRK_ANY_INTERFACE,
660                         { QUIRK_DATA_STANDARD_ !! 750                 .type = QUIRK_COMPOSITE,
661                         { QUIRK_DATA_STANDARD_ !! 751                 .data = (const struct snd_usb_audio_quirk[]) {
662                         QUIRK_COMPOSITE_END    !! 752                         {
                                                   >> 753                                 .ifnum = 1,
                                                   >> 754                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 755                         },
                                                   >> 756                         {
                                                   >> 757                                 .ifnum = 2,
                                                   >> 758                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 759                         },
                                                   >> 760                         {
                                                   >> 761                                 .ifnum = -1
                                                   >> 762                         }
663                 }                                 763                 }
664         }                                         764         }
665 },                                                765 },
666 {                                                 766 {
667         /* has ID 0x0013 when not in "Advanced    767         /* has ID 0x0013 when not in "Advanced Driver" mode */
668         USB_DEVICE(0x0582, 0x0012),               768         USB_DEVICE(0x0582, 0x0012),
669         QUIRK_DRIVER_INFO {                    !! 769         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
670                 .vendor_name = "Roland",          770                 .vendor_name = "Roland",
671                 .product_name = "XV-5050",        771                 .product_name = "XV-5050",
672                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 772                 .ifnum = 0,
                                                   >> 773                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 774                 .data = & (const struct snd_usb_midi_endpoint_info) {
673                         .out_cables = 0x0001,     775                         .out_cables = 0x0001,
674                         .in_cables  = 0x0001      776                         .in_cables  = 0x0001
675                 }                                 777                 }
676         }                                         778         }
677 },                                                779 },
678 {                                                 780 {
679         /* has ID 0x0015 when not in "Advanced    781         /* has ID 0x0015 when not in "Advanced Driver" mode */
680         USB_DEVICE(0x0582, 0x0014),               782         USB_DEVICE(0x0582, 0x0014),
681         QUIRK_DRIVER_INFO {                    !! 783         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
682                 .vendor_name = "EDIROL",          784                 .vendor_name = "EDIROL",
683                 .product_name = "UM-880",         785                 .product_name = "UM-880",
684                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 786                 .ifnum = 0,
                                                   >> 787                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 788                 .data = & (const struct snd_usb_midi_endpoint_info) {
685                         .out_cables = 0x01ff,     789                         .out_cables = 0x01ff,
686                         .in_cables  = 0x01ff      790                         .in_cables  = 0x01ff
687                 }                                 791                 }
688         }                                         792         }
689 },                                                793 },
690 {                                                 794 {
691         /* has ID 0x0017 when not in "Advanced    795         /* has ID 0x0017 when not in "Advanced Driver" mode */
692         USB_DEVICE(0x0582, 0x0016),               796         USB_DEVICE(0x0582, 0x0016),
693         QUIRK_DRIVER_INFO {                    !! 797         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
694                 .vendor_name = "EDIROL",          798                 .vendor_name = "EDIROL",
695                 .product_name = "SD-90",          799                 .product_name = "SD-90",
696                 QUIRK_DATA_COMPOSITE {         !! 800                 .ifnum = QUIRK_ANY_INTERFACE,
697                         { QUIRK_DATA_STANDARD_ !! 801                 .type = QUIRK_COMPOSITE,
698                         { QUIRK_DATA_STANDARD_ !! 802                 .data = (const struct snd_usb_audio_quirk[]) {
699                         {                         803                         {
700                                 QUIRK_DATA_MID !! 804                                 .ifnum = 0,
                                                   >> 805                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 806                         },
                                                   >> 807                         {
                                                   >> 808                                 .ifnum = 1,
                                                   >> 809                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 810                         },
                                                   >> 811                         {
                                                   >> 812                                 .ifnum = 2,
                                                   >> 813                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 814                                 .data = & (const struct snd_usb_midi_endpoint_info) {
701                                         .out_c    815                                         .out_cables = 0x000f,
702                                         .in_ca    816                                         .in_cables  = 0x000f
703                                 }                 817                                 }
704                         },                        818                         },
705                         QUIRK_COMPOSITE_END    !! 819                         {
                                                   >> 820                                 .ifnum = -1
                                                   >> 821                         }
706                 }                                 822                 }
707         }                                         823         }
708 },                                                824 },
709 {                                                 825 {
710         /* has ID 0x001c when not in "Advanced    826         /* has ID 0x001c when not in "Advanced Driver" mode */
711         USB_DEVICE(0x0582, 0x001b),               827         USB_DEVICE(0x0582, 0x001b),
712         QUIRK_DRIVER_INFO {                    !! 828         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
713                 .vendor_name = "Roland",          829                 .vendor_name = "Roland",
714                 .product_name = "MMP-2",          830                 .product_name = "MMP-2",
715                 QUIRK_DATA_COMPOSITE {         !! 831                 .ifnum = QUIRK_ANY_INTERFACE,
716                         { QUIRK_DATA_IGNORE(0) !! 832                 .type = QUIRK_COMPOSITE,
717                         { QUIRK_DATA_IGNORE(1) !! 833                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 834                         {
                                                   >> 835                                 .ifnum = 0,
                                                   >> 836                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 837                         },
718                         {                         838                         {
719                                 QUIRK_DATA_MID !! 839                                 .ifnum = 1,
                                                   >> 840                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 841                         },
                                                   >> 842                         {
                                                   >> 843                                 .ifnum = 2,
                                                   >> 844                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 845                                 .data = & (const struct snd_usb_midi_endpoint_info) {
720                                         .out_c    846                                         .out_cables = 0x0001,
721                                         .in_ca    847                                         .in_cables  = 0x0001
722                                 }                 848                                 }
723                         },                        849                         },
724                         QUIRK_COMPOSITE_END    !! 850                         {
                                                   >> 851                                 .ifnum = -1
                                                   >> 852                         }
725                 }                                 853                 }
726         }                                         854         }
727 },                                                855 },
728 {                                                 856 {
729         /* has ID 0x001e when not in "Advanced    857         /* has ID 0x001e when not in "Advanced Driver" mode */
730         USB_DEVICE(0x0582, 0x001d),               858         USB_DEVICE(0x0582, 0x001d),
731         QUIRK_DRIVER_INFO {                    !! 859         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
732                 .vendor_name = "Roland",          860                 .vendor_name = "Roland",
733                 .product_name = "V-SYNTH",        861                 .product_name = "V-SYNTH",
734                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 862                 .ifnum = 0,
                                                   >> 863                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 864                 .data = & (const struct snd_usb_midi_endpoint_info) {
735                         .out_cables = 0x0001,     865                         .out_cables = 0x0001,
736                         .in_cables  = 0x0001      866                         .in_cables  = 0x0001
737                 }                                 867                 }
738         }                                         868         }
739 },                                                869 },
740 {                                                 870 {
741         /* has ID 0x0024 when not in "Advanced    871         /* has ID 0x0024 when not in "Advanced Driver" mode */
742         USB_DEVICE(0x0582, 0x0023),               872         USB_DEVICE(0x0582, 0x0023),
743         QUIRK_DRIVER_INFO {                    !! 873         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
744                 .vendor_name = "EDIROL",          874                 .vendor_name = "EDIROL",
745                 .product_name = "UM-550",         875                 .product_name = "UM-550",
746                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 876                 .ifnum = 0,
                                                   >> 877                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 878                 .data = & (const struct snd_usb_midi_endpoint_info) {
747                         .out_cables = 0x003f,     879                         .out_cables = 0x003f,
748                         .in_cables  = 0x003f      880                         .in_cables  = 0x003f
749                 }                                 881                 }
750         }                                         882         }
751 },                                                883 },
752 {                                                 884 {
753         /*                                        885         /*
754          * This quirk is for the "Advanced Dri    886          * This quirk is for the "Advanced Driver" mode. If off, the UA-20
755          * has ID 0x0026 and is standard compl    887          * has ID 0x0026 and is standard compliant, but has only 16-bit PCM
756          * and no MIDI.                           888          * and no MIDI.
757          */                                       889          */
758         USB_DEVICE(0x0582, 0x0025),               890         USB_DEVICE(0x0582, 0x0025),
759         QUIRK_DRIVER_INFO {                    !! 891         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
760                 .vendor_name = "EDIROL",          892                 .vendor_name = "EDIROL",
761                 .product_name = "UA-20",          893                 .product_name = "UA-20",
762                 QUIRK_DATA_COMPOSITE {         !! 894                 .ifnum = QUIRK_ANY_INTERFACE,
763                         { QUIRK_DATA_IGNORE(0) !! 895                 .type = QUIRK_COMPOSITE,
                                                   >> 896                 .data = (const struct snd_usb_audio_quirk[]) {
764                         {                         897                         {
765                                 QUIRK_DATA_AUD !! 898                                 .ifnum = 0,
                                                   >> 899                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 900                         },
                                                   >> 901                         {
                                                   >> 902                                 .ifnum = 1,
                                                   >> 903                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 904                                 .data = & (const struct audioformat) {
766                                         .forma    905                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
767                                         .chann    906                                         .channels = 2,
768                                         .iface    907                                         .iface = 1,
769                                         .altse    908                                         .altsetting = 1,
770                                         .altse    909                                         .altset_idx = 1,
771                                         .attri    910                                         .attributes = 0,
772                                         .endpo    911                                         .endpoint = 0x01,
773                                         .ep_at    912                                         .ep_attr = 0x01,
774                                         .rates    913                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
775                                         .rate_    914                                         .rate_min = 44100,
776                                         .rate_    915                                         .rate_max = 44100,
777                                 }                 916                                 }
778                         },                        917                         },
779                         {                         918                         {
780                                 QUIRK_DATA_AUD !! 919                                 .ifnum = 2,
                                                   >> 920                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 921                                 .data = & (const struct audioformat) {
781                                         .forma    922                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
782                                         .chann    923                                         .channels = 2,
783                                         .iface    924                                         .iface = 2,
784                                         .altse    925                                         .altsetting = 1,
785                                         .altse    926                                         .altset_idx = 1,
786                                         .attri    927                                         .attributes = 0,
787                                         .endpo    928                                         .endpoint = 0x82,
788                                         .ep_at    929                                         .ep_attr = 0x01,
789                                         .rates    930                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
790                                         .rate_    931                                         .rate_min = 44100,
791                                         .rate_    932                                         .rate_max = 44100,
792                                 }                 933                                 }
793                         },                        934                         },
794                         {                         935                         {
795                                 QUIRK_DATA_MID !! 936                                 .ifnum = 3,
                                                   >> 937                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 938                                 .data = & (const struct snd_usb_midi_endpoint_info) {
796                                         .out_c    939                                         .out_cables = 0x0001,
797                                         .in_ca    940                                         .in_cables  = 0x0001
798                                 }                 941                                 }
799                         },                        942                         },
800                         QUIRK_COMPOSITE_END    !! 943                         {
                                                   >> 944                                 .ifnum = -1
                                                   >> 945                         }
801                 }                                 946                 }
802         }                                         947         }
803 },                                                948 },
804 {                                                 949 {
805         /* has ID 0x0028 when not in "Advanced    950         /* has ID 0x0028 when not in "Advanced Driver" mode */
806         USB_DEVICE(0x0582, 0x0027),               951         USB_DEVICE(0x0582, 0x0027),
807         QUIRK_DRIVER_INFO {                    !! 952         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
808                 .vendor_name = "EDIROL",          953                 .vendor_name = "EDIROL",
809                 .product_name = "SD-20",          954                 .product_name = "SD-20",
810                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 955                 .ifnum = 0,
                                                   >> 956                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 957                 .data = & (const struct snd_usb_midi_endpoint_info) {
811                         .out_cables = 0x0003,     958                         .out_cables = 0x0003,
812                         .in_cables  = 0x0007      959                         .in_cables  = 0x0007
813                 }                                 960                 }
814         }                                         961         }
815 },                                                962 },
816 {                                                 963 {
817         /* has ID 0x002a when not in "Advanced    964         /* has ID 0x002a when not in "Advanced Driver" mode */
818         USB_DEVICE(0x0582, 0x0029),               965         USB_DEVICE(0x0582, 0x0029),
819         QUIRK_DRIVER_INFO {                    !! 966         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
820                 .vendor_name = "EDIROL",          967                 .vendor_name = "EDIROL",
821                 .product_name = "SD-80",          968                 .product_name = "SD-80",
822                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 969                 .ifnum = 0,
                                                   >> 970                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 971                 .data = & (const struct snd_usb_midi_endpoint_info) {
823                         .out_cables = 0x000f,     972                         .out_cables = 0x000f,
824                         .in_cables  = 0x000f      973                         .in_cables  = 0x000f
825                 }                                 974                 }
826         }                                         975         }
827 },                                                976 },
828 {       /*                                        977 {       /*
829          * This quirk is for the "Advanced" mo    978          * This quirk is for the "Advanced" modes of the Edirol UA-700.
830          * If the sample format switch is not     979          * If the sample format switch is not in an advanced setting, the
831          * UA-700 has ID 0x0582/0x002c and is     980          * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks),
832          * but offers only 16-bit PCM and no M    981          * but offers only 16-bit PCM and no MIDI.
833          */                                       982          */
834         USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b)    983         USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b),
835         QUIRK_DRIVER_INFO {                    !! 984         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
836                 .vendor_name = "EDIROL",          985                 .vendor_name = "EDIROL",
837                 .product_name = "UA-700",         986                 .product_name = "UA-700",
838                 QUIRK_DATA_COMPOSITE {         !! 987                 .ifnum = QUIRK_ANY_INTERFACE,
839                         { QUIRK_DATA_EDIROL_UA !! 988                 .type = QUIRK_COMPOSITE,
840                         { QUIRK_DATA_EDIROL_UA !! 989                 .data = (const struct snd_usb_audio_quirk[]) {
841                         { QUIRK_DATA_EDIROL_UA !! 990                         {
842                         QUIRK_COMPOSITE_END    !! 991                                 .ifnum = 1,
                                                   >> 992                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 993                         },
                                                   >> 994                         {
                                                   >> 995                                 .ifnum = 2,
                                                   >> 996                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 997                         },
                                                   >> 998                         {
                                                   >> 999                                 .ifnum = 3,
                                                   >> 1000                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1001                         },
                                                   >> 1002                         {
                                                   >> 1003                                 .ifnum = -1
                                                   >> 1004                         }
843                 }                                 1005                 }
844         }                                         1006         }
845 },                                                1007 },
846 {                                                 1008 {
847         /* has ID 0x002e when not in "Advanced    1009         /* has ID 0x002e when not in "Advanced Driver" mode */
848         USB_DEVICE(0x0582, 0x002d),               1010         USB_DEVICE(0x0582, 0x002d),
849         QUIRK_DRIVER_INFO {                    !! 1011         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
850                 .vendor_name = "Roland",          1012                 .vendor_name = "Roland",
851                 .product_name = "XV-2020",        1013                 .product_name = "XV-2020",
852                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1014                 .ifnum = 0,
                                                   >> 1015                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1016                 .data = & (const struct snd_usb_midi_endpoint_info) {
853                         .out_cables = 0x0001,     1017                         .out_cables = 0x0001,
854                         .in_cables  = 0x0001      1018                         .in_cables  = 0x0001
855                 }                                 1019                 }
856         }                                         1020         }
857 },                                                1021 },
858 {                                                 1022 {
859         /* has ID 0x0030 when not in "Advanced    1023         /* has ID 0x0030 when not in "Advanced Driver" mode */
860         USB_DEVICE(0x0582, 0x002f),               1024         USB_DEVICE(0x0582, 0x002f),
861         QUIRK_DRIVER_INFO {                    !! 1025         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
862                 .vendor_name = "Roland",          1026                 .vendor_name = "Roland",
863                 .product_name = "VariOS",         1027                 .product_name = "VariOS",
864                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1028                 .ifnum = 0,
                                                   >> 1029                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1030                 .data = & (const struct snd_usb_midi_endpoint_info) {
865                         .out_cables = 0x0007,     1031                         .out_cables = 0x0007,
866                         .in_cables  = 0x0007      1032                         .in_cables  = 0x0007
867                 }                                 1033                 }
868         }                                         1034         }
869 },                                                1035 },
870 {                                                 1036 {
871         /* has ID 0x0034 when not in "Advanced    1037         /* has ID 0x0034 when not in "Advanced Driver" mode */
872         USB_DEVICE(0x0582, 0x0033),               1038         USB_DEVICE(0x0582, 0x0033),
873         QUIRK_DRIVER_INFO {                    !! 1039         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
874                 .vendor_name = "EDIROL",          1040                 .vendor_name = "EDIROL",
875                 .product_name = "PCR",            1041                 .product_name = "PCR",
876                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1042                 .ifnum = 0,
                                                   >> 1043                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1044                 .data = & (const struct snd_usb_midi_endpoint_info) {
877                         .out_cables = 0x0003,     1045                         .out_cables = 0x0003,
878                         .in_cables  = 0x0007      1046                         .in_cables  = 0x0007
879                 }                                 1047                 }
880         }                                         1048         }
881 },                                                1049 },
882 {                                                 1050 {
883         /*                                        1051         /*
884          * Has ID 0x0038 when not in "Advanced    1052          * Has ID 0x0038 when not in "Advanced Driver" mode;
885          * later revisions use IDs 0x0054 and     1053          * later revisions use IDs 0x0054 and 0x00a2.
886          */                                       1054          */
887         USB_DEVICE(0x0582, 0x0037),               1055         USB_DEVICE(0x0582, 0x0037),
888         QUIRK_DRIVER_INFO {                    !! 1056         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
889                 .vendor_name = "Roland",          1057                 .vendor_name = "Roland",
890                 .product_name = "Digital Piano    1058                 .product_name = "Digital Piano",
891                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1059                 .ifnum = 0,
                                                   >> 1060                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1061                 .data = & (const struct snd_usb_midi_endpoint_info) {
892                         .out_cables = 0x0001,     1062                         .out_cables = 0x0001,
893                         .in_cables  = 0x0001      1063                         .in_cables  = 0x0001
894                 }                                 1064                 }
895         }                                         1065         }
896 },                                                1066 },
897 {                                                 1067 {
898         /*                                        1068         /*
899          * This quirk is for the "Advanced Dri    1069          * This quirk is for the "Advanced Driver" mode.  If off, the GS-10
900          * has ID 0x003c and is standard compl    1070          * has ID 0x003c and is standard compliant, but has only 16-bit PCM
901          * and no MIDI.                           1071          * and no MIDI.
902          */                                       1072          */
903         USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b)    1073         USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b),
904         QUIRK_DRIVER_INFO {                    !! 1074         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
905                 .vendor_name = "BOSS",            1075                 .vendor_name = "BOSS",
906                 .product_name = "GS-10",          1076                 .product_name = "GS-10",
907                 QUIRK_DATA_COMPOSITE {         !! 1077                 .ifnum = QUIRK_ANY_INTERFACE,
908                         { QUIRK_DATA_STANDARD_ !! 1078                 .type = QUIRK_COMPOSITE,
909                         { QUIRK_DATA_STANDARD_ !! 1079                 .data = & (const struct snd_usb_audio_quirk[]) {
910                         { QUIRK_DATA_STANDARD_ !! 1080                         {
911                         QUIRK_COMPOSITE_END    !! 1081                                 .ifnum = 1,
                                                   >> 1082                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1083                         },
                                                   >> 1084                         {
                                                   >> 1085                                 .ifnum = 2,
                                                   >> 1086                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1087                         },
                                                   >> 1088                         {
                                                   >> 1089                                 .ifnum = 3,
                                                   >> 1090                                 .type = QUIRK_MIDI_STANDARD_INTERFACE
                                                   >> 1091                         },
                                                   >> 1092                         {
                                                   >> 1093                                 .ifnum = -1
                                                   >> 1094                         }
912                 }                                 1095                 }
913         }                                         1096         }
914 },                                                1097 },
915 {                                                 1098 {
916         /* has ID 0x0041 when not in "Advanced    1099         /* has ID 0x0041 when not in "Advanced Driver" mode */
917         USB_DEVICE(0x0582, 0x0040),               1100         USB_DEVICE(0x0582, 0x0040),
918         QUIRK_DRIVER_INFO {                    !! 1101         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
919                 .vendor_name = "Roland",          1102                 .vendor_name = "Roland",
920                 .product_name = "GI-20",          1103                 .product_name = "GI-20",
921                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1104                 .ifnum = 0,
                                                   >> 1105                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1106                 .data = & (const struct snd_usb_midi_endpoint_info) {
922                         .out_cables = 0x0001,     1107                         .out_cables = 0x0001,
923                         .in_cables  = 0x0001      1108                         .in_cables  = 0x0001
924                 }                                 1109                 }
925         }                                         1110         }
926 },                                                1111 },
927 {                                                 1112 {
928         /* has ID 0x0043 when not in "Advanced    1113         /* has ID 0x0043 when not in "Advanced Driver" mode */
929         USB_DEVICE(0x0582, 0x0042),               1114         USB_DEVICE(0x0582, 0x0042),
930         QUIRK_DRIVER_INFO {                    !! 1115         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
931                 .vendor_name = "Roland",          1116                 .vendor_name = "Roland",
932                 .product_name = "RS-70",          1117                 .product_name = "RS-70",
933                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1118                 .ifnum = 0,
                                                   >> 1119                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1120                 .data = & (const struct snd_usb_midi_endpoint_info) {
934                         .out_cables = 0x0001,     1121                         .out_cables = 0x0001,
935                         .in_cables  = 0x0001      1122                         .in_cables  = 0x0001
936                 }                                 1123                 }
937         }                                         1124         }
938 },                                                1125 },
939 {                                                 1126 {
940         /* has ID 0x0049 when not in "Advanced    1127         /* has ID 0x0049 when not in "Advanced Driver" mode */
941         USB_DEVICE(0x0582, 0x0047),               1128         USB_DEVICE(0x0582, 0x0047),
942         QUIRK_DRIVER_INFO {                    !! 1129         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
943                 /* .vendor_name = "EDIROL", */    1130                 /* .vendor_name = "EDIROL", */
944                 /* .product_name = "UR-80", */    1131                 /* .product_name = "UR-80", */
945                 QUIRK_DATA_COMPOSITE {         !! 1132                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1133                 .type = QUIRK_COMPOSITE,
                                                   >> 1134                 .data = (const struct snd_usb_audio_quirk[]) {
946                         /* in the 96 kHz modes    1135                         /* in the 96 kHz modes, only interface 1 is there */
947                         { QUIRK_DATA_STANDARD_ !! 1136                         {
948                         { QUIRK_DATA_STANDARD_ !! 1137                                 .ifnum = 1,
949                         QUIRK_COMPOSITE_END    !! 1138                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1139                         },
                                                   >> 1140                         {
                                                   >> 1141                                 .ifnum = 2,
                                                   >> 1142                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1143                         },
                                                   >> 1144                         {
                                                   >> 1145                                 .ifnum = -1
                                                   >> 1146                         }
950                 }                                 1147                 }
951         }                                         1148         }
952 },                                                1149 },
953 {                                                 1150 {
954         /* has ID 0x004a when not in "Advanced    1151         /* has ID 0x004a when not in "Advanced Driver" mode */
955         USB_DEVICE(0x0582, 0x0048),               1152         USB_DEVICE(0x0582, 0x0048),
956         QUIRK_DRIVER_INFO {                    !! 1153         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
957                 /* .vendor_name = "EDIROL", */    1154                 /* .vendor_name = "EDIROL", */
958                 /* .product_name = "UR-80", */    1155                 /* .product_name = "UR-80", */
959                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1156                 .ifnum = 0,
                                                   >> 1157                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1158                 .data = & (const struct snd_usb_midi_endpoint_info) {
960                         .out_cables = 0x0003,     1159                         .out_cables = 0x0003,
961                         .in_cables  = 0x0007      1160                         .in_cables  = 0x0007
962                 }                                 1161                 }
963         }                                         1162         }
964 },                                                1163 },
965 {                                                 1164 {
966         /* has ID 0x004e when not in "Advanced    1165         /* has ID 0x004e when not in "Advanced Driver" mode */
967         USB_DEVICE(0x0582, 0x004c),               1166         USB_DEVICE(0x0582, 0x004c),
968         QUIRK_DRIVER_INFO {                    !! 1167         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
969                 .vendor_name = "EDIROL",          1168                 .vendor_name = "EDIROL",
970                 .product_name = "PCR-A",          1169                 .product_name = "PCR-A",
971                 QUIRK_DATA_COMPOSITE {         !! 1170                 .ifnum = QUIRK_ANY_INTERFACE,
972                         { QUIRK_DATA_STANDARD_ !! 1171                 .type = QUIRK_COMPOSITE,
973                         { QUIRK_DATA_STANDARD_ !! 1172                 .data = (const struct snd_usb_audio_quirk[]) {
974                         QUIRK_COMPOSITE_END    !! 1173                         {
                                                   >> 1174                                 .ifnum = 1,
                                                   >> 1175                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1176                         },
                                                   >> 1177                         {
                                                   >> 1178                                 .ifnum = 2,
                                                   >> 1179                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1180                         },
                                                   >> 1181                         {
                                                   >> 1182                                 .ifnum = -1
                                                   >> 1183                         }
975                 }                                 1184                 }
976         }                                         1185         }
977 },                                                1186 },
978 {                                                 1187 {
979         /* has ID 0x004f when not in "Advanced    1188         /* has ID 0x004f when not in "Advanced Driver" mode */
980         USB_DEVICE(0x0582, 0x004d),               1189         USB_DEVICE(0x0582, 0x004d),
981         QUIRK_DRIVER_INFO {                    !! 1190         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
982                 .vendor_name = "EDIROL",          1191                 .vendor_name = "EDIROL",
983                 .product_name = "PCR-A",          1192                 .product_name = "PCR-A",
984                 QUIRK_DATA_MIDI_FIXED_ENDPOINT !! 1193                 .ifnum = 0,
                                                   >> 1194                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1195                 .data = & (const struct snd_usb_midi_endpoint_info) {
985                         .out_cables = 0x0003,     1196                         .out_cables = 0x0003,
986                         .in_cables  = 0x0007      1197                         .in_cables  = 0x0007
987                 }                                 1198                 }
988         }                                         1199         }
989 },                                                1200 },
990 {                                                 1201 {
991         /*                                        1202         /*
992          * This quirk is for the "Advanced Dri    1203          * This quirk is for the "Advanced Driver" mode. If off, the UA-3FX
993          * is standard compliant, but has only    1204          * is standard compliant, but has only 16-bit PCM.
994          */                                       1205          */
995         USB_DEVICE(0x0582, 0x0050),               1206         USB_DEVICE(0x0582, 0x0050),
996         QUIRK_DRIVER_INFO {                    !! 1207         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
997                 .vendor_name = "EDIROL",          1208                 .vendor_name = "EDIROL",
998                 .product_name = "UA-3FX",         1209                 .product_name = "UA-3FX",
999                 QUIRK_DATA_COMPOSITE {         !! 1210                 .ifnum = QUIRK_ANY_INTERFACE,
1000                         { QUIRK_DATA_STANDARD !! 1211                 .type = QUIRK_COMPOSITE,
1001                         { QUIRK_DATA_STANDARD !! 1212                 .data = (const struct snd_usb_audio_quirk[]) {
1002                         QUIRK_COMPOSITE_END   !! 1213                         {
                                                   >> 1214                                 .ifnum = 1,
                                                   >> 1215                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1216                         },
                                                   >> 1217                         {
                                                   >> 1218                                 .ifnum = 2,
                                                   >> 1219                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1220                         },
                                                   >> 1221                         {
                                                   >> 1222                                 .ifnum = -1
                                                   >> 1223                         }
1003                 }                                1224                 }
1004         }                                        1225         }
1005 },                                               1226 },
1006 {                                                1227 {
1007         USB_DEVICE(0x0582, 0x0052),              1228         USB_DEVICE(0x0582, 0x0052),
1008         QUIRK_DRIVER_INFO {                   !! 1229         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1009                 .vendor_name = "EDIROL",         1230                 .vendor_name = "EDIROL",
1010                 .product_name = "UM-1SX",        1231                 .product_name = "UM-1SX",
1011                 QUIRK_DATA_STANDARD_MIDI(0)   !! 1232                 .ifnum = 0,
                                                   >> 1233                 .type = QUIRK_MIDI_STANDARD_INTERFACE
1012         }                                        1234         }
1013 },                                               1235 },
1014 {                                                1236 {
1015         USB_DEVICE(0x0582, 0x0060),              1237         USB_DEVICE(0x0582, 0x0060),
1016         QUIRK_DRIVER_INFO {                   !! 1238         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1017                 .vendor_name = "Roland",         1239                 .vendor_name = "Roland",
1018                 .product_name = "EXR Series",    1240                 .product_name = "EXR Series",
1019                 QUIRK_DATA_STANDARD_MIDI(0)   !! 1241                 .ifnum = 0,
                                                   >> 1242                 .type = QUIRK_MIDI_STANDARD_INTERFACE
1020         }                                        1243         }
1021 },                                               1244 },
1022 {                                                1245 {
1023         /* has ID 0x0066 when not in "Advance    1246         /* has ID 0x0066 when not in "Advanced Driver" mode */
1024         USB_DEVICE(0x0582, 0x0064),              1247         USB_DEVICE(0x0582, 0x0064),
1025         QUIRK_DRIVER_INFO {                   !! 1248         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1026                 /* .vendor_name = "EDIROL", *    1249                 /* .vendor_name = "EDIROL", */
1027                 /* .product_name = "PCR-1", *    1250                 /* .product_name = "PCR-1", */
1028                 QUIRK_DATA_COMPOSITE {        !! 1251                 .ifnum = QUIRK_ANY_INTERFACE,
1029                         { QUIRK_DATA_STANDARD !! 1252                 .type = QUIRK_COMPOSITE,
1030                         { QUIRK_DATA_STANDARD !! 1253                 .data = (const struct snd_usb_audio_quirk[]) {
1031                         QUIRK_COMPOSITE_END   !! 1254                         {
                                                   >> 1255                                 .ifnum = 1,
                                                   >> 1256                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1257                         },
                                                   >> 1258                         {
                                                   >> 1259                                 .ifnum = 2,
                                                   >> 1260                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1261                         },
                                                   >> 1262                         {
                                                   >> 1263                                 .ifnum = -1
                                                   >> 1264                         }
1032                 }                                1265                 }
1033         }                                        1266         }
1034 },                                               1267 },
1035 {                                                1268 {
1036         /* has ID 0x0067 when not in "Advance    1269         /* has ID 0x0067 when not in "Advanced Driver" mode */
1037         USB_DEVICE(0x0582, 0x0065),              1270         USB_DEVICE(0x0582, 0x0065),
1038         QUIRK_DRIVER_INFO {                   !! 1271         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1039                 /* .vendor_name = "EDIROL", *    1272                 /* .vendor_name = "EDIROL", */
1040                 /* .product_name = "PCR-1", *    1273                 /* .product_name = "PCR-1", */
1041                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1274                 .ifnum = 0,
                                                   >> 1275                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1276                 .data = & (const struct snd_usb_midi_endpoint_info) {
1042                         .out_cables = 0x0001,    1277                         .out_cables = 0x0001,
1043                         .in_cables  = 0x0003     1278                         .in_cables  = 0x0003
1044                 }                                1279                 }
1045         }                                        1280         }
1046 },                                               1281 },
1047 {                                                1282 {
1048         /* has ID 0x006e when not in "Advance    1283         /* has ID 0x006e when not in "Advanced Driver" mode */
1049         USB_DEVICE(0x0582, 0x006d),              1284         USB_DEVICE(0x0582, 0x006d),
1050         QUIRK_DRIVER_INFO {                   !! 1285         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1051                 .vendor_name = "Roland",         1286                 .vendor_name = "Roland",
1052                 .product_name = "FANTOM-X",      1287                 .product_name = "FANTOM-X",
1053                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1288                 .ifnum = 0,
                                                   >> 1289                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1290                 .data = & (const struct snd_usb_midi_endpoint_info) {
1054                         .out_cables = 0x0001,    1291                         .out_cables = 0x0001,
1055                         .in_cables  = 0x0001     1292                         .in_cables  = 0x0001
1056                 }                                1293                 }
1057         }                                        1294         }
1058 },                                               1295 },
1059 {       /*                                       1296 {       /*
1060          * This quirk is for the "Advanced" m    1297          * This quirk is for the "Advanced" modes of the Edirol UA-25.
1061          * If the switch is not in an advance    1298          * If the switch is not in an advanced setting, the UA-25 has
1062          * ID 0x0582/0x0073 and is standard c    1299          * ID 0x0582/0x0073 and is standard compliant (no quirks), but
1063          * offers only 16-bit PCM at 44.1 kHz    1300          * offers only 16-bit PCM at 44.1 kHz and no MIDI.
1064          */                                      1301          */
1065         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074    1302         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074),
1066         QUIRK_DRIVER_INFO {                   !! 1303         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1067                 .vendor_name = "EDIROL",         1304                 .vendor_name = "EDIROL",
1068                 .product_name = "UA-25",         1305                 .product_name = "UA-25",
1069                 QUIRK_DATA_COMPOSITE {        !! 1306                 .ifnum = QUIRK_ANY_INTERFACE,
1070                         { QUIRK_DATA_EDIROL_U !! 1307                 .type = QUIRK_COMPOSITE,
1071                         { QUIRK_DATA_EDIROL_U !! 1308                 .data = (const struct snd_usb_audio_quirk[]) {
1072                         { QUIRK_DATA_EDIROL_U !! 1309                         {
1073                         QUIRK_COMPOSITE_END   !! 1310                                 .ifnum = 0,
                                                   >> 1311                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1312                         },
                                                   >> 1313                         {
                                                   >> 1314                                 .ifnum = 1,
                                                   >> 1315                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1316                         },
                                                   >> 1317                         {
                                                   >> 1318                                 .ifnum = 2,
                                                   >> 1319                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1320                         },
                                                   >> 1321                         {
                                                   >> 1322                                 .ifnum = -1
                                                   >> 1323                         }
1074                 }                                1324                 }
1075         }                                        1325         }
1076 },                                               1326 },
1077 {                                                1327 {
1078         /* has ID 0x0076 when not in "Advance    1328         /* has ID 0x0076 when not in "Advanced Driver" mode */
1079         USB_DEVICE(0x0582, 0x0075),              1329         USB_DEVICE(0x0582, 0x0075),
1080         QUIRK_DRIVER_INFO {                   !! 1330         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1081                 .vendor_name = "BOSS",           1331                 .vendor_name = "BOSS",
1082                 .product_name = "DR-880",        1332                 .product_name = "DR-880",
1083                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1333                 .ifnum = 0,
                                                   >> 1334                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1335                 .data = & (const struct snd_usb_midi_endpoint_info) {
1084                         .out_cables = 0x0001,    1336                         .out_cables = 0x0001,
1085                         .in_cables  = 0x0001     1337                         .in_cables  = 0x0001
1086                 }                                1338                 }
1087         }                                        1339         }
1088 },                                               1340 },
1089 {                                                1341 {
1090         /* has ID 0x007b when not in "Advance    1342         /* has ID 0x007b when not in "Advanced Driver" mode */
1091         USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a    1343         USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a),
1092         QUIRK_DRIVER_INFO {                   !! 1344         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1093                 .vendor_name = "Roland",         1345                 .vendor_name = "Roland",
1094                 /* "RD" or "RD-700SX"? */        1346                 /* "RD" or "RD-700SX"? */
1095                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1347                 .ifnum = 0,
                                                   >> 1348                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1349                 .data = & (const struct snd_usb_midi_endpoint_info) {
1096                         .out_cables = 0x0003,    1350                         .out_cables = 0x0003,
1097                         .in_cables  = 0x0003     1351                         .in_cables  = 0x0003
1098                 }                                1352                 }
1099         }                                        1353         }
1100 },                                               1354 },
1101 {                                                1355 {
1102         /* has ID 0x0081 when not in "Advance    1356         /* has ID 0x0081 when not in "Advanced Driver" mode */
1103         USB_DEVICE(0x0582, 0x0080),              1357         USB_DEVICE(0x0582, 0x0080),
1104         QUIRK_DRIVER_INFO {                   !! 1358         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1105                 .vendor_name = "Roland",         1359                 .vendor_name = "Roland",
1106                 .product_name = "G-70",          1360                 .product_name = "G-70",
1107                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1361                 .ifnum = 0,
                                                   >> 1362                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1363                 .data = & (const struct snd_usb_midi_endpoint_info) {
1108                         .out_cables = 0x0001,    1364                         .out_cables = 0x0001,
1109                         .in_cables  = 0x0001     1365                         .in_cables  = 0x0001
1110                 }                                1366                 }
1111         }                                        1367         }
1112 },                                               1368 },
1113 {                                                1369 {
1114         /* has ID 0x008c when not in "Advance    1370         /* has ID 0x008c when not in "Advanced Driver" mode */
1115         USB_DEVICE(0x0582, 0x008b),              1371         USB_DEVICE(0x0582, 0x008b),
1116         QUIRK_DRIVER_INFO {                   !! 1372         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1117                 .vendor_name = "EDIROL",         1373                 .vendor_name = "EDIROL",
1118                 .product_name = "PC-50",         1374                 .product_name = "PC-50",
1119                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1375                 .ifnum = 0,
                                                   >> 1376                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1377                 .data = & (const struct snd_usb_midi_endpoint_info) {
1120                         .out_cables = 0x0001,    1378                         .out_cables = 0x0001,
1121                         .in_cables  = 0x0001     1379                         .in_cables  = 0x0001
1122                 }                                1380                 }
1123         }                                        1381         }
1124 },                                               1382 },
1125 {                                                1383 {
1126         /*                                       1384         /*
1127          * This quirk is for the "Advanced Dr    1385          * This quirk is for the "Advanced Driver" mode. If off, the UA-4FX
1128          * is standard compliant, but has onl    1386          * is standard compliant, but has only 16-bit PCM and no MIDI.
1129          */                                      1387          */
1130         USB_DEVICE(0x0582, 0x00a3),              1388         USB_DEVICE(0x0582, 0x00a3),
1131         QUIRK_DRIVER_INFO {                   !! 1389         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1132                 .vendor_name = "EDIROL",         1390                 .vendor_name = "EDIROL",
1133                 .product_name = "UA-4FX",        1391                 .product_name = "UA-4FX",
1134                 QUIRK_DATA_COMPOSITE {        !! 1392                 .ifnum = QUIRK_ANY_INTERFACE,
1135                         { QUIRK_DATA_EDIROL_U !! 1393                 .type = QUIRK_COMPOSITE,
1136                         { QUIRK_DATA_EDIROL_U !! 1394                 .data = (const struct snd_usb_audio_quirk[]) {
1137                         { QUIRK_DATA_EDIROL_U !! 1395                         {
1138                         QUIRK_COMPOSITE_END   !! 1396                                 .ifnum = 0,
                                                   >> 1397                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1398                         },
                                                   >> 1399                         {
                                                   >> 1400                                 .ifnum = 1,
                                                   >> 1401                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1402                         },
                                                   >> 1403                         {
                                                   >> 1404                                 .ifnum = 2,
                                                   >> 1405                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1406                         },
                                                   >> 1407                         {
                                                   >> 1408                                 .ifnum = -1
                                                   >> 1409                         }
1139                 }                                1410                 }
1140         }                                        1411         }
1141 },                                               1412 },
1142 {                                                1413 {
1143         /* Edirol M-16DX */                      1414         /* Edirol M-16DX */
1144         USB_DEVICE(0x0582, 0x00c4),              1415         USB_DEVICE(0x0582, 0x00c4),
1145         QUIRK_DRIVER_INFO {                   !! 1416         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1146                 QUIRK_DATA_COMPOSITE {        !! 1417                 .ifnum = QUIRK_ANY_INTERFACE,
1147                         { QUIRK_DATA_STANDARD !! 1418                 .type = QUIRK_COMPOSITE,
1148                         { QUIRK_DATA_STANDARD !! 1419                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 1420                         {
                                                   >> 1421                                 .ifnum = 0,
                                                   >> 1422                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1423                         },
1149                         {                        1424                         {
1150                                 QUIRK_DATA_MI !! 1425                                 .ifnum = 1,
                                                   >> 1426                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1427                         },
                                                   >> 1428                         {
                                                   >> 1429                                 .ifnum = 2,
                                                   >> 1430                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1431                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1151                                         .out_    1432                                         .out_cables = 0x0001,
1152                                         .in_c    1433                                         .in_cables  = 0x0001
1153                                 }                1434                                 }
1154                         },                       1435                         },
1155                         QUIRK_COMPOSITE_END   !! 1436                         {
                                                   >> 1437                                 .ifnum = -1
                                                   >> 1438                         }
1156                 }                                1439                 }
1157         }                                        1440         }
1158 },                                               1441 },
1159 {                                                1442 {
1160         /* Advanced modes of the Edirol UA-25    1443         /* Advanced modes of the Edirol UA-25EX.
1161          * For the standard mode, UA-25EX has    1444          * For the standard mode, UA-25EX has ID 0582:00e7, which
1162          * offers only 16-bit PCM at 44.1 kHz    1445          * offers only 16-bit PCM at 44.1 kHz and no MIDI.
1163          */                                      1446          */
1164         USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6    1447         USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6),
1165         QUIRK_DRIVER_INFO {                   !! 1448         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1166                 .vendor_name = "EDIROL",         1449                 .vendor_name = "EDIROL",
1167                 .product_name = "UA-25EX",       1450                 .product_name = "UA-25EX",
1168                 QUIRK_DATA_COMPOSITE {        !! 1451                 .ifnum = QUIRK_ANY_INTERFACE,
1169                         { QUIRK_DATA_EDIROL_U !! 1452                 .type = QUIRK_COMPOSITE,
1170                         { QUIRK_DATA_EDIROL_U !! 1453                 .data = (const struct snd_usb_audio_quirk[]) {
1171                         { QUIRK_DATA_EDIROL_U !! 1454                         {
1172                         QUIRK_COMPOSITE_END   !! 1455                                 .ifnum = 0,
                                                   >> 1456                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1457                         },
                                                   >> 1458                         {
                                                   >> 1459                                 .ifnum = 1,
                                                   >> 1460                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1461                         },
                                                   >> 1462                         {
                                                   >> 1463                                 .ifnum = 2,
                                                   >> 1464                                 .type = QUIRK_AUDIO_EDIROL_UAXX
                                                   >> 1465                         },
                                                   >> 1466                         {
                                                   >> 1467                                 .ifnum = -1
                                                   >> 1468                         }
1173                 }                                1469                 }
1174         }                                        1470         }
1175 },                                               1471 },
1176 {                                                1472 {
1177         /* Edirol UM-3G */                       1473         /* Edirol UM-3G */
1178         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108    1474         USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),
1179         QUIRK_DRIVER_INFO {                   !! 1475         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1180                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1476                 .ifnum = 0,
                                                   >> 1477                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1478                 .data = & (const struct snd_usb_midi_endpoint_info) {
1181                         .out_cables = 0x0007,    1479                         .out_cables = 0x0007,
1182                         .in_cables  = 0x0007     1480                         .in_cables  = 0x0007
1183                 }                                1481                 }
1184         }                                        1482         }
1185 },                                               1483 },
1186 {                                                1484 {
1187         /* BOSS ME-25 */                         1485         /* BOSS ME-25 */
1188         USB_DEVICE(0x0582, 0x0113),              1486         USB_DEVICE(0x0582, 0x0113),
1189         QUIRK_DRIVER_INFO {                   !! 1487         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1190                 QUIRK_DATA_COMPOSITE {        !! 1488                 .ifnum = QUIRK_ANY_INTERFACE,
1191                         { QUIRK_DATA_STANDARD !! 1489                 .type = QUIRK_COMPOSITE,
1192                         { QUIRK_DATA_STANDARD !! 1490                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 1491                         {
                                                   >> 1492                                 .ifnum = 0,
                                                   >> 1493                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1494                         },
                                                   >> 1495                         {
                                                   >> 1496                                 .ifnum = 1,
                                                   >> 1497                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1498                         },
1193                         {                        1499                         {
1194                                 QUIRK_DATA_MI !! 1500                                 .ifnum = 2,
                                                   >> 1501                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1502                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1195                                         .out_    1503                                         .out_cables = 0x0001,
1196                                         .in_c    1504                                         .in_cables  = 0x0001
1197                                 }                1505                                 }
1198                         },                       1506                         },
1199                         QUIRK_COMPOSITE_END   !! 1507                         {
                                                   >> 1508                                 .ifnum = -1
                                                   >> 1509                         }
1200                 }                                1510                 }
1201         }                                        1511         }
1202 },                                               1512 },
1203 {                                                1513 {
1204         /* only 44.1 kHz works at the moment     1514         /* only 44.1 kHz works at the moment */
1205         USB_DEVICE(0x0582, 0x0120),              1515         USB_DEVICE(0x0582, 0x0120),
1206         QUIRK_DRIVER_INFO {                   !! 1516         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1207                 /* .vendor_name = "Roland", *    1517                 /* .vendor_name = "Roland", */
1208                 /* .product_name = "OCTO-CAPT    1518                 /* .product_name = "OCTO-CAPTURE", */
1209                 QUIRK_DATA_COMPOSITE {        !! 1519                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1520                 .type = QUIRK_COMPOSITE,
                                                   >> 1521                 .data = (const struct snd_usb_audio_quirk[]) {
1210                         {                        1522                         {
1211                                 QUIRK_DATA_AU !! 1523                                 .ifnum = 0,
                                                   >> 1524                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 1525                                 .data = & (const struct audioformat) {
1212                                         .form    1526                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1213                                         .chan    1527                                         .channels = 10,
1214                                         .ifac    1528                                         .iface = 0,
1215                                         .alts    1529                                         .altsetting = 1,
1216                                         .alts    1530                                         .altset_idx = 1,
1217                                         .endp    1531                                         .endpoint = 0x05,
1218                                         .ep_a    1532                                         .ep_attr = 0x05,
1219                                         .rate    1533                                         .rates = SNDRV_PCM_RATE_44100,
1220                                         .rate    1534                                         .rate_min = 44100,
1221                                         .rate    1535                                         .rate_max = 44100,
1222                                         .nr_r    1536                                         .nr_rates = 1,
1223                                         .rate    1537                                         .rate_table = (unsigned int[]) { 44100 }
1224                                 }                1538                                 }
1225                         },                       1539                         },
1226                         {                        1540                         {
1227                                 QUIRK_DATA_AU !! 1541                                 .ifnum = 1,
                                                   >> 1542                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 1543                                 .data = & (const struct audioformat) {
1228                                         .form    1544                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1229                                         .chan    1545                                         .channels = 12,
1230                                         .ifac    1546                                         .iface = 1,
1231                                         .alts    1547                                         .altsetting = 1,
1232                                         .alts    1548                                         .altset_idx = 1,
1233                                         .endp    1549                                         .endpoint = 0x85,
1234                                         .ep_a    1550                                         .ep_attr = 0x25,
1235                                         .rate    1551                                         .rates = SNDRV_PCM_RATE_44100,
1236                                         .rate    1552                                         .rate_min = 44100,
1237                                         .rate    1553                                         .rate_max = 44100,
1238                                         .nr_r    1554                                         .nr_rates = 1,
1239                                         .rate    1555                                         .rate_table = (unsigned int[]) { 44100 }
1240                                 }                1556                                 }
1241                         },                       1557                         },
1242                         {                        1558                         {
1243                                 QUIRK_DATA_MI !! 1559                                 .ifnum = 2,
                                                   >> 1560                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1561                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1244                                         .out_    1562                                         .out_cables = 0x0001,
1245                                         .in_c    1563                                         .in_cables  = 0x0001
1246                                 }                1564                                 }
1247                         },                       1565                         },
1248                         { QUIRK_DATA_IGNORE(3 !! 1566                         {
1249                         { QUIRK_DATA_IGNORE(4 !! 1567                                 .ifnum = 3,
1250                         QUIRK_COMPOSITE_END   !! 1568                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1569                         },
                                                   >> 1570                         {
                                                   >> 1571                                 .ifnum = 4,
                                                   >> 1572                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1573                         },
                                                   >> 1574                         {
                                                   >> 1575                                 .ifnum = -1
                                                   >> 1576                         }
1251                 }                                1577                 }
1252         }                                        1578         }
1253 },                                               1579 },
1254 {                                                1580 {
1255         /* only 44.1 kHz works at the moment     1581         /* only 44.1 kHz works at the moment */
1256         USB_DEVICE(0x0582, 0x012f),              1582         USB_DEVICE(0x0582, 0x012f),
1257         QUIRK_DRIVER_INFO {                   !! 1583         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1258                 /* .vendor_name = "Roland", *    1584                 /* .vendor_name = "Roland", */
1259                 /* .product_name = "QUAD-CAPT    1585                 /* .product_name = "QUAD-CAPTURE", */
1260                 QUIRK_DATA_COMPOSITE {        !! 1586                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1587                 .type = QUIRK_COMPOSITE,
                                                   >> 1588                 .data = (const struct snd_usb_audio_quirk[]) {
1261                         {                        1589                         {
1262                                 QUIRK_DATA_AU !! 1590                                 .ifnum = 0,
                                                   >> 1591                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 1592                                 .data = & (const struct audioformat) {
1263                                         .form    1593                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1264                                         .chan    1594                                         .channels = 4,
1265                                         .ifac    1595                                         .iface = 0,
1266                                         .alts    1596                                         .altsetting = 1,
1267                                         .alts    1597                                         .altset_idx = 1,
1268                                         .endp    1598                                         .endpoint = 0x05,
1269                                         .ep_a    1599                                         .ep_attr = 0x05,
1270                                         .rate    1600                                         .rates = SNDRV_PCM_RATE_44100,
1271                                         .rate    1601                                         .rate_min = 44100,
1272                                         .rate    1602                                         .rate_max = 44100,
1273                                         .nr_r    1603                                         .nr_rates = 1,
1274                                         .rate    1604                                         .rate_table = (unsigned int[]) { 44100 }
1275                                 }                1605                                 }
1276                         },                       1606                         },
1277                         {                        1607                         {
1278                                 QUIRK_DATA_AU !! 1608                                 .ifnum = 1,
                                                   >> 1609                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 1610                                 .data = & (const struct audioformat) {
1279                                         .form    1611                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
1280                                         .chan    1612                                         .channels = 6,
1281                                         .ifac    1613                                         .iface = 1,
1282                                         .alts    1614                                         .altsetting = 1,
1283                                         .alts    1615                                         .altset_idx = 1,
1284                                         .endp    1616                                         .endpoint = 0x85,
1285                                         .ep_a    1617                                         .ep_attr = 0x25,
1286                                         .rate    1618                                         .rates = SNDRV_PCM_RATE_44100,
1287                                         .rate    1619                                         .rate_min = 44100,
1288                                         .rate    1620                                         .rate_max = 44100,
1289                                         .nr_r    1621                                         .nr_rates = 1,
1290                                         .rate    1622                                         .rate_table = (unsigned int[]) { 44100 }
1291                                 }                1623                                 }
1292                         },                       1624                         },
1293                         {                        1625                         {
1294                                 QUIRK_DATA_MI !! 1626                                 .ifnum = 2,
                                                   >> 1627                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1628                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1295                                         .out_    1629                                         .out_cables = 0x0001,
1296                                         .in_c    1630                                         .in_cables  = 0x0001
1297                                 }                1631                                 }
1298                         },                       1632                         },
1299                         { QUIRK_DATA_IGNORE(3 !! 1633                         {
1300                         { QUIRK_DATA_IGNORE(4 !! 1634                                 .ifnum = 3,
1301                         QUIRK_COMPOSITE_END   !! 1635                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1636                         },
                                                   >> 1637                         {
                                                   >> 1638                                 .ifnum = 4,
                                                   >> 1639                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1640                         },
                                                   >> 1641                         {
                                                   >> 1642                                 .ifnum = -1
                                                   >> 1643                         }
1302                 }                                1644                 }
1303         }                                        1645         }
1304 },                                               1646 },
1305 {                                                1647 {
1306         USB_DEVICE(0x0582, 0x0159),              1648         USB_DEVICE(0x0582, 0x0159),
1307         QUIRK_DRIVER_INFO {                   !! 1649         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1308                 /* .vendor_name = "Roland", *    1650                 /* .vendor_name = "Roland", */
1309                 /* .product_name = "UA-22", *    1651                 /* .product_name = "UA-22", */
1310                 QUIRK_DATA_COMPOSITE {        !! 1652                 .ifnum = QUIRK_ANY_INTERFACE,
1311                         { QUIRK_DATA_STANDARD !! 1653                 .type = QUIRK_COMPOSITE,
1312                         { QUIRK_DATA_STANDARD !! 1654                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 1655                         {
                                                   >> 1656                                 .ifnum = 0,
                                                   >> 1657                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1658                         },
1313                         {                        1659                         {
1314                                 QUIRK_DATA_MI !! 1660                                 .ifnum = 1,
                                                   >> 1661                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1662                         },
                                                   >> 1663                         {
                                                   >> 1664                                 .ifnum = 2,
                                                   >> 1665                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1666                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1315                                         .out_    1667                                         .out_cables = 0x0001,
1316                                         .in_c    1668                                         .in_cables = 0x0001
1317                                 }                1669                                 }
1318                         },                       1670                         },
1319                         QUIRK_COMPOSITE_END   !! 1671                         {
                                                   >> 1672                                 .ifnum = -1
                                                   >> 1673                         }
1320                 }                                1674                 }
1321         }                                        1675         }
1322 },                                               1676 },
1323                                               << 
1324 /* UA101 and co are supported by another driv << 
1325 {                                             << 
1326         USB_DEVICE(0x0582, 0x0044), /* UA-100 << 
1327         QUIRK_DRIVER_INFO {                   << 
1328                 .ifnum = QUIRK_NODEV_INTERFAC << 
1329         },                                    << 
1330 },                                            << 
1331 {                                             << 
1332         USB_DEVICE(0x0582, 0x007d), /* UA-101 << 
1333         QUIRK_DRIVER_INFO {                   << 
1334                 .ifnum = QUIRK_NODEV_INTERFAC << 
1335         },                                    << 
1336 },                                            << 
1337 {                                             << 
1338         USB_DEVICE(0x0582, 0x008d), /* UA-101 << 
1339         QUIRK_DRIVER_INFO {                   << 
1340                 .ifnum = QUIRK_NODEV_INTERFAC << 
1341         },                                    << 
1342 },                                            << 
1343                                               << 
1344 /* this catches most recent vendor-specific R    1677 /* this catches most recent vendor-specific Roland devices */
1345 {                                                1678 {
1346         .match_flags = USB_DEVICE_ID_MATCH_VE    1679         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1347                        USB_DEVICE_ID_MATCH_IN    1680                        USB_DEVICE_ID_MATCH_INT_CLASS,
1348         .idVendor = 0x0582,                      1681         .idVendor = 0x0582,
1349         .bInterfaceClass = USB_CLASS_VENDOR_S    1682         .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1350         QUIRK_DRIVER_INFO {                   !! 1683         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
1351                 .ifnum = QUIRK_ANY_INTERFACE,    1684                 .ifnum = QUIRK_ANY_INTERFACE,
1352                 .type = QUIRK_AUTODETECT         1685                 .type = QUIRK_AUTODETECT
1353         }                                        1686         }
1354 },                                               1687 },
1355                                                  1688 
1356 /* Guillemot devices */                          1689 /* Guillemot devices */
1357 {                                                1690 {
1358         /*                                       1691         /*
1359          * This is for the "Windows Edition"     1692          * This is for the "Windows Edition" where the external MIDI ports are
1360          * the only MIDI ports; the control d    1693          * the only MIDI ports; the control data is reported through HID
1361          * interfaces.  The "Macintosh Editio    1694          * interfaces.  The "Macintosh Edition" has ID 0xd002 and uses standard
1362          * compliant USB MIDI ports for exter    1695          * compliant USB MIDI ports for external MIDI and controls.
1363          */                                      1696          */
1364         USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000    1697         USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000),
1365         QUIRK_DRIVER_INFO {                   !! 1698         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1366                 .vendor_name = "Hercules",       1699                 .vendor_name = "Hercules",
1367                 .product_name = "DJ Console (    1700                 .product_name = "DJ Console (WE)",
1368                 QUIRK_DATA_MIDI_FIXED_ENDPOIN !! 1701                 .ifnum = 4,
                                                   >> 1702                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 1703                 .data = & (const struct snd_usb_midi_endpoint_info) {
1369                         .out_cables = 0x0001,    1704                         .out_cables = 0x0001,
1370                         .in_cables = 0x0001      1705                         .in_cables = 0x0001
1371                 }                                1706                 }
1372         }                                        1707         }
1373 },                                               1708 },
1374                                                  1709 
1375 /* Midiman/M-Audio devices */                    1710 /* Midiman/M-Audio devices */
1376 {                                                1711 {
1377         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002    1712         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002),
1378         QUIRK_DRIVER_INFO {                   !! 1713         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1379                 .vendor_name = "M-Audio",        1714                 .vendor_name = "M-Audio",
1380                 .product_name = "MidiSport 2x    1715                 .product_name = "MidiSport 2x2",
1381                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1716                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1717                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1718                 .data = & (const struct snd_usb_midi_endpoint_info) {
1382                         .out_cables = 0x0003,    1719                         .out_cables = 0x0003,
1383                         .in_cables  = 0x0003     1720                         .in_cables  = 0x0003
1384                 }                                1721                 }
1385         }                                        1722         }
1386 },                                               1723 },
1387 {                                                1724 {
1388         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011    1725         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011),
1389         QUIRK_DRIVER_INFO {                   !! 1726         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1390                 .vendor_name = "M-Audio",        1727                 .vendor_name = "M-Audio",
1391                 .product_name = "MidiSport 1x    1728                 .product_name = "MidiSport 1x1",
1392                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1729                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1730                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1731                 .data = & (const struct snd_usb_midi_endpoint_info) {
1393                         .out_cables = 0x0001,    1732                         .out_cables = 0x0001,
1394                         .in_cables  = 0x0001     1733                         .in_cables  = 0x0001
1395                 }                                1734                 }
1396         }                                        1735         }
1397 },                                               1736 },
1398 {                                                1737 {
1399         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015    1738         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015),
1400         QUIRK_DRIVER_INFO {                   !! 1739         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1401                 .vendor_name = "M-Audio",        1740                 .vendor_name = "M-Audio",
1402                 .product_name = "Keystation",    1741                 .product_name = "Keystation",
1403                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1742                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1743                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1744                 .data = & (const struct snd_usb_midi_endpoint_info) {
1404                         .out_cables = 0x0001,    1745                         .out_cables = 0x0001,
1405                         .in_cables  = 0x0001     1746                         .in_cables  = 0x0001
1406                 }                                1747                 }
1407         }                                        1748         }
1408 },                                               1749 },
1409 {                                                1750 {
1410         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021    1751         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021),
1411         QUIRK_DRIVER_INFO {                   !! 1752         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1412                 .vendor_name = "M-Audio",        1753                 .vendor_name = "M-Audio",
1413                 .product_name = "MidiSport 4x    1754                 .product_name = "MidiSport 4x4",
1414                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1755                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1756                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1757                 .data = & (const struct snd_usb_midi_endpoint_info) {
1415                         .out_cables = 0x000f,    1758                         .out_cables = 0x000f,
1416                         .in_cables  = 0x000f     1759                         .in_cables  = 0x000f
1417                 }                                1760                 }
1418         }                                        1761         }
1419 },                                               1762 },
1420 {                                                1763 {
1421         /*                                       1764         /*
1422          * For hardware revision 1.05; in the    1765          * For hardware revision 1.05; in the later revisions (1.10 and
1423          * 1.21), 0x1031 is the ID for the de    1766          * 1.21), 0x1031 is the ID for the device without firmware.
1424          * Thanks to Olaf Giesbrecht <Olaf_Gi    1767          * Thanks to Olaf Giesbrecht <Olaf_Giesbrecht@yahoo.de>
1425          */                                      1768          */
1426         USB_DEVICE_VER(0x0763, 0x1031, 0x0100    1769         USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109),
1427         QUIRK_DRIVER_INFO {                   !! 1770         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1428                 .vendor_name = "M-Audio",        1771                 .vendor_name = "M-Audio",
1429                 .product_name = "MidiSport 8x    1772                 .product_name = "MidiSport 8x8",
1430                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1773                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1774                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1775                 .data = & (const struct snd_usb_midi_endpoint_info) {
1431                         .out_cables = 0x01ff,    1776                         .out_cables = 0x01ff,
1432                         .in_cables  = 0x01ff     1777                         .in_cables  = 0x01ff
1433                 }                                1778                 }
1434         }                                        1779         }
1435 },                                               1780 },
1436 {                                                1781 {
1437         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033    1782         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033),
1438         QUIRK_DRIVER_INFO {                   !! 1783         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1439                 .vendor_name = "M-Audio",        1784                 .vendor_name = "M-Audio",
1440                 .product_name = "MidiSport 8x    1785                 .product_name = "MidiSport 8x8",
1441                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1786                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1787                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1788                 .data = & (const struct snd_usb_midi_endpoint_info) {
1442                         .out_cables = 0x01ff,    1789                         .out_cables = 0x01ff,
1443                         .in_cables  = 0x01ff     1790                         .in_cables  = 0x01ff
1444                 }                                1791                 }
1445         }                                        1792         }
1446 },                                               1793 },
1447 {                                                1794 {
1448         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041    1795         USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041),
1449         QUIRK_DRIVER_INFO {                   !! 1796         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1450                 .vendor_name = "M-Audio",        1797                 .vendor_name = "M-Audio",
1451                 .product_name = "MidiSport 2x    1798                 .product_name = "MidiSport 2x4",
1452                 QUIRK_DATA_MIDI_MIDIMAN(QUIRK !! 1799                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1800                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1801                 .data = & (const struct snd_usb_midi_endpoint_info) {
1453                         .out_cables = 0x000f,    1802                         .out_cables = 0x000f,
1454                         .in_cables  = 0x0003     1803                         .in_cables  = 0x0003
1455                 }                                1804                 }
1456         }                                        1805         }
1457 },                                               1806 },
1458 {                                                1807 {
1459         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001    1808         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001),
1460         QUIRK_DRIVER_INFO {                   !! 1809         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1461                 .vendor_name = "M-Audio",        1810                 .vendor_name = "M-Audio",
1462                 .product_name = "Quattro",       1811                 .product_name = "Quattro",
1463                 QUIRK_DATA_COMPOSITE {        !! 1812                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 1813                 .type = QUIRK_COMPOSITE,
                                                   >> 1814                 .data = & (const struct snd_usb_audio_quirk[]) {
1464                         /*                       1815                         /*
1465                          * Interfaces 0-2 are    1816                          * Interfaces 0-2 are "Windows-compatible", 16-bit only,
1466                          * and share endpoint    1817                          * and share endpoints with the other interfaces.
1467                          * Ignore them.  The     1818                          * Ignore them.  The other interfaces can do 24 bits,
1468                          * but captured sampl    1819                          * but captured samples are big-endian (see usbaudio.c).
1469                          */                      1820                          */
1470                         { QUIRK_DATA_IGNORE(0 << 
1471                         { QUIRK_DATA_IGNORE(1 << 
1472                         { QUIRK_DATA_IGNORE(2 << 
1473                         { QUIRK_DATA_IGNORE(3 << 
1474                         { QUIRK_DATA_STANDARD << 
1475                         { QUIRK_DATA_STANDARD << 
1476                         { QUIRK_DATA_IGNORE(6 << 
1477                         { QUIRK_DATA_STANDARD << 
1478                         { QUIRK_DATA_STANDARD << 
1479                         {                        1821                         {
1480                                 QUIRK_DATA_MI !! 1822                                 .ifnum = 0,
                                                   >> 1823                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1824                         },
                                                   >> 1825                         {
                                                   >> 1826                                 .ifnum = 1,
                                                   >> 1827                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1828                         },
                                                   >> 1829                         {
                                                   >> 1830                                 .ifnum = 2,
                                                   >> 1831                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1832                         },
                                                   >> 1833                         {
                                                   >> 1834                                 .ifnum = 3,
                                                   >> 1835                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1836                         },
                                                   >> 1837                         {
                                                   >> 1838                                 .ifnum = 4,
                                                   >> 1839                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1840                         },
                                                   >> 1841                         {
                                                   >> 1842                                 .ifnum = 5,
                                                   >> 1843                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1844                         },
                                                   >> 1845                         {
                                                   >> 1846                                 .ifnum = 6,
                                                   >> 1847                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1848                         },
                                                   >> 1849                         {
                                                   >> 1850                                 .ifnum = 7,
                                                   >> 1851                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1852                         },
                                                   >> 1853                         {
                                                   >> 1854                                 .ifnum = 8,
                                                   >> 1855                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1856                         },
                                                   >> 1857                         {
                                                   >> 1858                                 .ifnum = 9,
                                                   >> 1859                                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1860                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1481                                         .out_    1861                                         .out_cables = 0x0001,
1482                                         .in_c    1862                                         .in_cables  = 0x0001
1483                                 }                1863                                 }
1484                         },                       1864                         },
1485                         QUIRK_COMPOSITE_END   !! 1865                         {
                                                   >> 1866                                 .ifnum = -1
                                                   >> 1867                         }
1486                 }                                1868                 }
1487         }                                        1869         }
1488 },                                               1870 },
1489 {                                                1871 {
1490         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003    1872         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003),
1491         QUIRK_DRIVER_INFO {                   !! 1873         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1492                 .vendor_name = "M-Audio",        1874                 .vendor_name = "M-Audio",
1493                 .product_name = "AudioPhile",    1875                 .product_name = "AudioPhile",
1494                 QUIRK_DATA_MIDI_MIDIMAN(6) {  !! 1876                 .ifnum = 6,
                                                   >> 1877                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1878                 .data = & (const struct snd_usb_midi_endpoint_info) {
1495                         .out_cables = 0x0001,    1879                         .out_cables = 0x0001,
1496                         .in_cables  = 0x0001     1880                         .in_cables  = 0x0001
1497                 }                                1881                 }
1498         }                                        1882         }
1499 },                                               1883 },
1500 {                                                1884 {
1501         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008    1885         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008),
1502         QUIRK_DRIVER_INFO {                   !! 1886         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1503                 .vendor_name = "M-Audio",        1887                 .vendor_name = "M-Audio",
1504                 .product_name = "Ozone",         1888                 .product_name = "Ozone",
1505                 QUIRK_DATA_MIDI_MIDIMAN(3) {  !! 1889                 .ifnum = 3,
                                                   >> 1890                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1891                 .data = & (const struct snd_usb_midi_endpoint_info) {
1506                         .out_cables = 0x0001,    1892                         .out_cables = 0x0001,
1507                         .in_cables  = 0x0001     1893                         .in_cables  = 0x0001
1508                 }                                1894                 }
1509         }                                        1895         }
1510 },                                               1896 },
1511 {                                                1897 {
1512         USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d    1898         USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d),
1513         QUIRK_DRIVER_INFO {                   !! 1899         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1514                 .vendor_name = "M-Audio",        1900                 .vendor_name = "M-Audio",
1515                 .product_name = "OmniStudio",    1901                 .product_name = "OmniStudio",
1516                 QUIRK_DATA_COMPOSITE {        !! 1902                 .ifnum = QUIRK_ANY_INTERFACE,
1517                         { QUIRK_DATA_IGNORE(0 !! 1903                 .type = QUIRK_COMPOSITE,
1518                         { QUIRK_DATA_IGNORE(1 !! 1904                 .data = & (const struct snd_usb_audio_quirk[]) {
1519                         { QUIRK_DATA_IGNORE(2 !! 1905                         {
1520                         { QUIRK_DATA_IGNORE(3 !! 1906                                 .ifnum = 0,
1521                         { QUIRK_DATA_STANDARD !! 1907                                 .type = QUIRK_IGNORE_INTERFACE
1522                         { QUIRK_DATA_STANDARD !! 1908                         },
1523                         { QUIRK_DATA_IGNORE(6 << 
1524                         { QUIRK_DATA_STANDARD << 
1525                         { QUIRK_DATA_STANDARD << 
1526                         {                        1909                         {
1527                                 QUIRK_DATA_MI !! 1910                                 .ifnum = 1,
                                                   >> 1911                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1912                         },
                                                   >> 1913                         {
                                                   >> 1914                                 .ifnum = 2,
                                                   >> 1915                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1916                         },
                                                   >> 1917                         {
                                                   >> 1918                                 .ifnum = 3,
                                                   >> 1919                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1920                         },
                                                   >> 1921                         {
                                                   >> 1922                                 .ifnum = 4,
                                                   >> 1923                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1924                         },
                                                   >> 1925                         {
                                                   >> 1926                                 .ifnum = 5,
                                                   >> 1927                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1928                         },
                                                   >> 1929                         {
                                                   >> 1930                                 .ifnum = 6,
                                                   >> 1931                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 1932                         },
                                                   >> 1933                         {
                                                   >> 1934                                 .ifnum = 7,
                                                   >> 1935                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1936                         },
                                                   >> 1937                         {
                                                   >> 1938                                 .ifnum = 8,
                                                   >> 1939                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1940                         },
                                                   >> 1941                         {
                                                   >> 1942                                 .ifnum = 9,
                                                   >> 1943                                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1944                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1528                                         .out_    1945                                         .out_cables = 0x0001,
1529                                         .in_c    1946                                         .in_cables  = 0x0001
1530                                 }                1947                                 }
1531                         },                       1948                         },
1532                         QUIRK_COMPOSITE_END   !! 1949                         {
                                                   >> 1950                                 .ifnum = -1
                                                   >> 1951                         }
1533                 }                                1952                 }
1534         }                                        1953         }
1535 },                                               1954 },
1536 {                                                1955 {
1537         USB_DEVICE(0x0763, 0x2019),              1956         USB_DEVICE(0x0763, 0x2019),
1538         QUIRK_DRIVER_INFO {                   !! 1957         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1539                 /* .vendor_name = "M-Audio",     1958                 /* .vendor_name = "M-Audio", */
1540                 /* .product_name = "Ozone Aca    1959                 /* .product_name = "Ozone Academic", */
1541                 QUIRK_DATA_COMPOSITE {        !! 1960                 .ifnum = QUIRK_ANY_INTERFACE,
1542                         { QUIRK_DATA_STANDARD !! 1961                 .type = QUIRK_COMPOSITE,
1543                         { QUIRK_DATA_STANDARD !! 1962                 .data = & (const struct snd_usb_audio_quirk[]) {
1544                         { QUIRK_DATA_STANDARD !! 1963                         {
                                                   >> 1964                                 .ifnum = 0,
                                                   >> 1965                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1966                         },
                                                   >> 1967                         {
                                                   >> 1968                                 .ifnum = 1,
                                                   >> 1969                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1970                         },
                                                   >> 1971                         {
                                                   >> 1972                                 .ifnum = 2,
                                                   >> 1973                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 1974                         },
1545                         {                        1975                         {
1546                                 QUIRK_DATA_MI !! 1976                                 .ifnum = 3,
                                                   >> 1977                                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 1978                                 .data = & (const struct snd_usb_midi_endpoint_info) {
1547                                         .out_    1979                                         .out_cables = 0x0001,
1548                                         .in_c    1980                                         .in_cables  = 0x0001
1549                                 }                1981                                 }
1550                         },                       1982                         },
1551                         QUIRK_COMPOSITE_END   !! 1983                         {
                                                   >> 1984                                 .ifnum = -1
                                                   >> 1985                         }
1552                 }                                1986                 }
1553         }                                        1987         }
1554 },                                               1988 },
1555 {                                                1989 {
1556         /* M-Audio Micro */                   << 
1557         USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a << 
1558 },                                            << 
1559 {                                             << 
1560         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030    1990         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
1561         QUIRK_DRIVER_INFO {                   !! 1991         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
1562                 /* .vendor_name = "M-Audio",     1992                 /* .vendor_name = "M-Audio", */
1563                 /* .product_name = "Fast Trac    1993                 /* .product_name = "Fast Track C400", */
1564                 QUIRK_DATA_COMPOSITE {        !! 1994                 .ifnum = QUIRK_ANY_INTERFACE,
1565                         { QUIRK_DATA_STANDARD !! 1995                 .type = QUIRK_COMPOSITE,
                                                   >> 1996                 .data = &(const struct snd_usb_audio_quirk[]) {
                                                   >> 1997                         {
                                                   >> 1998                                 .ifnum = 1,
                                                   >> 1999                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2000                         },
1566                         /* Playback */           2001                         /* Playback */
1567                         {                        2002                         {
1568                                 QUIRK_DATA_AU !! 2003                                 .ifnum = 2,
                                                   >> 2004                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2005                                 .data = &(const struct audioformat) {
1569                                         .form    2006                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1570                                         .chan    2007                                         .channels = 6,
1571                                         .ifac    2008                                         .iface = 2,
1572                                         .alts    2009                                         .altsetting = 1,
1573                                         .alts    2010                                         .altset_idx = 1,
1574                                         .attr    2011                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1575                                         .endp    2012                                         .endpoint = 0x01,
1576                                         .ep_a    2013                                         .ep_attr = 0x09,
1577                                         .rate    2014                                         .rates = SNDRV_PCM_RATE_44100 |
1578                                                  2015                                                  SNDRV_PCM_RATE_48000 |
1579                                                  2016                                                  SNDRV_PCM_RATE_88200 |
1580                                                  2017                                                  SNDRV_PCM_RATE_96000,
1581                                         .rate    2018                                         .rate_min = 44100,
1582                                         .rate    2019                                         .rate_max = 96000,
1583                                         .nr_r    2020                                         .nr_rates = 4,
1584                                         .rate    2021                                         .rate_table = (unsigned int[]) {
1585                                                  2022                                                         44100, 48000, 88200, 96000
1586                                         },       2023                                         },
1587                                         .cloc    2024                                         .clock = 0x80,
1588                                 }                2025                                 }
1589                         },                       2026                         },
1590                         /* Capture */            2027                         /* Capture */
1591                         {                        2028                         {
1592                                 QUIRK_DATA_AU !! 2029                                 .ifnum = 3,
                                                   >> 2030                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2031                                 .data = &(const struct audioformat) {
1593                                         .form    2032                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1594                                         .chan    2033                                         .channels = 4,
1595                                         .ifac    2034                                         .iface = 3,
1596                                         .alts    2035                                         .altsetting = 1,
1597                                         .alts    2036                                         .altset_idx = 1,
1598                                         .attr    2037                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1599                                         .endp    2038                                         .endpoint = 0x81,
1600                                         .ep_a    2039                                         .ep_attr = 0x05,
1601                                         .rate    2040                                         .rates = SNDRV_PCM_RATE_44100 |
1602                                                  2041                                                  SNDRV_PCM_RATE_48000 |
1603                                                  2042                                                  SNDRV_PCM_RATE_88200 |
1604                                                  2043                                                  SNDRV_PCM_RATE_96000,
1605                                         .rate    2044                                         .rate_min = 44100,
1606                                         .rate    2045                                         .rate_max = 96000,
1607                                         .nr_r    2046                                         .nr_rates = 4,
1608                                         .rate    2047                                         .rate_table = (unsigned int[]) {
1609                                                  2048                                                 44100, 48000, 88200, 96000
1610                                         },       2049                                         },
1611                                         .cloc    2050                                         .clock = 0x80,
1612                                 }                2051                                 }
1613                         },                       2052                         },
1614                         /* MIDI: Interface =  !! 2053                         /* MIDI */
1615                         QUIRK_COMPOSITE_END   !! 2054                         {
                                                   >> 2055                                 .ifnum = -1 /* Interface = 4 */
                                                   >> 2056                         }
1616                 }                                2057                 }
1617         }                                        2058         }
1618 },                                               2059 },
1619 {                                                2060 {
1620         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031    2061         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031),
1621         QUIRK_DRIVER_INFO {                   !! 2062         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
1622                 /* .vendor_name = "M-Audio",     2063                 /* .vendor_name = "M-Audio", */
1623                 /* .product_name = "Fast Trac    2064                 /* .product_name = "Fast Track C600", */
1624                 QUIRK_DATA_COMPOSITE {        !! 2065                 .ifnum = QUIRK_ANY_INTERFACE,
1625                         { QUIRK_DATA_STANDARD !! 2066                 .type = QUIRK_COMPOSITE,
                                                   >> 2067                 .data = &(const struct snd_usb_audio_quirk[]) {
                                                   >> 2068                         {
                                                   >> 2069                                 .ifnum = 1,
                                                   >> 2070                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2071                         },
1626                         /* Playback */           2072                         /* Playback */
1627                         {                        2073                         {
1628                                 QUIRK_DATA_AU !! 2074                                 .ifnum = 2,
                                                   >> 2075                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2076                                 .data = &(const struct audioformat) {
1629                                         .form    2077                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1630                                         .chan    2078                                         .channels = 8,
1631                                         .ifac    2079                                         .iface = 2,
1632                                         .alts    2080                                         .altsetting = 1,
1633                                         .alts    2081                                         .altset_idx = 1,
1634                                         .attr    2082                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1635                                         .endp    2083                                         .endpoint = 0x01,
1636                                         .ep_a    2084                                         .ep_attr = 0x09,
1637                                         .rate    2085                                         .rates = SNDRV_PCM_RATE_44100 |
1638                                                  2086                                                  SNDRV_PCM_RATE_48000 |
1639                                                  2087                                                  SNDRV_PCM_RATE_88200 |
1640                                                  2088                                                  SNDRV_PCM_RATE_96000,
1641                                         .rate    2089                                         .rate_min = 44100,
1642                                         .rate    2090                                         .rate_max = 96000,
1643                                         .nr_r    2091                                         .nr_rates = 4,
1644                                         .rate    2092                                         .rate_table = (unsigned int[]) {
1645                                                  2093                                                         44100, 48000, 88200, 96000
1646                                         },       2094                                         },
1647                                         .cloc    2095                                         .clock = 0x80,
1648                                 }                2096                                 }
1649                         },                       2097                         },
1650                         /* Capture */            2098                         /* Capture */
1651                         {                        2099                         {
1652                                 QUIRK_DATA_AU !! 2100                                 .ifnum = 3,
                                                   >> 2101                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2102                                 .data = &(const struct audioformat) {
1653                                         .form    2103                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1654                                         .chan    2104                                         .channels = 6,
1655                                         .ifac    2105                                         .iface = 3,
1656                                         .alts    2106                                         .altsetting = 1,
1657                                         .alts    2107                                         .altset_idx = 1,
1658                                         .attr    2108                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1659                                         .endp    2109                                         .endpoint = 0x81,
1660                                         .ep_a    2110                                         .ep_attr = 0x05,
1661                                         .rate    2111                                         .rates = SNDRV_PCM_RATE_44100 |
1662                                                  2112                                                  SNDRV_PCM_RATE_48000 |
1663                                                  2113                                                  SNDRV_PCM_RATE_88200 |
1664                                                  2114                                                  SNDRV_PCM_RATE_96000,
1665                                         .rate    2115                                         .rate_min = 44100,
1666                                         .rate    2116                                         .rate_max = 96000,
1667                                         .nr_r    2117                                         .nr_rates = 4,
1668                                         .rate    2118                                         .rate_table = (unsigned int[]) {
1669                                                  2119                                                 44100, 48000, 88200, 96000
1670                                         },       2120                                         },
1671                                         .cloc    2121                                         .clock = 0x80,
1672                                 }                2122                                 }
1673                         },                       2123                         },
1674                         /* MIDI: Interface =  !! 2124                         /* MIDI */
1675                         QUIRK_COMPOSITE_END   !! 2125                         {
                                                   >> 2126                                 .ifnum = -1 /* Interface = 4 */
                                                   >> 2127                         }
1676                 }                                2128                 }
1677         }                                        2129         }
1678 },                                               2130 },
1679 {                                                2131 {
1680         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080    2132         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080),
1681         QUIRK_DRIVER_INFO {                   !! 2133         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1682                 /* .vendor_name = "M-Audio",     2134                 /* .vendor_name = "M-Audio", */
1683                 /* .product_name = "Fast Trac    2135                 /* .product_name = "Fast Track Ultra", */
1684                 QUIRK_DATA_COMPOSITE {        !! 2136                 .ifnum = QUIRK_ANY_INTERFACE,
1685                         { QUIRK_DATA_STANDARD !! 2137                 .type = QUIRK_COMPOSITE,
                                                   >> 2138                 .data = & (const struct snd_usb_audio_quirk[]) {
                                                   >> 2139                         {
                                                   >> 2140                                 .ifnum = 0,
                                                   >> 2141                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2142                         },
1686                         {                        2143                         {
1687                                 QUIRK_DATA_AU !! 2144                                 .ifnum = 1,
                                                   >> 2145                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2146                                 .data = & (const struct audioformat) {
1688                                         .form    2147                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1689                                         .chan    2148                                         .channels = 8,
1690                                         .ifac    2149                                         .iface = 1,
1691                                         .alts    2150                                         .altsetting = 1,
1692                                         .alts    2151                                         .altset_idx = 1,
1693                                         .attr    2152                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1694                                         .endp    2153                                         .endpoint = 0x01,
1695                                         .ep_a    2154                                         .ep_attr = 0x09,
1696                                         .rate    2155                                         .rates = SNDRV_PCM_RATE_44100 |
1697                                                  2156                                                  SNDRV_PCM_RATE_48000 |
1698                                                  2157                                                  SNDRV_PCM_RATE_88200 |
1699                                                  2158                                                  SNDRV_PCM_RATE_96000,
1700                                         .rate    2159                                         .rate_min = 44100,
1701                                         .rate    2160                                         .rate_max = 96000,
1702                                         .nr_r    2161                                         .nr_rates = 4,
1703                                         .rate    2162                                         .rate_table = (unsigned int[]) {
1704                                                  2163                                                 44100, 48000, 88200, 96000
1705                                         }        2164                                         }
1706                                 }                2165                                 }
1707                         },                       2166                         },
1708                         {                        2167                         {
1709                                 QUIRK_DATA_AU !! 2168                                 .ifnum = 2,
                                                   >> 2169                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2170                                 .data = & (const struct audioformat) {
1710                                         .form    2171                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1711                                         .chan    2172                                         .channels = 8,
1712                                         .ifac    2173                                         .iface = 2,
1713                                         .alts    2174                                         .altsetting = 1,
1714                                         .alts    2175                                         .altset_idx = 1,
1715                                         .attr    2176                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1716                                         .endp    2177                                         .endpoint = 0x81,
1717                                         .ep_a    2178                                         .ep_attr = 0x05,
1718                                         .rate    2179                                         .rates = SNDRV_PCM_RATE_44100 |
1719                                                  2180                                                  SNDRV_PCM_RATE_48000 |
1720                                                  2181                                                  SNDRV_PCM_RATE_88200 |
1721                                                  2182                                                  SNDRV_PCM_RATE_96000,
1722                                         .rate    2183                                         .rate_min = 44100,
1723                                         .rate    2184                                         .rate_max = 96000,
1724                                         .nr_r    2185                                         .nr_rates = 4,
1725                                         .rate    2186                                         .rate_table = (unsigned int[]) {
1726                                                  2187                                                 44100, 48000, 88200, 96000
1727                                         }        2188                                         }
1728                                 }                2189                                 }
1729                         },                       2190                         },
1730                         /* interface 3 (MIDI)    2191                         /* interface 3 (MIDI) is standard compliant */
1731                         QUIRK_COMPOSITE_END   !! 2192                         {
                                                   >> 2193                                 .ifnum = -1
                                                   >> 2194                         }
1732                 }                                2195                 }
1733         }                                        2196         }
1734 },                                               2197 },
1735 {                                                2198 {
1736         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081    2199         USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081),
1737         QUIRK_DRIVER_INFO {                   !! 2200         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1738                 /* .vendor_name = "M-Audio",     2201                 /* .vendor_name = "M-Audio", */
1739                 /* .product_name = "Fast Trac    2202                 /* .product_name = "Fast Track Ultra 8R", */
1740                 QUIRK_DATA_COMPOSITE {        !! 2203                 .ifnum = QUIRK_ANY_INTERFACE,
1741                         { QUIRK_DATA_STANDARD !! 2204                 .type = QUIRK_COMPOSITE,
                                                   >> 2205                 .data = & (const struct snd_usb_audio_quirk[]) {
                                                   >> 2206                         {
                                                   >> 2207                                 .ifnum = 0,
                                                   >> 2208                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2209                         },
1742                         {                        2210                         {
1743                                 QUIRK_DATA_AU !! 2211                                 .ifnum = 1,
                                                   >> 2212                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2213                                 .data = & (const struct audioformat) {
1744                                         .form    2214                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1745                                         .chan    2215                                         .channels = 8,
1746                                         .ifac    2216                                         .iface = 1,
1747                                         .alts    2217                                         .altsetting = 1,
1748                                         .alts    2218                                         .altset_idx = 1,
1749                                         .attr    2219                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1750                                         .endp    2220                                         .endpoint = 0x01,
1751                                         .ep_a    2221                                         .ep_attr = 0x09,
1752                                         .rate    2222                                         .rates = SNDRV_PCM_RATE_44100 |
1753                                                  2223                                                  SNDRV_PCM_RATE_48000 |
1754                                                  2224                                                  SNDRV_PCM_RATE_88200 |
1755                                                  2225                                                  SNDRV_PCM_RATE_96000,
1756                                         .rate    2226                                         .rate_min = 44100,
1757                                         .rate    2227                                         .rate_max = 96000,
1758                                         .nr_r    2228                                         .nr_rates = 4,
1759                                         .rate    2229                                         .rate_table = (unsigned int[]) {
1760                                                  2230                                                         44100, 48000, 88200, 96000
1761                                         }        2231                                         }
1762                                 }                2232                                 }
1763                         },                       2233                         },
1764                         {                        2234                         {
1765                                 QUIRK_DATA_AU !! 2235                                 .ifnum = 2,
                                                   >> 2236                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2237                                 .data = & (const struct audioformat) {
1766                                         .form    2238                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
1767                                         .chan    2239                                         .channels = 8,
1768                                         .ifac    2240                                         .iface = 2,
1769                                         .alts    2241                                         .altsetting = 1,
1770                                         .alts    2242                                         .altset_idx = 1,
1771                                         .attr    2243                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
1772                                         .endp    2244                                         .endpoint = 0x81,
1773                                         .ep_a    2245                                         .ep_attr = 0x05,
1774                                         .rate    2246                                         .rates = SNDRV_PCM_RATE_44100 |
1775                                                  2247                                                  SNDRV_PCM_RATE_48000 |
1776                                                  2248                                                  SNDRV_PCM_RATE_88200 |
1777                                                  2249                                                  SNDRV_PCM_RATE_96000,
1778                                         .rate    2250                                         .rate_min = 44100,
1779                                         .rate    2251                                         .rate_max = 96000,
1780                                         .nr_r    2252                                         .nr_rates = 4,
1781                                         .rate    2253                                         .rate_table = (unsigned int[]) {
1782                                                  2254                                                 44100, 48000, 88200, 96000
1783                                         }        2255                                         }
1784                                 }                2256                                 }
1785                         },                       2257                         },
1786                         /* interface 3 (MIDI)    2258                         /* interface 3 (MIDI) is standard compliant */
1787                         QUIRK_COMPOSITE_END   !! 2259                         {
                                                   >> 2260                                 .ifnum = -1
                                                   >> 2261                         }
1788                 }                                2262                 }
1789         }                                        2263         }
1790 },                                               2264 },
1791                                                  2265 
1792 /* Casio devices */                              2266 /* Casio devices */
1793 {                                                2267 {
1794         USB_DEVICE(0x07cf, 0x6801),              2268         USB_DEVICE(0x07cf, 0x6801),
1795         QUIRK_DRIVER_INFO {                   !! 2269         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1796                 .vendor_name = "Casio",          2270                 .vendor_name = "Casio",
1797                 .product_name = "PL-40R",        2271                 .product_name = "PL-40R",
1798                 QUIRK_DATA_MIDI_YAMAHA(0)     !! 2272                 .ifnum = 0,
                                                   >> 2273                 .type = QUIRK_MIDI_YAMAHA
1799         }                                        2274         }
1800 },                                               2275 },
1801 {                                                2276 {
1802         /* this ID is used by several devices    2277         /* this ID is used by several devices without a product ID */
1803         USB_DEVICE(0x07cf, 0x6802),              2278         USB_DEVICE(0x07cf, 0x6802),
1804         QUIRK_DRIVER_INFO {                   !! 2279         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1805                 .vendor_name = "Casio",          2280                 .vendor_name = "Casio",
1806                 .product_name = "Keyboard",      2281                 .product_name = "Keyboard",
1807                 QUIRK_DATA_MIDI_YAMAHA(0)     !! 2282                 .ifnum = 0,
                                                   >> 2283                 .type = QUIRK_MIDI_YAMAHA
1808         }                                        2284         }
1809 },                                               2285 },
1810                                                  2286 
1811 /* Mark of the Unicorn devices */                2287 /* Mark of the Unicorn devices */
1812 {                                                2288 {
1813         /* thanks to Robert A. Lerche <ral 'a    2289         /* thanks to Robert A. Lerche <ral 'at' msbit.com> */
1814         .match_flags = USB_DEVICE_ID_MATCH_VE    2290         .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1815                        USB_DEVICE_ID_MATCH_PR    2291                        USB_DEVICE_ID_MATCH_PRODUCT |
1816                        USB_DEVICE_ID_MATCH_DE    2292                        USB_DEVICE_ID_MATCH_DEV_SUBCLASS,
1817         .idVendor = 0x07fd,                      2293         .idVendor = 0x07fd,
1818         .idProduct = 0x0001,                     2294         .idProduct = 0x0001,
1819         .bDeviceSubClass = 2,                    2295         .bDeviceSubClass = 2,
1820         QUIRK_DRIVER_INFO {                   !! 2296         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1821                 .vendor_name = "MOTU",           2297                 .vendor_name = "MOTU",
1822                 .product_name = "Fastlane",      2298                 .product_name = "Fastlane",
1823                 QUIRK_DATA_COMPOSITE {        !! 2299                 .ifnum = QUIRK_ANY_INTERFACE,
1824                         { QUIRK_DATA_RAW_BYTE !! 2300                 .type = QUIRK_COMPOSITE,
1825                         { QUIRK_DATA_IGNORE(1 !! 2301                 .data = & (const struct snd_usb_audio_quirk[]) {
1826                         QUIRK_COMPOSITE_END   !! 2302                         {
                                                   >> 2303                                 .ifnum = 0,
                                                   >> 2304                                 .type = QUIRK_MIDI_RAW_BYTES
                                                   >> 2305                         },
                                                   >> 2306                         {
                                                   >> 2307                                 .ifnum = 1,
                                                   >> 2308                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2309                         },
                                                   >> 2310                         {
                                                   >> 2311                                 .ifnum = -1
                                                   >> 2312                         }
1827                 }                                2313                 }
1828         }                                        2314         }
1829 },                                               2315 },
1830                                                  2316 
1831 /* Emagic devices */                             2317 /* Emagic devices */
1832 {                                                2318 {
1833         USB_DEVICE(0x086a, 0x0001),              2319         USB_DEVICE(0x086a, 0x0001),
1834         QUIRK_DRIVER_INFO {                   !! 2320         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1835                 .vendor_name = "Emagic",         2321                 .vendor_name = "Emagic",
1836                 .product_name = "Unitor8",       2322                 .product_name = "Unitor8",
1837                 QUIRK_DATA_MIDI_EMAGIC(2) {   !! 2323                 .ifnum = 2,
                                                   >> 2324                 .type = QUIRK_MIDI_EMAGIC,
                                                   >> 2325                 .data = & (const struct snd_usb_midi_endpoint_info) {
1838                         .out_cables = 0x80ff,    2326                         .out_cables = 0x80ff,
1839                         .in_cables  = 0x80ff     2327                         .in_cables  = 0x80ff
1840                 }                                2328                 }
1841         }                                        2329         }
1842 },                                               2330 },
1843 {                                                2331 {
1844         USB_DEVICE(0x086a, 0x0002),              2332         USB_DEVICE(0x086a, 0x0002),
1845         QUIRK_DRIVER_INFO {                   !! 2333         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1846                 .vendor_name = "Emagic",         2334                 .vendor_name = "Emagic",
1847                 /* .product_name = "AMT8", */    2335                 /* .product_name = "AMT8", */
1848                 QUIRK_DATA_MIDI_EMAGIC(2) {   !! 2336                 .ifnum = 2,
                                                   >> 2337                 .type = QUIRK_MIDI_EMAGIC,
                                                   >> 2338                 .data = & (const struct snd_usb_midi_endpoint_info) {
1849                         .out_cables = 0x80ff,    2339                         .out_cables = 0x80ff,
1850                         .in_cables  = 0x80ff     2340                         .in_cables  = 0x80ff
1851                 }                                2341                 }
1852         }                                        2342         }
1853 },                                               2343 },
1854 {                                                2344 {
1855         USB_DEVICE(0x086a, 0x0003),              2345         USB_DEVICE(0x086a, 0x0003),
1856         QUIRK_DRIVER_INFO {                   !! 2346         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1857                 .vendor_name = "Emagic",         2347                 .vendor_name = "Emagic",
1858                 /* .product_name = "MT4", */     2348                 /* .product_name = "MT4", */
1859                 QUIRK_DATA_MIDI_EMAGIC(2) {   !! 2349                 .ifnum = 2,
                                                   >> 2350                 .type = QUIRK_MIDI_EMAGIC,
                                                   >> 2351                 .data = & (const struct snd_usb_midi_endpoint_info) {
1860                         .out_cables = 0x800f,    2352                         .out_cables = 0x800f,
1861                         .in_cables  = 0x8003     2353                         .in_cables  = 0x8003
1862                 }                                2354                 }
1863         }                                        2355         }
1864 },                                               2356 },
1865                                                  2357 
1866 /* KORG devices */                               2358 /* KORG devices */
1867 {                                                2359 {
1868         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200    2360         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200),
1869         QUIRK_DRIVER_INFO {                   !! 2361         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1870                 .vendor_name = "KORG, Inc.",     2362                 .vendor_name = "KORG, Inc.",
1871                 /* .product_name = "PANDORA P    2363                 /* .product_name = "PANDORA PX5D", */
1872                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2364                 .ifnum = 3,
                                                   >> 2365                 .type = QUIRK_MIDI_STANDARD_INTERFACE,
1873         }                                        2366         }
1874 },                                               2367 },
1875                                                  2368 
1876 {                                                2369 {
1877         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201    2370         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201),
1878         QUIRK_DRIVER_INFO {                   !! 2371         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1879                 .vendor_name = "KORG, Inc.",     2372                 .vendor_name = "KORG, Inc.",
1880                 /* .product_name = "ToneLab S    2373                 /* .product_name = "ToneLab ST", */
1881                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2374                 .ifnum = 3,
                                                   >> 2375                 .type = QUIRK_MIDI_STANDARD_INTERFACE,
1882         }                                        2376         }
1883 },                                               2377 },
1884                                                  2378 
1885 {                                                2379 {
1886         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204    2380         USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204),
1887         QUIRK_DRIVER_INFO {                   !! 2381         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1888                 .vendor_name = "KORG, Inc.",     2382                 .vendor_name = "KORG, Inc.",
1889                 /* .product_name = "ToneLab E    2383                 /* .product_name = "ToneLab EX", */
1890                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2384                 .ifnum = 3,
                                                   >> 2385                 .type = QUIRK_MIDI_STANDARD_INTERFACE,
1891         }                                        2386         }
1892 },                                               2387 },
1893                                                  2388 
1894 /* AKAI devices */                               2389 /* AKAI devices */
1895 {                                                2390 {
1896         USB_DEVICE(0x09e8, 0x0062),              2391         USB_DEVICE(0x09e8, 0x0062),
1897         QUIRK_DRIVER_INFO {                   !! 2392         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1898                 .vendor_name = "AKAI",           2393                 .vendor_name = "AKAI",
1899                 .product_name = "MPD16",         2394                 .product_name = "MPD16",
1900                 .ifnum = 0,                      2395                 .ifnum = 0,
1901                 .type = QUIRK_MIDI_AKAI,         2396                 .type = QUIRK_MIDI_AKAI,
1902         }                                        2397         }
1903 },                                               2398 },
1904                                                  2399 
1905 {                                                2400 {
1906         /* Akai MPC Element */                   2401         /* Akai MPC Element */
1907         USB_DEVICE(0x09e8, 0x0021),              2402         USB_DEVICE(0x09e8, 0x0021),
1908         QUIRK_DRIVER_INFO {                   !! 2403         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1909                 QUIRK_DATA_COMPOSITE {        !! 2404                 .ifnum = QUIRK_ANY_INTERFACE,
1910                         { QUIRK_DATA_IGNORE(0 !! 2405                 .type = QUIRK_COMPOSITE,
1911                         { QUIRK_DATA_STANDARD !! 2406                 .data = & (const struct snd_usb_audio_quirk[]) {
1912                         QUIRK_COMPOSITE_END   !! 2407                         {
                                                   >> 2408                                 .ifnum = 0,
                                                   >> 2409                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2410                         },
                                                   >> 2411                         {
                                                   >> 2412                                 .ifnum = 1,
                                                   >> 2413                                 .type = QUIRK_MIDI_STANDARD_INTERFACE
                                                   >> 2414                         },
                                                   >> 2415                         {
                                                   >> 2416                                 .ifnum = -1
                                                   >> 2417                         }
1913                 }                                2418                 }
1914         }                                        2419         }
1915 },                                               2420 },
1916                                                  2421 
1917 /* Steinberg devices */                          2422 /* Steinberg devices */
1918 {                                                2423 {
1919         /* Steinberg MI2 */                      2424         /* Steinberg MI2 */
1920         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040    2425         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
1921         QUIRK_DRIVER_INFO {                   !! 2426         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1922                 QUIRK_DATA_COMPOSITE {        !! 2427                 .ifnum = QUIRK_ANY_INTERFACE,
1923                         { QUIRK_DATA_STANDARD !! 2428                 .type = QUIRK_COMPOSITE,
1924                         { QUIRK_DATA_STANDARD !! 2429                 .data = & (const struct snd_usb_audio_quirk[]) {
1925                         { QUIRK_DATA_STANDARD !! 2430                         {
                                                   >> 2431                                 .ifnum = 0,
                                                   >> 2432                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2433                         },
                                                   >> 2434                         {
                                                   >> 2435                                 .ifnum = 1,
                                                   >> 2436                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2437                         },
                                                   >> 2438                         {
                                                   >> 2439                                 .ifnum = 2,
                                                   >> 2440                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2441                         },
1926                         {                        2442                         {
1927                                 QUIRK_DATA_MI !! 2443                                 .ifnum = 3,
                                                   >> 2444                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 2445                                 .data = &(const struct snd_usb_midi_endpoint_info) {
1928                                         .out_    2446                                         .out_cables = 0x0001,
1929                                         .in_c    2447                                         .in_cables  = 0x0001
1930                                 }                2448                                 }
1931                         },                       2449                         },
1932                         QUIRK_COMPOSITE_END   !! 2450                         {
                                                   >> 2451                                 .ifnum = -1
                                                   >> 2452                         }
1933                 }                                2453                 }
1934         }                                        2454         }
1935 },                                               2455 },
1936 {                                                2456 {
1937         /* Steinberg MI4 */                      2457         /* Steinberg MI4 */
1938         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040    2458         USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
1939         QUIRK_DRIVER_INFO {                   !! 2459         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1940                 QUIRK_DATA_COMPOSITE {        !! 2460                 .ifnum = QUIRK_ANY_INTERFACE,
1941                         { QUIRK_DATA_STANDARD !! 2461                 .type = QUIRK_COMPOSITE,
1942                         { QUIRK_DATA_STANDARD !! 2462                 .data = & (const struct snd_usb_audio_quirk[]) {
1943                         { QUIRK_DATA_STANDARD !! 2463                         {
                                                   >> 2464                                 .ifnum = 0,
                                                   >> 2465                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2466                         },
                                                   >> 2467                         {
                                                   >> 2468                                 .ifnum = 1,
                                                   >> 2469                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2470                         },
                                                   >> 2471                         {
                                                   >> 2472                                 .ifnum = 2,
                                                   >> 2473                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE
                                                   >> 2474                         },
1944                         {                        2475                         {
1945                                 QUIRK_DATA_MI !! 2476                                 .ifnum = 3,
                                                   >> 2477                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 2478                                 .data = &(const struct snd_usb_midi_endpoint_info) {
1946                                         .out_    2479                                         .out_cables = 0x0001,
1947                                         .in_c    2480                                         .in_cables  = 0x0001
1948                                 }                2481                                 }
1949                         },                       2482                         },
1950                         QUIRK_COMPOSITE_END   !! 2483                         {
                                                   >> 2484                                 .ifnum = -1
                                                   >> 2485                         }
1951                 }                                2486                 }
1952         }                                        2487         }
1953 },                                               2488 },
1954                                                  2489 
1955 /* TerraTec devices */                           2490 /* TerraTec devices */
1956 {                                                2491 {
1957         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012    2492         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
1958         QUIRK_DRIVER_INFO {                   !! 2493         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1959                 .vendor_name = "TerraTec",       2494                 .vendor_name = "TerraTec",
1960                 .product_name = "PHASE 26",      2495                 .product_name = "PHASE 26",
1961                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2496                 .ifnum = 3,
                                                   >> 2497                 .type = QUIRK_MIDI_STANDARD_INTERFACE
1962         }                                        2498         }
1963 },                                               2499 },
1964 {                                                2500 {
1965         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013    2501         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013),
1966         QUIRK_DRIVER_INFO {                   !! 2502         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1967                 .vendor_name = "TerraTec",       2503                 .vendor_name = "TerraTec",
1968                 .product_name = "PHASE 26",      2504                 .product_name = "PHASE 26",
1969                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2505                 .ifnum = 3,
                                                   >> 2506                 .type = QUIRK_MIDI_STANDARD_INTERFACE
1970         }                                        2507         }
1971 },                                               2508 },
1972 {                                                2509 {
1973         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014    2510         USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014),
1974         QUIRK_DRIVER_INFO {                   !! 2511         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1975                 .vendor_name = "TerraTec",       2512                 .vendor_name = "TerraTec",
1976                 .product_name = "PHASE 26",      2513                 .product_name = "PHASE 26",
1977                 QUIRK_DATA_STANDARD_MIDI(3)   !! 2514                 .ifnum = 3,
                                                   >> 2515                 .type = QUIRK_MIDI_STANDARD_INTERFACE
1978         }                                        2516         }
1979 },                                               2517 },
1980 {                                                2518 {
1981         USB_DEVICE(0x0ccd, 0x0035),              2519         USB_DEVICE(0x0ccd, 0x0035),
1982         QUIRK_DRIVER_INFO {                   !! 2520         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1983                 .vendor_name = "Miditech",       2521                 .vendor_name = "Miditech",
1984                 .product_name = "Play'n Roll"    2522                 .product_name = "Play'n Roll",
1985                 .ifnum = 0,                      2523                 .ifnum = 0,
1986                 .type = QUIRK_MIDI_CME           2524                 .type = QUIRK_MIDI_CME
1987         }                                        2525         }
1988 },                                               2526 },
1989                                                  2527 
1990 /* Stanton ScratchAmp */                      << 
1991 { USB_DEVICE(0x103d, 0x0100) },               << 
1992 { USB_DEVICE(0x103d, 0x0101) },               << 
1993                                               << 
1994 /* Novation EMS devices */                       2528 /* Novation EMS devices */
1995 {                                                2529 {
1996         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001    2530         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001),
1997         QUIRK_DRIVER_INFO {                   !! 2531         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1998                 .vendor_name = "Novation",       2532                 .vendor_name = "Novation",
1999                 .product_name = "ReMOTE Audio    2533                 .product_name = "ReMOTE Audio/XStation",
2000                 .ifnum = 4,                      2534                 .ifnum = 4,
2001                 .type = QUIRK_MIDI_NOVATION      2535                 .type = QUIRK_MIDI_NOVATION
2002         }                                        2536         }
2003 },                                               2537 },
2004 {                                                2538 {
2005         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002    2539         USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002),
2006         QUIRK_DRIVER_INFO {                   !! 2540         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2007                 .vendor_name = "Novation",       2541                 .vendor_name = "Novation",
2008                 .product_name = "Speedio",       2542                 .product_name = "Speedio",
2009                 .ifnum = 3,                      2543                 .ifnum = 3,
2010                 .type = QUIRK_MIDI_NOVATION      2544                 .type = QUIRK_MIDI_NOVATION
2011         }                                        2545         }
2012 },                                               2546 },
2013 {                                                2547 {
2014         USB_DEVICE(0x1235, 0x000a),              2548         USB_DEVICE(0x1235, 0x000a),
2015         QUIRK_DRIVER_INFO {                   !! 2549         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2016                 /* .vendor_name = "Novation",    2550                 /* .vendor_name = "Novation", */
2017                 /* .product_name = "Nocturn",    2551                 /* .product_name = "Nocturn", */
2018                 QUIRK_DATA_RAW_BYTES(0)       !! 2552                 .ifnum = 0,
                                                   >> 2553                 .type = QUIRK_MIDI_RAW_BYTES
2019         }                                        2554         }
2020 },                                               2555 },
2021 {                                                2556 {
2022         USB_DEVICE(0x1235, 0x000e),              2557         USB_DEVICE(0x1235, 0x000e),
2023         QUIRK_DRIVER_INFO {                   !! 2558         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2024                 /* .vendor_name = "Novation",    2559                 /* .vendor_name = "Novation", */
2025                 /* .product_name = "Launchpad    2560                 /* .product_name = "Launchpad", */
2026                 QUIRK_DATA_RAW_BYTES(0)       !! 2561                 .ifnum = 0,
                                                   >> 2562                 .type = QUIRK_MIDI_RAW_BYTES
2027         }                                        2563         }
2028 },                                               2564 },
2029 {                                                2565 {
2030         USB_DEVICE(0x1235, 0x0010),              2566         USB_DEVICE(0x1235, 0x0010),
2031         QUIRK_DRIVER_INFO {                   !! 2567         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2032                 .vendor_name = "Focusrite",      2568                 .vendor_name = "Focusrite",
2033                 .product_name = "Saffire 6 US    2569                 .product_name = "Saffire 6 USB",
2034                 QUIRK_DATA_COMPOSITE {        !! 2570                 .ifnum = QUIRK_ANY_INTERFACE,
2035                         { QUIRK_DATA_STANDARD !! 2571                 .type = QUIRK_COMPOSITE,
                                                   >> 2572                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 2573                         {
                                                   >> 2574                                 .ifnum = 0,
                                                   >> 2575                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2576                         },
2036                         {                        2577                         {
2037                                 QUIRK_DATA_AU !! 2578                                 .ifnum = 0,
                                                   >> 2579                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2580                                 .data = &(const struct audioformat) {
2038                                         .form    2581                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2039                                         .chan    2582                                         .channels = 4,
2040                                         .ifac    2583                                         .iface = 0,
2041                                         .alts    2584                                         .altsetting = 1,
2042                                         .alts    2585                                         .altset_idx = 1,
2043                                         .attr    2586                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2044                                         .endp    2587                                         .endpoint = 0x01,
2045                                         .ep_a    2588                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2046                                         .data    2589                                         .datainterval = 1,
2047                                         .maxp    2590                                         .maxpacksize = 0x024c,
2048                                         .rate    2591                                         .rates = SNDRV_PCM_RATE_44100 |
2049                                                  2592                                                  SNDRV_PCM_RATE_48000,
2050                                         .rate    2593                                         .rate_min = 44100,
2051                                         .rate    2594                                         .rate_max = 48000,
2052                                         .nr_r    2595                                         .nr_rates = 2,
2053                                         .rate    2596                                         .rate_table = (unsigned int[]) {
2054                                                  2597                                                 44100, 48000
2055                                         },    !! 2598                                         }
2056                                         .sync << 
2057                                         .sync << 
2058                                         .sync << 
2059                                         .sync << 
2060                                         .impl << 
2061                                 }                2599                                 }
2062                         },                       2600                         },
2063                         {                        2601                         {
2064                                 QUIRK_DATA_AU !! 2602                                 .ifnum = 0,
                                                   >> 2603                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2604                                 .data = &(const struct audioformat) {
2065                                         .form    2605                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2066                                         .chan    2606                                         .channels = 2,
2067                                         .ifac    2607                                         .iface = 0,
2068                                         .alts    2608                                         .altsetting = 1,
2069                                         .alts    2609                                         .altset_idx = 1,
2070                                         .attr    2610                                         .attributes = 0,
2071                                         .endp    2611                                         .endpoint = 0x82,
2072                                         .ep_i << 
2073                                         .ep_a    2612                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2074                                         .data    2613                                         .datainterval = 1,
2075                                         .maxp    2614                                         .maxpacksize = 0x0126,
2076                                         .rate    2615                                         .rates = SNDRV_PCM_RATE_44100 |
2077                                                  2616                                                  SNDRV_PCM_RATE_48000,
2078                                         .rate    2617                                         .rate_min = 44100,
2079                                         .rate    2618                                         .rate_max = 48000,
2080                                         .nr_r    2619                                         .nr_rates = 2,
2081                                         .rate    2620                                         .rate_table = (unsigned int[]) {
2082                                                  2621                                                 44100, 48000
2083                                         }        2622                                         }
2084                                 }                2623                                 }
2085                         },                       2624                         },
2086                         { QUIRK_DATA_RAW_BYTE !! 2625                         {
2087                         QUIRK_COMPOSITE_END   !! 2626                                 .ifnum = 1,
                                                   >> 2627                                 .type = QUIRK_MIDI_RAW_BYTES
                                                   >> 2628                         },
                                                   >> 2629                         {
                                                   >> 2630                                 .ifnum = -1
                                                   >> 2631                         }
2088                 }                                2632                 }
2089         }                                        2633         }
2090 },                                               2634 },
2091 {                                                2635 {
2092         USB_DEVICE(0x1235, 0x0018),              2636         USB_DEVICE(0x1235, 0x0018),
2093         QUIRK_DRIVER_INFO {                   !! 2637         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2094                 .vendor_name = "Novation",       2638                 .vendor_name = "Novation",
2095                 .product_name = "Twitch",        2639                 .product_name = "Twitch",
2096                 QUIRK_DATA_COMPOSITE {        !! 2640                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 2641                 .type = QUIRK_COMPOSITE,
                                                   >> 2642                 .data = (const struct snd_usb_audio_quirk[]) {
2097                         {                        2643                         {
2098                                 QUIRK_DATA_AU !! 2644                                 .ifnum = 0,
                                                   >> 2645                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2646                                 .data = & (const struct audioformat) {
2099                                         .form    2647                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2100                                         .chan    2648                                         .channels = 4,
2101                                         .ifac    2649                                         .iface = 0,
2102                                         .alts    2650                                         .altsetting = 1,
2103                                         .alts    2651                                         .altset_idx = 1,
2104                                         .attr    2652                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2105                                         .endp    2653                                         .endpoint = 0x01,
2106                                         .ep_a    2654                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2107                                         .rate    2655                                         .rates = SNDRV_PCM_RATE_44100 |
2108                                                  2656                                                  SNDRV_PCM_RATE_48000,
2109                                         .rate    2657                                         .rate_min = 44100,
2110                                         .rate    2658                                         .rate_max = 48000,
2111                                         .nr_r    2659                                         .nr_rates = 2,
2112                                         .rate    2660                                         .rate_table = (unsigned int[]) {
2113                                                  2661                                                 44100, 48000
2114                                         }        2662                                         }
2115                                 }                2663                                 }
2116                         },                       2664                         },
2117                         { QUIRK_DATA_RAW_BYTE !! 2665                         {
2118                         QUIRK_COMPOSITE_END   !! 2666                                 .ifnum = 1,
                                                   >> 2667                                 .type = QUIRK_MIDI_RAW_BYTES
                                                   >> 2668                         },
                                                   >> 2669                         {
                                                   >> 2670                                 .ifnum = -1
                                                   >> 2671                         }
2119                 }                                2672                 }
2120         }                                        2673         }
2121 },                                               2674 },
2122 {                                                2675 {
2123         USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661    2676         USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661),
2124         QUIRK_DRIVER_INFO {                   !! 2677         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2125                 .vendor_name = "Novation",       2678                 .vendor_name = "Novation",
2126                 .product_name = "ReMOTE25",      2679                 .product_name = "ReMOTE25",
2127                 .ifnum = 0,                      2680                 .ifnum = 0,
2128                 .type = QUIRK_MIDI_NOVATION      2681                 .type = QUIRK_MIDI_NOVATION
2129         }                                        2682         }
2130 },                                               2683 },
2131                                                  2684 
2132 /* Access Music devices */                       2685 /* Access Music devices */
2133 {                                                2686 {
2134         /* VirusTI Desktop */                    2687         /* VirusTI Desktop */
2135         USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815    2688         USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),
2136         QUIRK_DRIVER_INFO {                   !! 2689         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2137                 QUIRK_DATA_COMPOSITE {        !! 2690                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 2691                 .type = QUIRK_COMPOSITE,
                                                   >> 2692                 .data = &(const struct snd_usb_audio_quirk[]) {
2138                         {                        2693                         {
2139                                 QUIRK_DATA_MI !! 2694                                 .ifnum = 3,
                                                   >> 2695                                 .type = QUIRK_MIDI_FIXED_ENDPOINT,
                                                   >> 2696                                 .data = &(const struct snd_usb_midi_endpoint_info) {
2140                                         .out_    2697                                         .out_cables = 0x0003,
2141                                         .in_c    2698                                         .in_cables  = 0x0003
2142                                 }                2699                                 }
2143                         },                       2700                         },
2144                         { QUIRK_DATA_IGNORE(4 !! 2701                         {
2145                         QUIRK_COMPOSITE_END   !! 2702                                 .ifnum = 4,
                                                   >> 2703                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2704                         },
                                                   >> 2705                         {
                                                   >> 2706                                 .ifnum = -1
                                                   >> 2707                         }
2146                 }                                2708                 }
2147         }                                        2709         }
2148 },                                               2710 },
2149                                                  2711 
                                                   >> 2712 /* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */
                                                   >> 2713 {
                                                   >> 2714         USB_DEVICE(0x17aa, 0x1046),
                                                   >> 2715         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
                                                   >> 2716                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 2717                 .type = QUIRK_SETUP_DISABLE_AUTOSUSPEND
                                                   >> 2718         }
                                                   >> 2719 },
                                                   >> 2720 /* Lenovo ThinkStation P620 Internal Speaker + Front Headset */
                                                   >> 2721 {
                                                   >> 2722         USB_DEVICE(0x17aa, 0x104d),
                                                   >> 2723         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
                                                   >> 2724                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 2725                 .type = QUIRK_SETUP_DISABLE_AUTOSUSPEND
                                                   >> 2726         }
                                                   >> 2727 },
                                                   >> 2728 
2150 /* Native Instruments MK2 series */              2729 /* Native Instruments MK2 series */
2151 {                                                2730 {
2152         /* Komplete Audio 6 */                   2731         /* Komplete Audio 6 */
2153         .match_flags = USB_DEVICE_ID_MATCH_DE    2732         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2154         .idVendor = 0x17cc,                      2733         .idVendor = 0x17cc,
2155         .idProduct = 0x1000,                     2734         .idProduct = 0x1000,
2156 },                                               2735 },
2157 {                                                2736 {
2158         /* Traktor Audio 6 */                    2737         /* Traktor Audio 6 */
2159         .match_flags = USB_DEVICE_ID_MATCH_DE    2738         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2160         .idVendor = 0x17cc,                      2739         .idVendor = 0x17cc,
2161         .idProduct = 0x1010,                     2740         .idProduct = 0x1010,
2162 },                                               2741 },
2163 {                                                2742 {
2164         /* Traktor Audio 10 */                   2743         /* Traktor Audio 10 */
2165         .match_flags = USB_DEVICE_ID_MATCH_DE    2744         .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2166         .idVendor = 0x17cc,                      2745         .idVendor = 0x17cc,
2167         .idProduct = 0x1020,                     2746         .idProduct = 0x1020,
2168 },                                               2747 },
2169                                                  2748 
2170 /* QinHeng devices */                            2749 /* QinHeng devices */
2171 {                                                2750 {
2172         USB_DEVICE(0x1a86, 0x752d),              2751         USB_DEVICE(0x1a86, 0x752d),
2173         QUIRK_DRIVER_INFO {                   !! 2752         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2174                 .vendor_name = "QinHeng",        2753                 .vendor_name = "QinHeng",
2175                 .product_name = "CH345",         2754                 .product_name = "CH345",
2176                 .ifnum = 1,                      2755                 .ifnum = 1,
2177                 .type = QUIRK_MIDI_CH345         2756                 .type = QUIRK_MIDI_CH345
2178         }                                        2757         }
2179 },                                               2758 },
2180                                                  2759 
2181 /* KeithMcMillen Stringport */                   2760 /* KeithMcMillen Stringport */
2182 { USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: sho    2761 { USB_DEVICE(0x1f38, 0x0001) }, /* FIXME: should be more restrictive matching */
2183                                                  2762 
2184 /* Miditech devices */                           2763 /* Miditech devices */
2185 {                                                2764 {
2186         USB_DEVICE(0x4752, 0x0011),              2765         USB_DEVICE(0x4752, 0x0011),
2187         QUIRK_DRIVER_INFO {                   !! 2766         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2188                 .vendor_name = "Miditech",       2767                 .vendor_name = "Miditech",
2189                 .product_name = "Midistart-2"    2768                 .product_name = "Midistart-2",
2190                 .ifnum = 0,                      2769                 .ifnum = 0,
2191                 .type = QUIRK_MIDI_CME           2770                 .type = QUIRK_MIDI_CME
2192         }                                        2771         }
2193 },                                               2772 },
2194                                                  2773 
2195 /* Central Music devices */                      2774 /* Central Music devices */
2196 {                                                2775 {
2197         /* this ID used by both Miditech Midi    2776         /* this ID used by both Miditech MidiStudio-2 and CME UF-x */
2198         USB_DEVICE(0x7104, 0x2202),              2777         USB_DEVICE(0x7104, 0x2202),
2199         QUIRK_DRIVER_INFO {                   !! 2778         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2200                 .ifnum = 0,                      2779                 .ifnum = 0,
2201                 .type = QUIRK_MIDI_CME           2780                 .type = QUIRK_MIDI_CME
2202         }                                        2781         }
2203 },                                               2782 },
2204                                                  2783 
                                                   >> 2784 /*
                                                   >> 2785  * Auvitek au0828 devices with audio interface.
                                                   >> 2786  * This should be kept in sync with drivers/media/usb/au0828/au0828-cards.c
                                                   >> 2787  * Please notice that some drivers are DVB only, and don't need to be
                                                   >> 2788  * here. That's the case, for example, of DVICO_FUSIONHDTV7.
                                                   >> 2789  */
                                                   >> 2790 
                                                   >> 2791 #define AU0828_DEVICE(vid, pid, vname, pname) { \
                                                   >> 2792         USB_AUDIO_DEVICE(vid, pid), \
                                                   >> 2793         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { \
                                                   >> 2794                 .vendor_name = vname, \
                                                   >> 2795                 .product_name = pname, \
                                                   >> 2796                 .ifnum = QUIRK_ANY_INTERFACE, \
                                                   >> 2797                 .type = QUIRK_AUDIO_ALIGN_TRANSFER, \
                                                   >> 2798                 .shares_media_device = 1, \
                                                   >> 2799         } \
                                                   >> 2800 }
                                                   >> 2801 
                                                   >> 2802 AU0828_DEVICE(0x2040, 0x7200, "Hauppauge", "HVR-950Q"),
                                                   >> 2803 AU0828_DEVICE(0x2040, 0x7240, "Hauppauge", "HVR-850"),
                                                   >> 2804 AU0828_DEVICE(0x2040, 0x7210, "Hauppauge", "HVR-950Q"),
                                                   >> 2805 AU0828_DEVICE(0x2040, 0x7217, "Hauppauge", "HVR-950Q"),
                                                   >> 2806 AU0828_DEVICE(0x2040, 0x721b, "Hauppauge", "HVR-950Q"),
                                                   >> 2807 AU0828_DEVICE(0x2040, 0x721e, "Hauppauge", "HVR-950Q"),
                                                   >> 2808 AU0828_DEVICE(0x2040, 0x721f, "Hauppauge", "HVR-950Q"),
                                                   >> 2809 AU0828_DEVICE(0x2040, 0x7280, "Hauppauge", "HVR-950Q"),
                                                   >> 2810 AU0828_DEVICE(0x0fd9, 0x0008, "Hauppauge", "HVR-950Q"),
                                                   >> 2811 AU0828_DEVICE(0x2040, 0x7201, "Hauppauge", "HVR-950Q-MXL"),
                                                   >> 2812 AU0828_DEVICE(0x2040, 0x7211, "Hauppauge", "HVR-950Q-MXL"),
                                                   >> 2813 AU0828_DEVICE(0x2040, 0x7281, "Hauppauge", "HVR-950Q-MXL"),
                                                   >> 2814 AU0828_DEVICE(0x05e1, 0x0480, "Hauppauge", "Woodbury"),
                                                   >> 2815 AU0828_DEVICE(0x2040, 0x8200, "Hauppauge", "Woodbury"),
                                                   >> 2816 AU0828_DEVICE(0x2040, 0x7260, "Hauppauge", "HVR-950Q"),
                                                   >> 2817 AU0828_DEVICE(0x2040, 0x7213, "Hauppauge", "HVR-950Q"),
                                                   >> 2818 AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
                                                   >> 2819 
                                                   >> 2820 /* Syntek STK1160 */
                                                   >> 2821 {
                                                   >> 2822         USB_AUDIO_DEVICE(0x05e1, 0x0408),
                                                   >> 2823         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
                                                   >> 2824                 .vendor_name = "Syntek",
                                                   >> 2825                 .product_name = "STK1160",
                                                   >> 2826                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 2827                 .type = QUIRK_AUDIO_ALIGN_TRANSFER
                                                   >> 2828         }
                                                   >> 2829 },
                                                   >> 2830 
2205 /* Digidesign Mbox */                            2831 /* Digidesign Mbox */
2206 {                                                2832 {
2207         /* Thanks to Clemens Ladisch <clemens    2833         /* Thanks to Clemens Ladisch <clemens@ladisch.de> */
2208         USB_DEVICE(0x0dba, 0x1000),              2834         USB_DEVICE(0x0dba, 0x1000),
2209         QUIRK_DRIVER_INFO {                   !! 2835         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2210                 .vendor_name = "Digidesign",     2836                 .vendor_name = "Digidesign",
2211                 .product_name = "MBox",          2837                 .product_name = "MBox",
2212                 QUIRK_DATA_COMPOSITE{         !! 2838                 .ifnum = QUIRK_ANY_INTERFACE,
2213                         { QUIRK_DATA_STANDARD !! 2839                 .type = QUIRK_COMPOSITE,
                                                   >> 2840                 .data = (const struct snd_usb_audio_quirk[]){
                                                   >> 2841                         {
                                                   >> 2842                                 .ifnum = 0,
                                                   >> 2843                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 2844                         },
2214                         {                        2845                         {
2215                                 QUIRK_DATA_AU !! 2846                                 .ifnum = 1,
                                                   >> 2847                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2848                                 .data = &(const struct audioformat) {
2216                                         .form    2849                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2217                                         .chan    2850                                         .channels = 2,
2218                                         .ifac    2851                                         .iface = 1,
2219                                         .alts    2852                                         .altsetting = 1,
2220                                         .alts    2853                                         .altset_idx = 1,
2221                                         .attr    2854                                         .attributes = 0x4,
2222                                         .endp    2855                                         .endpoint = 0x02,
2223                                         .ep_a    2856                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2224                                                  2857                                                 USB_ENDPOINT_SYNC_SYNC,
2225                                         .maxp    2858                                         .maxpacksize = 0x130,
2226                                         .rate    2859                                         .rates = SNDRV_PCM_RATE_48000,
2227                                         .rate    2860                                         .rate_min = 48000,
2228                                         .rate    2861                                         .rate_max = 48000,
2229                                         .nr_r    2862                                         .nr_rates = 1,
2230                                         .rate    2863                                         .rate_table = (unsigned int[]) {
2231                                                  2864                                                 48000
2232                                         }        2865                                         }
2233                                 }                2866                                 }
2234                         },                       2867                         },
2235                         {                        2868                         {
2236                                 QUIRK_DATA_AU !! 2869                                 .ifnum = 1,
                                                   >> 2870                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2871                                 .data = &(const struct audioformat) {
2237                                         .form    2872                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2238                                         .chan    2873                                         .channels = 2,
2239                                         .ifac    2874                                         .iface = 1,
2240                                         .alts    2875                                         .altsetting = 1,
2241                                         .alts    2876                                         .altset_idx = 1,
2242                                         .attr    2877                                         .attributes = 0x4,
2243                                         .endp    2878                                         .endpoint = 0x81,
2244                                         .ep_i << 
2245                                         .ep_a    2879                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2246                                                  2880                                                 USB_ENDPOINT_SYNC_ASYNC,
2247                                         .maxp    2881                                         .maxpacksize = 0x130,
2248                                         .rate    2882                                         .rates = SNDRV_PCM_RATE_48000,
2249                                         .rate    2883                                         .rate_min = 48000,
2250                                         .rate    2884                                         .rate_max = 48000,
2251                                         .nr_r    2885                                         .nr_rates = 1,
2252                                         .rate    2886                                         .rate_table = (unsigned int[]) {
2253                                                  2887                                                 48000
2254                                         }        2888                                         }
2255                                 }                2889                                 }
2256                         },                       2890                         },
2257                         QUIRK_COMPOSITE_END   !! 2891                         {
                                                   >> 2892                                 .ifnum = -1
                                                   >> 2893                         }
2258                 }                                2894                 }
2259         }                                        2895         }
2260 },                                               2896 },
2261                                                  2897 
2262 /* DIGIDESIGN MBOX 2 */                          2898 /* DIGIDESIGN MBOX 2 */
2263 {                                                2899 {
2264         USB_DEVICE(0x0dba, 0x3000),              2900         USB_DEVICE(0x0dba, 0x3000),
2265         QUIRK_DRIVER_INFO {                   !! 2901         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2266                 .vendor_name = "Digidesign",     2902                 .vendor_name = "Digidesign",
2267                 .product_name = "Mbox 2",        2903                 .product_name = "Mbox 2",
2268                 QUIRK_DATA_COMPOSITE {        !! 2904                 .ifnum = QUIRK_ANY_INTERFACE,
2269                         { QUIRK_DATA_IGNORE(0 !! 2905                 .type = QUIRK_COMPOSITE,
2270                         { QUIRK_DATA_IGNORE(1 !! 2906                 .data = (const struct snd_usb_audio_quirk[]) {
2271                         {                        2907                         {
2272                                 QUIRK_DATA_AU !! 2908                                 .ifnum = 0,
                                                   >> 2909                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2910                         },
                                                   >> 2911                         {
                                                   >> 2912                                 .ifnum = 1,
                                                   >> 2913                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2914                         },
                                                   >> 2915                         {
                                                   >> 2916                                 .ifnum = 2,
                                                   >> 2917                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2918                                 .data = &(const struct audioformat) {
2273                                         .form    2919                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2274                                         .chan    2920                                         .channels = 2,
2275                                         .ifac    2921                                         .iface = 2,
2276                                         .alts    2922                                         .altsetting = 2,
2277                                         .alts    2923                                         .altset_idx = 1,
2278                                         .attr    2924                                         .attributes = 0x00,
2279                                         .endp    2925                                         .endpoint = 0x03,
2280                                         .ep_a    2926                                         .ep_attr = USB_ENDPOINT_SYNC_ASYNC,
2281                                         .rate    2927                                         .rates = SNDRV_PCM_RATE_48000,
2282                                         .rate    2928                                         .rate_min = 48000,
2283                                         .rate    2929                                         .rate_max = 48000,
2284                                         .nr_r    2930                                         .nr_rates = 1,
2285                                         .rate    2931                                         .rate_table = (unsigned int[]) {
2286                                                  2932                                                 48000
2287                                         }        2933                                         }
2288                                 }                2934                                 }
2289                         },                       2935                         },
2290                         { QUIRK_DATA_IGNORE(3 << 
2291                         {                        2936                         {
2292                                 QUIRK_DATA_AU !! 2937                                 .ifnum = 3,
2293                                         .form !! 2938                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2939                         },
                                                   >> 2940                         {
                                                   >> 2941                                 .ifnum = 4,
                                                   >> 2942                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2943                                 .data = &(const struct audioformat) {
                                                   >> 2944                                 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2294                                         .chan    2945                                         .channels = 2,
2295                                         .ifac    2946                                         .iface = 4,
2296                                         .alts    2947                                         .altsetting = 2,
2297                                         .alts    2948                                         .altset_idx = 1,
2298                                         .attr    2949                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2299                                         .endp    2950                                         .endpoint = 0x85,
2300                                         .ep_a    2951                                         .ep_attr = USB_ENDPOINT_SYNC_SYNC,
2301                                         .rate    2952                                         .rates = SNDRV_PCM_RATE_48000,
2302                                         .rate    2953                                         .rate_min = 48000,
2303                                         .rate    2954                                         .rate_max = 48000,
2304                                         .nr_r    2955                                         .nr_rates = 1,
2305                                         .rate    2956                                         .rate_table = (unsigned int[]) {
2306                                                  2957                                                 48000
2307                                         }        2958                                         }
2308                                 }                2959                                 }
2309                         },                       2960                         },
2310                         { QUIRK_DATA_IGNORE(5 << 
2311                         {                        2961                         {
2312                                 QUIRK_DATA_MI !! 2962                                 .ifnum = 5,
                                                   >> 2963                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2964                         },
                                                   >> 2965                         {
                                                   >> 2966                                 .ifnum = 6,
                                                   >> 2967                                 .type = QUIRK_MIDI_MIDIMAN,
                                                   >> 2968                                 .data = &(const struct snd_usb_midi_endpoint_info) {
2313                                         .out_    2969                                         .out_ep =  0x02,
2314                                         .out_    2970                                         .out_cables = 0x0001,
2315                                         .in_e    2971                                         .in_ep = 0x81,
2316                                         .in_i    2972                                         .in_interval = 0x01,
2317                                         .in_c    2973                                         .in_cables = 0x0001
2318                                 }                2974                                 }
2319                         },                       2975                         },
2320                         QUIRK_COMPOSITE_END   << 
2321                 }                             << 
2322         }                                     << 
2323 },                                            << 
2324 /* DIGIDESIGN MBOX 3 */                       << 
2325 {                                             << 
2326         USB_DEVICE(0x0dba, 0x5000),           << 
2327         QUIRK_DRIVER_INFO {                   << 
2328                 .vendor_name = "Digidesign",  << 
2329                 .product_name = "Mbox 3",     << 
2330                 QUIRK_DATA_COMPOSITE {        << 
2331                         { QUIRK_DATA_IGNORE(0 << 
2332                         { QUIRK_DATA_IGNORE(1 << 
2333                         {                     << 
2334                                 QUIRK_DATA_AU << 
2335                                         .form << 
2336                                         .fmt_ << 
2337                                         .chan << 
2338                                         .ifac << 
2339                                         .alts << 
2340                                         .alts << 
2341                                         .attr << 
2342                                         .endp << 
2343                                         .ep_a << 
2344                                               << 
2345                                         .rate << 
2346                                               << 
2347                                         .rate << 
2348                                         .rate << 
2349                                         .nr_r << 
2350                                         .rate << 
2351                                               << 
2352                                         },    << 
2353                                         .sync << 
2354                                         .sync << 
2355                                         .sync << 
2356                                         .sync << 
2357                                         .impl << 
2358                                 }             << 
2359                         },                    << 
2360                         {                        2976                         {
2361                                 QUIRK_DATA_AU !! 2977                                 .ifnum = -1
2362                                         .form !! 2978                         }
2363                                         .fmt_ << 
2364                                         .chan << 
2365                                         .ifac << 
2366                                         .alts << 
2367                                         .alts << 
2368                                         .attr << 
2369                                         .endp << 
2370                                         .ep_a << 
2371                                               << 
2372                                         .maxp << 
2373                                         .rate << 
2374                                               << 
2375                                         .rate << 
2376                                         .rate << 
2377                                         .nr_r << 
2378                                         .rate << 
2379                                               << 
2380                                         },    << 
2381                                         .impl << 
2382                                 }             << 
2383                         },                    << 
2384                         {                     << 
2385                                 QUIRK_DATA_MI << 
2386                                         .out_ << 
2387                                         .in_c << 
2388                                 }             << 
2389                         },                    << 
2390                         QUIRK_COMPOSITE_END   << 
2391                 }                                2979                 }
2392         }                                        2980         }
2393 },                                               2981 },
2394 {                                                2982 {
2395         /* Tascam US122 MKII - playback-only     2983         /* Tascam US122 MKII - playback-only support */
2396         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021    2984         USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021),
2397         QUIRK_DRIVER_INFO {                   !! 2985         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2398                 .vendor_name = "TASCAM",         2986                 .vendor_name = "TASCAM",
2399                 .product_name = "US122 MKII",    2987                 .product_name = "US122 MKII",
2400                 QUIRK_DATA_COMPOSITE {        !! 2988                 .ifnum = QUIRK_ANY_INTERFACE,
2401                         { QUIRK_DATA_IGNORE(0 !! 2989                 .type = QUIRK_COMPOSITE,
                                                   >> 2990                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 2991                         {
                                                   >> 2992                                 .ifnum = 0,
                                                   >> 2993                                 .type = QUIRK_IGNORE_INTERFACE
                                                   >> 2994                         },
2402                         {                        2995                         {
2403                                 QUIRK_DATA_AU !! 2996                                 .ifnum = 1,
                                                   >> 2997                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 2998                                 .data = &(const struct audioformat) {
2404                                         .form    2999                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2405                                         .chan    3000                                         .channels = 2,
2406                                         .ifac    3001                                         .iface = 1,
2407                                         .alts    3002                                         .altsetting = 1,
2408                                         .alts    3003                                         .altset_idx = 1,
2409                                         .attr    3004                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2410                                         .endp    3005                                         .endpoint = 0x02,
2411                                         .ep_a    3006                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2412                                         .rate    3007                                         .rates = SNDRV_PCM_RATE_44100 |
2413                                                  3008                                                  SNDRV_PCM_RATE_48000 |
2414                                                  3009                                                  SNDRV_PCM_RATE_88200 |
2415                                                  3010                                                  SNDRV_PCM_RATE_96000,
2416                                         .rate    3011                                         .rate_min = 44100,
2417                                         .rate    3012                                         .rate_max = 96000,
2418                                         .nr_r    3013                                         .nr_rates = 4,
2419                                         .rate    3014                                         .rate_table = (unsigned int[]) {
2420                                                  3015                                                 44100, 48000, 88200, 96000
2421                                         }        3016                                         }
2422                                 }                3017                                 }
2423                         },                       3018                         },
2424                         QUIRK_COMPOSITE_END   << 
2425                 }                             << 
2426         }                                     << 
2427 },                                            << 
2428                                               << 
2429 /* Denon DN-X1600 */                          << 
2430 {                                             << 
2431         USB_AUDIO_DEVICE(0x154e, 0x500e),     << 
2432         QUIRK_DRIVER_INFO {                   << 
2433                 .vendor_name = "Denon",       << 
2434                 .product_name = "DN-X1600",   << 
2435                 QUIRK_DATA_COMPOSITE{         << 
2436                         { QUIRK_DATA_IGNORE(0 << 
2437                         {                        3019                         {
2438                                 QUIRK_DATA_AU !! 3020                                 .ifnum = -1
2439                                         .form !! 3021                         }
2440                                         .chan << 
2441                                         .ifac << 
2442                                         .alts << 
2443                                         .alts << 
2444                                         .attr << 
2445                                         .endp << 
2446                                         .ep_a << 
2447                                               << 
2448                                         .maxp << 
2449                                         .rate << 
2450                                         .rate << 
2451                                         .rate << 
2452                                         .nr_r << 
2453                                         .rate << 
2454                                               << 
2455                                         }     << 
2456                                 }             << 
2457                         },                    << 
2458                         {                     << 
2459                                 QUIRK_DATA_AU << 
2460                                         .form << 
2461                                         .chan << 
2462                                         .ifac << 
2463                                         .alts << 
2464                                         .alts << 
2465                                         .attr << 
2466                                         .endp << 
2467                                         .ep_a << 
2468                                               << 
2469                                         .maxp << 
2470                                         .rate << 
2471                                         .rate << 
2472                                         .rate << 
2473                                         .nr_r << 
2474                                         .rate << 
2475                                               << 
2476                                         }     << 
2477                                 }             << 
2478                         },                    << 
2479                         { QUIRK_DATA_STANDARD << 
2480                         QUIRK_COMPOSITE_END   << 
2481                 }                                3022                 }
2482         }                                        3023         }
2483 },                                               3024 },
2484                                                  3025 
2485 /* Microsoft XboxLive Headset/Xbox Communicat    3026 /* Microsoft XboxLive Headset/Xbox Communicator */
2486 {                                                3027 {
2487         USB_DEVICE(0x045e, 0x0283),              3028         USB_DEVICE(0x045e, 0x0283),
2488         .bInterfaceClass = USB_CLASS_PER_INTE    3029         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2489         QUIRK_DRIVER_INFO {                   !! 3030         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2490                 .vendor_name = "Microsoft",      3031                 .vendor_name = "Microsoft",
2491                 .product_name = "XboxLive Hea    3032                 .product_name = "XboxLive Headset/Xbox Communicator",
2492                 QUIRK_DATA_COMPOSITE {        !! 3033                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3034                 .type = QUIRK_COMPOSITE,
                                                   >> 3035                 .data = &(const struct snd_usb_audio_quirk[]) {
2493                         {                        3036                         {
2494                                 /* playback *    3037                                 /* playback */
2495                                 QUIRK_DATA_AU !! 3038                                 .ifnum = 0,
                                                   >> 3039                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3040                                 .data = &(const struct audioformat) {
2496                                         .form    3041                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2497                                         .chan    3042                                         .channels = 1,
2498                                         .ifac    3043                                         .iface = 0,
2499                                         .alts    3044                                         .altsetting = 0,
2500                                         .alts    3045                                         .altset_idx = 0,
2501                                         .attr    3046                                         .attributes = 0,
2502                                         .endp    3047                                         .endpoint = 0x04,
2503                                         .ep_a    3048                                         .ep_attr = 0x05,
2504                                         .rate    3049                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2505                                         .rate    3050                                         .rate_min = 22050,
2506                                         .rate    3051                                         .rate_max = 22050
2507                                 }                3052                                 }
2508                         },                       3053                         },
2509                         {                        3054                         {
2510                                 /* capture */    3055                                 /* capture */
2511                                 QUIRK_DATA_AU !! 3056                                 .ifnum = 1,
                                                   >> 3057                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3058                                 .data = &(const struct audioformat) {
2512                                         .form    3059                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2513                                         .chan    3060                                         .channels = 1,
2514                                         .ifac    3061                                         .iface = 1,
2515                                         .alts    3062                                         .altsetting = 0,
2516                                         .alts    3063                                         .altset_idx = 0,
2517                                         .attr    3064                                         .attributes = 0,
2518                                         .endp    3065                                         .endpoint = 0x85,
2519                                         .ep_a    3066                                         .ep_attr = 0x05,
2520                                         .rate    3067                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
2521                                         .rate    3068                                         .rate_min = 16000,
2522                                         .rate    3069                                         .rate_max = 16000
2523                                 }                3070                                 }
2524                         },                       3071                         },
2525                         QUIRK_COMPOSITE_END   !! 3072                         {
                                                   >> 3073                                 .ifnum = -1
                                                   >> 3074                         }
2526                 }                                3075                 }
2527         }                                        3076         }
2528 },                                               3077 },
2529                                                  3078 
2530 /* Reloop Play */                                3079 /* Reloop Play */
2531 {                                                3080 {
2532         USB_DEVICE(0x200c, 0x100b),              3081         USB_DEVICE(0x200c, 0x100b),
2533         .bInterfaceClass = USB_CLASS_PER_INTE    3082         .bInterfaceClass = USB_CLASS_PER_INTERFACE,
2534         QUIRK_DRIVER_INFO {                   !! 3083         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2535                 QUIRK_DATA_COMPOSITE {        !! 3084                 .ifnum = QUIRK_ANY_INTERFACE,
2536                         { QUIRK_DATA_STANDARD !! 3085                 .type = QUIRK_COMPOSITE,
                                                   >> 3086                 .data = &(const struct snd_usb_audio_quirk[]) {
                                                   >> 3087                         {
                                                   >> 3088                                 .ifnum = 0,
                                                   >> 3089                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 3090                         },
2537                         {                        3091                         {
2538                                 QUIRK_DATA_AU !! 3092                                 .ifnum = 1,
                                                   >> 3093                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3094                                 .data = &(const struct audioformat) {
2539                                         .form    3095                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2540                                         .chan    3096                                         .channels = 4,
2541                                         .ifac    3097                                         .iface = 1,
2542                                         .alts    3098                                         .altsetting = 1,
2543                                         .alts    3099                                         .altset_idx = 1,
2544                                         .attr    3100                                         .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2545                                         .endp    3101                                         .endpoint = 0x01,
2546                                         .ep_a    3102                                         .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,
2547                                         .rate    3103                                         .rates = SNDRV_PCM_RATE_44100 |
2548                                                  3104                                                  SNDRV_PCM_RATE_48000,
2549                                         .rate    3105                                         .rate_min = 44100,
2550                                         .rate    3106                                         .rate_max = 48000,
2551                                         .nr_r    3107                                         .nr_rates = 2,
2552                                         .rate    3108                                         .rate_table = (unsigned int[]) {
2553                                                  3109                                                 44100, 48000
2554                                         }        3110                                         }
2555                                 }                3111                                 }
2556                         },                       3112                         },
2557                         QUIRK_COMPOSITE_END   !! 3113                         {
                                                   >> 3114                                 .ifnum = -1
                                                   >> 3115                         }
2558                 }                                3116                 }
2559         }                                        3117         }
2560 },                                               3118 },
2561                                                  3119 
2562 {                                                3120 {
2563         /*                                       3121         /*
2564          * ZOOM R16/24 in audio interface mod    3122          * ZOOM R16/24 in audio interface mode.
2565          * Playback requires an extra four by    3123          * Playback requires an extra four byte LE length indicator
2566          * at the start of each isochronous p    3124          * at the start of each isochronous packet. This quirk is
2567          * enabled in create_standard_audio_q    3125          * enabled in create_standard_audio_quirk().
2568          */                                      3126          */
2569         USB_DEVICE(0x1686, 0x00dd),              3127         USB_DEVICE(0x1686, 0x00dd),
2570         QUIRK_DRIVER_INFO {                   !! 3128         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2571                 QUIRK_DATA_COMPOSITE {        !! 3129                 .ifnum = QUIRK_ANY_INTERFACE,
2572                         { QUIRK_DATA_STANDARD !! 3130                 .type = QUIRK_COMPOSITE,
2573                         { QUIRK_DATA_STANDARD !! 3131                 .data = (const struct snd_usb_audio_quirk[]) {
2574                         { QUIRK_DATA_STANDARD !! 3132                         {
2575                         QUIRK_COMPOSITE_END   !! 3133                                 /* Playback  */
                                                   >> 3134                                 .ifnum = 1,
                                                   >> 3135                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE,
                                                   >> 3136                         },
                                                   >> 3137                         {
                                                   >> 3138                                 /* Capture */
                                                   >> 3139                                 .ifnum = 2,
                                                   >> 3140                                 .type = QUIRK_AUDIO_STANDARD_INTERFACE,
                                                   >> 3141                         },
                                                   >> 3142                         {
                                                   >> 3143                                 /* Midi */
                                                   >> 3144                                 .ifnum = 3,
                                                   >> 3145                                 .type = QUIRK_MIDI_STANDARD_INTERFACE
                                                   >> 3146                         },
                                                   >> 3147                         {
                                                   >> 3148                                 .ifnum = -1
                                                   >> 3149                         },
2576                 }                                3150                 }
2577         }                                        3151         }
2578 },                                               3152 },
2579                                                  3153 
2580 {                                                3154 {
2581         /*                                       3155         /*
2582          * Some USB MIDI devices don't have a    3156          * Some USB MIDI devices don't have an audio control interface,
2583          * so we have to grab MIDI streaming     3157          * so we have to grab MIDI streaming interfaces here.
2584          */                                      3158          */
2585         .match_flags = USB_DEVICE_ID_MATCH_IN    3159         .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
2586                        USB_DEVICE_ID_MATCH_IN    3160                        USB_DEVICE_ID_MATCH_INT_SUBCLASS,
2587         .bInterfaceClass = USB_CLASS_AUDIO,      3161         .bInterfaceClass = USB_CLASS_AUDIO,
2588         .bInterfaceSubClass = USB_SUBCLASS_MI    3162         .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
2589         QUIRK_DRIVER_INFO {                   !! 3163         .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2590                 QUIRK_DATA_STANDARD_MIDI(QUIR !! 3164                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3165                 .type = QUIRK_MIDI_STANDARD_INTERFACE
2591         }                                        3166         }
2592 },                                               3167 },
2593                                                  3168 
2594 /* Rane SL-1 */                               << 
2595 {                                             << 
2596         USB_DEVICE(0x13e5, 0x0001),           << 
2597         QUIRK_DRIVER_INFO {                   << 
2598                 QUIRK_DATA_STANDARD_AUDIO(QUI << 
2599         }                                     << 
2600 },                                            << 
2601                                               << 
2602 /* disabled due to regression for other devic    3169 /* disabled due to regression for other devices;
2603  * see https://bugzilla.kernel.org/show_bug.c    3170  * see https://bugzilla.kernel.org/show_bug.cgi?id=199905
2604  */                                              3171  */
2605 #if 0                                            3172 #if 0
2606 {                                                3173 {
2607         /*                                       3174         /*
2608          * Nura's first gen headphones use Ca    3175          * Nura's first gen headphones use Cambridge Silicon Radio's vendor
2609          * ID, but it looks like the product     3176          * ID, but it looks like the product ID actually is only for Nura.
2610          * The capture interface does not wor    3177          * The capture interface does not work at all (even on Windows),
2611          * and only the 48 kHz sample rate wo    3178          * and only the 48 kHz sample rate works for the playback interface.
2612          */                                      3179          */
2613         USB_DEVICE(0x0a12, 0x1243),              3180         USB_DEVICE(0x0a12, 0x1243),
2614         QUIRK_DRIVER_INFO {                   !! 3181         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2615                 QUIRK_DATA_COMPOSITE {        !! 3182                 .ifnum = QUIRK_ANY_INTERFACE,
2616                         { QUIRK_DATA_STANDARD !! 3183                 .type = QUIRK_COMPOSITE,
2617                         { QUIRK_DATA_IGNORE(1 !! 3184                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 3185                         {
                                                   >> 3186                                 .ifnum = 0,
                                                   >> 3187                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 3188                         },
                                                   >> 3189                         /* Capture */
                                                   >> 3190                         {
                                                   >> 3191                                 .ifnum = 1,
                                                   >> 3192                                 .type = QUIRK_IGNORE_INTERFACE,
                                                   >> 3193                         },
2618                         /* Playback */           3194                         /* Playback */
2619                         {                        3195                         {
2620                                 QUIRK_DATA_AU !! 3196                                 .ifnum = 2,
                                                   >> 3197                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3198                                 .data = &(const struct audioformat) {
2621                                         .form    3199                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2622                                         .chan    3200                                         .channels = 2,
2623                                         .ifac    3201                                         .iface = 2,
2624                                         .alts    3202                                         .altsetting = 1,
2625                                         .alts    3203                                         .altset_idx = 1,
2626                                         .attr    3204                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2627                                                  3205                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2628                                         .endp    3206                                         .endpoint = 0x03,
2629                                         .ep_a    3207                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2630                                         .rate    3208                                         .rates = SNDRV_PCM_RATE_48000,
2631                                         .rate    3209                                         .rate_min = 48000,
2632                                         .rate    3210                                         .rate_max = 48000,
2633                                         .nr_r    3211                                         .nr_rates = 1,
2634                                         .rate    3212                                         .rate_table = (unsigned int[]) {
2635                                                  3213                                                 48000
2636                                         }        3214                                         }
2637                                 }                3215                                 }
2638                         },                       3216                         },
2639                         QUIRK_COMPOSITE_END   !! 3217                         {
                                                   >> 3218                                 .ifnum = -1
                                                   >> 3219                         },
2640                 }                                3220                 }
2641         }                                        3221         }
2642 },                                               3222 },
2643 #endif /* disabled */                            3223 #endif /* disabled */
2644                                                  3224 
2645 {                                                3225 {
2646         /*                                       3226         /*
2647          * Bower's & Wilkins PX headphones on    3227          * Bower's & Wilkins PX headphones only support the 48 kHz sample rate
2648          * even though it advertises more. Th    3228          * even though it advertises more. The capture interface doesn't work
2649          * even on windows.                      3229          * even on windows.
2650          */                                      3230          */
2651         USB_DEVICE(0x19b5, 0x0021),              3231         USB_DEVICE(0x19b5, 0x0021),
2652         QUIRK_DRIVER_INFO {                   !! 3232         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2653                 QUIRK_DATA_COMPOSITE {        !! 3233                 .ifnum = QUIRK_ANY_INTERFACE,
2654                         { QUIRK_DATA_STANDARD !! 3234                 .type = QUIRK_COMPOSITE,
                                                   >> 3235                 .data = (const struct snd_usb_audio_quirk[]) {
                                                   >> 3236                         {
                                                   >> 3237                                 .ifnum = 0,
                                                   >> 3238                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 3239                         },
2655                         /* Playback */           3240                         /* Playback */
2656                         {                        3241                         {
2657                                 QUIRK_DATA_AU !! 3242                                 .ifnum = 1,
                                                   >> 3243                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3244                                 .data = &(const struct audioformat) {
2658                                         .form    3245                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
2659                                         .chan    3246                                         .channels = 2,
2660                                         .ifac    3247                                         .iface = 1,
2661                                         .alts    3248                                         .altsetting = 1,
2662                                         .alts    3249                                         .altset_idx = 1,
2663                                         .attr    3250                                         .attributes = UAC_EP_CS_ATTR_FILL_MAX |
2664                                                  3251                                                 UAC_EP_CS_ATTR_SAMPLE_RATE,
2665                                         .endp    3252                                         .endpoint = 0x03,
2666                                         .ep_a    3253                                         .ep_attr = USB_ENDPOINT_XFER_ISOC,
2667                                         .rate    3254                                         .rates = SNDRV_PCM_RATE_48000,
2668                                         .rate    3255                                         .rate_min = 48000,
2669                                         .rate    3256                                         .rate_max = 48000,
2670                                         .nr_r    3257                                         .nr_rates = 1,
2671                                         .rate    3258                                         .rate_table = (unsigned int[]) {
2672                                                  3259                                                 48000
2673                                         }        3260                                         }
2674                                 }                3261                                 }
2675                         },                       3262                         },
2676                         QUIRK_COMPOSITE_END   !! 3263                         {
                                                   >> 3264                                 .ifnum = -1
                                                   >> 3265                         },
2677                 }                                3266                 }
2678         }                                        3267         }
2679 },                                               3268 },
2680 /* MOTU Microbook II */                          3269 /* MOTU Microbook II */
2681 {                                                3270 {
2682         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004    3271         USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004),
2683         QUIRK_DRIVER_INFO {                   !! 3272         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2684                 .vendor_name = "MOTU",           3273                 .vendor_name = "MOTU",
2685                 .product_name = "MicroBookII"    3274                 .product_name = "MicroBookII",
2686                 QUIRK_DATA_COMPOSITE {        !! 3275                 .ifnum = QUIRK_ANY_INTERFACE,
2687                         { QUIRK_DATA_STANDARD !! 3276                 .type = QUIRK_COMPOSITE,
                                                   >> 3277                 .data = (const struct snd_usb_audio_quirk[]) {
2688                         {                        3278                         {
2689                                 QUIRK_DATA_AU !! 3279                                 .ifnum = 0,
                                                   >> 3280                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 3281                         },
                                                   >> 3282                         {
                                                   >> 3283                                 .ifnum = 0,
                                                   >> 3284                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3285                                 .data = &(const struct audioformat) {
2690                                         .form    3286                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2691                                         .chan    3287                                         .channels = 6,
2692                                         .ifac    3288                                         .iface = 0,
2693                                         .alts    3289                                         .altsetting = 1,
2694                                         .alts    3290                                         .altset_idx = 1,
2695                                         .attr    3291                                         .attributes = 0,
2696                                         .endp    3292                                         .endpoint = 0x84,
2697                                         .rate    3293                                         .rates = SNDRV_PCM_RATE_96000,
2698                                         .ep_a    3294                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2699                                                  3295                                                    USB_ENDPOINT_SYNC_ASYNC,
2700                                         .rate    3296                                         .rate_min = 96000,
2701                                         .rate    3297                                         .rate_max = 96000,
2702                                         .nr_r    3298                                         .nr_rates = 1,
2703                                         .maxp    3299                                         .maxpacksize = 0x00d8,
2704                                         .rate    3300                                         .rate_table = (unsigned int[]) {
2705                                                  3301                                                 96000
2706                                         }        3302                                         }
2707                                 }                3303                                 }
2708                         },                       3304                         },
2709                         {                        3305                         {
2710                                 QUIRK_DATA_AU !! 3306                                 .ifnum = 0,
                                                   >> 3307                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3308                                 .data = &(const struct audioformat) {
2711                                         .form    3309                                         .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2712                                         .chan    3310                                         .channels = 8,
2713                                         .ifac    3311                                         .iface = 0,
2714                                         .alts    3312                                         .altsetting = 1,
2715                                         .alts    3313                                         .altset_idx = 1,
2716                                         .attr    3314                                         .attributes = 0,
2717                                         .endp    3315                                         .endpoint = 0x03,
2718                                         .ep_i << 
2719                                         .rate    3316                                         .rates = SNDRV_PCM_RATE_96000,
2720                                         .ep_a    3317                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
2721                                                  3318                                                    USB_ENDPOINT_SYNC_ASYNC,
2722                                         .rate    3319                                         .rate_min = 96000,
2723                                         .rate    3320                                         .rate_max = 96000,
2724                                         .nr_r    3321                                         .nr_rates = 1,
2725                                         .maxp    3322                                         .maxpacksize = 0x0120,
2726                                         .rate    3323                                         .rate_table = (unsigned int[]) {
2727                                                  3324                                                 96000
2728                                         }        3325                                         }
2729                                 }                3326                                 }
2730                         },                       3327                         },
2731                         QUIRK_COMPOSITE_END   !! 3328                         {
                                                   >> 3329                                 .ifnum = -1
                                                   >> 3330                         }
2732                 }                                3331                 }
2733         }                                        3332         }
2734 },                                               3333 },
2735 {                                                3334 {
2736         /*                                       3335         /*
2737          * PIONEER DJ DDJ-SX3                    3336          * PIONEER DJ DDJ-SX3
2738          * PCM is 12 channels out, 10 channel    3337          * PCM is 12 channels out, 10 channels in @ 44.1 fixed
2739          * interface 0, vendor class alt sett    3338          * interface 0, vendor class alt setting 1 for endpoints 5 and 0x86
2740          * The feedback for the output is the    3339          * The feedback for the output is the input.
2741          */                                      3340          */
2742         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023    3341         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023),
2743         QUIRK_DRIVER_INFO {                   !! 3342         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2744                 QUIRK_DATA_COMPOSITE {        !! 3343                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3344                 .type = QUIRK_COMPOSITE,
                                                   >> 3345                 .data = (const struct snd_usb_audio_quirk[]) {
2745                         {                        3346                         {
2746                                 QUIRK_DATA_AU !! 3347                                 .ifnum = 0,
                                                   >> 3348                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3349                                 .data = &(const struct audioformat) {
2747                                         .form    3350                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2748                                         .chan    3351                                         .channels = 12,
2749                                         .ifac    3352                                         .iface = 0,
2750                                         .alts    3353                                         .altsetting = 1,
2751                                         .alts    3354                                         .altset_idx = 1,
2752                                         .endp    3355                                         .endpoint = 0x05,
2753                                         .ep_a    3356                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2754                                                  3357                                                    USB_ENDPOINT_SYNC_ASYNC,
2755                                         .rate    3358                                         .rates = SNDRV_PCM_RATE_44100,
2756                                         .rate    3359                                         .rate_min = 44100,
2757                                         .rate    3360                                         .rate_max = 44100,
2758                                         .nr_r    3361                                         .nr_rates = 1,
2759                                         .rate    3362                                         .rate_table = (unsigned int[]) { 44100 }
2760                                 }                3363                                 }
2761                         },                       3364                         },
2762                         {                        3365                         {
2763                                 QUIRK_DATA_AU !! 3366                                 .ifnum = 0,
                                                   >> 3367                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3368                                 .data = &(const struct audioformat) {
2764                                         .form    3369                                         .formats = SNDRV_PCM_FMTBIT_S32_LE,
2765                                         .chan    3370                                         .channels = 10,
2766                                         .ifac    3371                                         .iface = 0,
2767                                         .alts    3372                                         .altsetting = 1,
2768                                         .alts    3373                                         .altset_idx = 1,
2769                                         .endp    3374                                         .endpoint = 0x86,
2770                                         .ep_i    3375                                         .ep_idx = 1,
2771                                         .ep_a    3376                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2772                                                  3377                                                  USB_ENDPOINT_SYNC_ASYNC|
2773                                                  3378                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2774                                         .rate    3379                                         .rates = SNDRV_PCM_RATE_44100,
2775                                         .rate    3380                                         .rate_min = 44100,
2776                                         .rate    3381                                         .rate_max = 44100,
2777                                         .nr_r    3382                                         .nr_rates = 1,
2778                                         .rate    3383                                         .rate_table = (unsigned int[]) { 44100 }
2779                                 }                3384                                 }
2780                         },                       3385                         },
2781                         QUIRK_COMPOSITE_END   !! 3386                         {
                                                   >> 3387                                 .ifnum = -1
                                                   >> 3388                         }
2782                 }                                3389                 }
2783         }                                        3390         }
2784 },                                               3391 },
2785 {                                                3392 {
2786         /*                                       3393         /*
2787          * Pioneer DJ DJM-250MK2                 3394          * Pioneer DJ DJM-250MK2
2788          * PCM is 8 channels out @ 48 fixed (    3395          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
2789          * and 8 channels in @ 48 fixed (endp    3396          * and 8 channels in @ 48 fixed (endpoint 0x82).
2790          *                                       3397          *
2791          * Both playback and recording is wor    3398          * Both playback and recording is working, even simultaneously.
2792          *                                       3399          *
2793          * Playback channels could be mapped     3400          * Playback channels could be mapped to:
2794          *  - CH1                                3401          *  - CH1
2795          *  - CH2                                3402          *  - CH2
2796          *  - AUX                                3403          *  - AUX
2797          *                                       3404          *
2798          * Recording channels could be mapped    3405          * Recording channels could be mapped to:
2799          *  - Post CH1 Fader                     3406          *  - Post CH1 Fader
2800          *  - Post CH2 Fader                     3407          *  - Post CH2 Fader
2801          *  - Cross Fader A                      3408          *  - Cross Fader A
2802          *  - Cross Fader B                      3409          *  - Cross Fader B
2803          *  - MIC                                3410          *  - MIC
2804          *  - AUX                                3411          *  - AUX
2805          *  - REC OUT                            3412          *  - REC OUT
2806          *                                       3413          *
2807          * There is remaining problem with re    3414          * There is remaining problem with recording directly from PHONO/LINE.
2808          * If we map a channel to:               3415          * If we map a channel to:
2809          *  - CH1 Control Tone PHONO             3416          *  - CH1 Control Tone PHONO
2810          *  - CH1 Control Tone LINE              3417          *  - CH1 Control Tone LINE
2811          *  - CH2 Control Tone PHONO             3418          *  - CH2 Control Tone PHONO
2812          *  - CH2 Control Tone LINE              3419          *  - CH2 Control Tone LINE
2813          * it is silent.                         3420          * it is silent.
2814          * There is no signal even on other o    3421          * There is no signal even on other operating systems with official drivers.
2815          * The signal appears only when a sup    3422          * The signal appears only when a supported application is started.
2816          * This needs to be investigated yet.    3423          * This needs to be investigated yet...
2817          * (there is quite a lot communicatio    3424          * (there is quite a lot communication on the USB in both directions)
2818          *                                       3425          *
2819          * In current version this mixer coul    3426          * In current version this mixer could be used for playback
2820          * and for recording from vinyls (thr    3427          * and for recording from vinyls (through Post CH* Fader)
2821          * but not for DVS (Digital Vinyl Sys    3428          * but not for DVS (Digital Vinyl Systems) like in Mixxx.
2822          */                                      3429          */
2823         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017    3430         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),
2824         QUIRK_DRIVER_INFO {                   !! 3431         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2825                 QUIRK_DATA_COMPOSITE {        !! 3432                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3433                 .type = QUIRK_COMPOSITE,
                                                   >> 3434                 .data = (const struct snd_usb_audio_quirk[]) {
2826                         {                        3435                         {
2827                                 QUIRK_DATA_AU !! 3436                                 .ifnum = 0,
                                                   >> 3437                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3438                                 .data = &(const struct audioformat) {
2828                                         .form    3439                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2829                                         .chan    3440                                         .channels = 8, // outputs
2830                                         .ifac    3441                                         .iface = 0,
2831                                         .alts    3442                                         .altsetting = 1,
2832                                         .alts    3443                                         .altset_idx = 1,
2833                                         .endp    3444                                         .endpoint = 0x01,
2834                                         .ep_a    3445                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2835                                                  3446                                                 USB_ENDPOINT_SYNC_ASYNC,
2836                                         .rate    3447                                         .rates = SNDRV_PCM_RATE_48000,
2837                                         .rate    3448                                         .rate_min = 48000,
2838                                         .rate    3449                                         .rate_max = 48000,
2839                                         .nr_r    3450                                         .nr_rates = 1,
2840                                         .rate    3451                                         .rate_table = (unsigned int[]) { 48000 }
2841                                         }        3452                                         }
2842                         },                       3453                         },
2843                         {                        3454                         {
2844                                 QUIRK_DATA_AU !! 3455                                 .ifnum = 0,
                                                   >> 3456                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3457                                 .data = &(const struct audioformat) {
2845                                         .form    3458                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2846                                         .chan    3459                                         .channels = 8, // inputs
2847                                         .ifac    3460                                         .iface = 0,
2848                                         .alts    3461                                         .altsetting = 1,
2849                                         .alts    3462                                         .altset_idx = 1,
2850                                         .endp    3463                                         .endpoint = 0x82,
2851                                         .ep_i    3464                                         .ep_idx = 1,
2852                                         .ep_a    3465                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2853                                                  3466                                                 USB_ENDPOINT_SYNC_ASYNC|
2854                                                  3467                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
2855                                         .rate    3468                                         .rates = SNDRV_PCM_RATE_48000,
2856                                         .rate    3469                                         .rate_min = 48000,
2857                                         .rate    3470                                         .rate_max = 48000,
2858                                         .nr_r    3471                                         .nr_rates = 1,
2859                                         .rate    3472                                         .rate_table = (unsigned int[]) { 48000 }
2860                                 }                3473                                 }
2861                         },                       3474                         },
2862                         QUIRK_COMPOSITE_END   !! 3475                         {
                                                   >> 3476                                 .ifnum = -1
                                                   >> 3477                         }
2863                 }                                3478                 }
2864         }                                        3479         }
2865 },                                               3480 },
2866 {                                                3481 {
2867         /*                                       3482         /*
2868          * PIONEER DJ DDJ-RB                     3483          * PIONEER DJ DDJ-RB
2869          * PCM is 4 channels out, 2 dummy cha    3484          * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed
2870          * The feedback for the output is the    3485          * The feedback for the output is the dummy input.
2871          */                                      3486          */
2872         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e    3487         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),
2873         QUIRK_DRIVER_INFO {                   !! 3488         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2874                 QUIRK_DATA_COMPOSITE {        !! 3489                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3490                 .type = QUIRK_COMPOSITE,
                                                   >> 3491                 .data = (const struct snd_usb_audio_quirk[]) {
2875                         {                        3492                         {
2876                                 QUIRK_DATA_AU !! 3493                                 .ifnum = 0,
                                                   >> 3494                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3495                                 .data = &(const struct audioformat) {
2877                                         .form    3496                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2878                                         .chan    3497                                         .channels = 4,
2879                                         .ifac    3498                                         .iface = 0,
2880                                         .alts    3499                                         .altsetting = 1,
2881                                         .alts    3500                                         .altset_idx = 1,
2882                                         .endp    3501                                         .endpoint = 0x01,
2883                                         .ep_a    3502                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2884                                                  3503                                                    USB_ENDPOINT_SYNC_ASYNC,
2885                                         .rate    3504                                         .rates = SNDRV_PCM_RATE_44100,
2886                                         .rate    3505                                         .rate_min = 44100,
2887                                         .rate    3506                                         .rate_max = 44100,
2888                                         .nr_r    3507                                         .nr_rates = 1,
2889                                         .rate    3508                                         .rate_table = (unsigned int[]) { 44100 }
2890                                 }                3509                                 }
2891                         },                       3510                         },
2892                         {                        3511                         {
2893                                 QUIRK_DATA_AU !! 3512                                 .ifnum = 0,
                                                   >> 3513                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3514                                 .data = &(const struct audioformat) {
2894                                         .form    3515                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2895                                         .chan    3516                                         .channels = 2,
2896                                         .ifac    3517                                         .iface = 0,
2897                                         .alts    3518                                         .altsetting = 1,
2898                                         .alts    3519                                         .altset_idx = 1,
2899                                         .endp    3520                                         .endpoint = 0x82,
2900                                         .ep_i    3521                                         .ep_idx = 1,
2901                                         .ep_a    3522                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2902                                                  3523                                                  USB_ENDPOINT_SYNC_ASYNC|
2903                                                  3524                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2904                                         .rate    3525                                         .rates = SNDRV_PCM_RATE_44100,
2905                                         .rate    3526                                         .rate_min = 44100,
2906                                         .rate    3527                                         .rate_max = 44100,
2907                                         .nr_r    3528                                         .nr_rates = 1,
2908                                         .rate    3529                                         .rate_table = (unsigned int[]) { 44100 }
2909                                 }                3530                                 }
2910                         },                       3531                         },
2911                         QUIRK_COMPOSITE_END   !! 3532                         {
                                                   >> 3533                                 .ifnum = -1
                                                   >> 3534                         }
2912                 }                                3535                 }
2913         }                                        3536         }
2914 },                                               3537 },
2915                                                  3538 
2916 {                                                3539 {
2917         /*                                       3540         /*
2918          * PIONEER DJ DDJ-RR                     3541          * PIONEER DJ DDJ-RR
2919          * PCM is 6 channels out & 4 channels    3542          * PCM is 6 channels out & 4 channels in @ 44.1 fixed
2920          */                                      3543          */
2921         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d    3544         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d),
2922         QUIRK_DRIVER_INFO {                   !! 3545         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2923                 QUIRK_DATA_COMPOSITE {        !! 3546                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3547                 .type = QUIRK_COMPOSITE,
                                                   >> 3548                 .data = (const struct snd_usb_audio_quirk[]) {
2924                         {                        3549                         {
2925                                 QUIRK_DATA_AU !! 3550                                 .ifnum = 0,
                                                   >> 3551                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3552                                 .data = &(const struct audioformat) {
2926                                         .form    3553                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2927                                         .chan    3554                                         .channels = 6, //Master, Headphones & Booth
2928                                         .ifac    3555                                         .iface = 0,
2929                                         .alts    3556                                         .altsetting = 1,
2930                                         .alts    3557                                         .altset_idx = 1,
2931                                         .endp    3558                                         .endpoint = 0x01,
2932                                         .ep_a    3559                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2933                                                  3560                                                    USB_ENDPOINT_SYNC_ASYNC,
2934                                         .rate    3561                                         .rates = SNDRV_PCM_RATE_44100,
2935                                         .rate    3562                                         .rate_min = 44100,
2936                                         .rate    3563                                         .rate_max = 44100,
2937                                         .nr_r    3564                                         .nr_rates = 1,
2938                                         .rate    3565                                         .rate_table = (unsigned int[]) { 44100 }
2939                                 }                3566                                 }
2940                         },                       3567                         },
2941                         {                        3568                         {
2942                                 QUIRK_DATA_AU !! 3569                                 .ifnum = 0,
                                                   >> 3570                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3571                                 .data = &(const struct audioformat) {
2943                                         .form    3572                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2944                                         .chan    3573                                         .channels = 4, //2x RCA inputs (CH1 & CH2)
2945                                         .ifac    3574                                         .iface = 0,
2946                                         .alts    3575                                         .altsetting = 1,
2947                                         .alts    3576                                         .altset_idx = 1,
2948                                         .endp    3577                                         .endpoint = 0x82,
2949                                         .ep_i    3578                                         .ep_idx = 1,
2950                                         .ep_a    3579                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2951                                                  3580                                                  USB_ENDPOINT_SYNC_ASYNC|
2952                                                  3581                                                  USB_ENDPOINT_USAGE_IMPLICIT_FB,
2953                                         .rate    3582                                         .rates = SNDRV_PCM_RATE_44100,
2954                                         .rate    3583                                         .rate_min = 44100,
2955                                         .rate    3584                                         .rate_max = 44100,
2956                                         .nr_r    3585                                         .nr_rates = 1,
2957                                         .rate    3586                                         .rate_table = (unsigned int[]) { 44100 }
2958                                 }                3587                                 }
2959                         },                       3588                         },
2960                         QUIRK_COMPOSITE_END   !! 3589                         {
                                                   >> 3590                                 .ifnum = -1
                                                   >> 3591                         }
2961                 }                                3592                 }
2962         }                                        3593         }
2963 },                                               3594 },
2964                                                  3595 
2965 {                                                3596 {
2966         /*                                       3597         /*
2967          * PIONEER DJ DDJ-SR2                    3598          * PIONEER DJ DDJ-SR2
2968          * PCM is 4 channels out, 6 channels     3599          * PCM is 4 channels out, 6 channels in @ 44.1 fixed
2969          * The Feedback for the output is the    3600          * The Feedback for the output is the input
2970          */                                      3601          */
2971         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e    3602         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e),
2972         QUIRK_DRIVER_INFO {                   !! 3603                 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2973                 QUIRK_DATA_COMPOSITE {        !! 3604                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3605                 .type = QUIRK_COMPOSITE,
                                                   >> 3606                 .data = (const struct snd_usb_audio_quirk[]) {
2974                         {                        3607                         {
2975                                 QUIRK_DATA_AU !! 3608                                 .ifnum = 0,
                                                   >> 3609                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3610                                 .data = &(const struct audioformat) {
2976                                         .form    3611                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2977                                         .chan    3612                                         .channels = 4,
2978                                         .ifac    3613                                         .iface = 0,
2979                                         .alts    3614                                         .altsetting = 1,
2980                                         .alts    3615                                         .altset_idx = 1,
2981                                         .endp    3616                                         .endpoint = 0x01,
2982                                         .ep_a    3617                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
2983                                                  3618                                                 USB_ENDPOINT_SYNC_ASYNC,
2984                                         .rate    3619                                         .rates = SNDRV_PCM_RATE_44100,
2985                                         .rate    3620                                         .rate_min = 44100,
2986                                         .rate    3621                                         .rate_max = 44100,
2987                                         .nr_r    3622                                         .nr_rates = 1,
2988                                         .rate    3623                                         .rate_table = (unsigned int[]) { 44100 }
2989                                 }                3624                                 }
2990                         },                       3625                         },
2991                         {                        3626                         {
2992                                 QUIRK_DATA_AU !! 3627                                 .ifnum = 0,
                                                   >> 3628                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3629                                 .data = &(const struct audioformat) {
2993                                         .form    3630                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2994                                         .chan    3631                                         .channels = 6,
2995                                         .ifac    3632                                         .iface = 0,
2996                                         .alts    3633                                         .altsetting = 1,
2997                                         .alts    3634                                         .altset_idx = 1,
2998                                         .endp    3635                                         .endpoint = 0x82,
2999                                         .ep_i    3636                                         .ep_idx = 1,
3000                                         .ep_a    3637                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3001                                                  3638                                                 USB_ENDPOINT_SYNC_ASYNC|
3002                                         USB_E    3639                                         USB_ENDPOINT_USAGE_IMPLICIT_FB,
3003                                         .rate    3640                                         .rates = SNDRV_PCM_RATE_44100,
3004                                         .rate    3641                                         .rate_min = 44100,
3005                                         .rate    3642                                         .rate_max = 44100,
3006                                         .nr_r    3643                                         .nr_rates = 1,
3007                                         .rate    3644                                         .rate_table = (unsigned int[]) { 44100 }
3008                                 }                3645                                 }
3009                         },                       3646                         },
3010                         QUIRK_COMPOSITE_END   !! 3647                         {
                                                   >> 3648                                 .ifnum = -1
                                                   >> 3649                         }
3011                 }                                3650                 }
3012         }                                        3651         }
3013 },                                               3652 },
3014                                                  3653 
3015 {                                                3654 {
3016         /*                                       3655         /*
3017          * Pioneer DJ DJM-900NXS2                3656          * Pioneer DJ DJM-900NXS2
3018          * 10 channels playback & 12 channels    3657          * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE
3019          */                                      3658          */
3020         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a    3659         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a),
3021         QUIRK_DRIVER_INFO {                   !! 3660         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3022                 QUIRK_DATA_COMPOSITE {        !! 3661                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3662                 .type = QUIRK_COMPOSITE,
                                                   >> 3663                 .data = (const struct snd_usb_audio_quirk[]) {
3023                         {                        3664                         {
3024                                 QUIRK_DATA_AU !! 3665                                 .ifnum = 0,
                                                   >> 3666                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3667                                 .data = &(const struct audioformat) {
3025                                         .form    3668                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3026                                         .chan    3669                                         .channels = 10,
3027                                         .ifac    3670                                         .iface = 0,
3028                                         .alts    3671                                         .altsetting = 1,
3029                                         .alts    3672                                         .altset_idx = 1,
3030                                         .endp    3673                                         .endpoint = 0x01,
3031                                         .ep_a    3674                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3032                                             U    3675                                             USB_ENDPOINT_SYNC_ASYNC,
3033                                         .rate    3676                                         .rates = SNDRV_PCM_RATE_44100|
3034                                             S    3677                                             SNDRV_PCM_RATE_48000|
3035                                             S    3678                                             SNDRV_PCM_RATE_96000,
3036                                         .rate    3679                                         .rate_min = 44100,
3037                                         .rate    3680                                         .rate_max = 96000,
3038                                         .nr_r    3681                                         .nr_rates = 3,
3039                                         .rate    3682                                         .rate_table = (unsigned int[]) {
3040                                                  3683                                                 44100, 48000, 96000
3041                                         }        3684                                         }
3042                                 }                3685                                 }
3043                         },                       3686                         },
3044                         {                        3687                         {
3045                                 QUIRK_DATA_AU !! 3688                                 .ifnum = 0,
                                                   >> 3689                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3690                                 .data = &(const struct audioformat) {
3046                                         .form    3691                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3047                                         .chan    3692                                         .channels = 12,
3048                                         .ifac    3693                                         .iface = 0,
3049                                         .alts    3694                                         .altsetting = 1,
3050                                         .alts    3695                                         .altset_idx = 1,
3051                                         .endp    3696                                         .endpoint = 0x82,
3052                                         .ep_i    3697                                         .ep_idx = 1,
3053                                         .ep_a    3698                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3054                                             U    3699                                             USB_ENDPOINT_SYNC_ASYNC|
3055                                             U    3700                                             USB_ENDPOINT_USAGE_IMPLICIT_FB,
3056                                         .rate    3701                                         .rates = SNDRV_PCM_RATE_44100|
3057                                             S    3702                                             SNDRV_PCM_RATE_48000|
3058                                             S    3703                                             SNDRV_PCM_RATE_96000,
3059                                         .rate    3704                                         .rate_min = 44100,
3060                                         .rate    3705                                         .rate_max = 96000,
3061                                         .nr_r    3706                                         .nr_rates = 3,
3062                                         .rate    3707                                         .rate_table = (unsigned int[]) {
3063                                                  3708                                                 44100, 48000, 96000
3064                                         }        3709                                         }
3065                                 }                3710                                 }
3066                         },                       3711                         },
3067                         QUIRK_COMPOSITE_END   << 
3068                 }                             << 
3069         }                                     << 
3070 },                                            << 
3071                                               << 
3072 {                                             << 
3073         /*                                    << 
3074          * PIONEER DJ DDJ-800                 << 
3075          * PCM is 6 channels out, 6 channels  << 
3076          * The Feedback for the output is the << 
3077          */                                   << 
3078         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029 << 
3079         QUIRK_DRIVER_INFO {                   << 
3080                 QUIRK_DATA_COMPOSITE {        << 
3081                         {                     << 
3082                                 QUIRK_DATA_AU << 
3083                                         .form << 
3084                                         .chan << 
3085                                         .ifac << 
3086                                         .alts << 
3087                                         .alts << 
3088                                         .endp << 
3089                                         .ep_a << 
3090                                               << 
3091                                         .rate << 
3092                                         .rate << 
3093                                         .rate << 
3094                                         .nr_r << 
3095                                         .rate << 
3096                                 }             << 
3097                         },                    << 
3098                         {                        3712                         {
3099                                 QUIRK_DATA_AU !! 3713                                 .ifnum = -1
3100                                         .form !! 3714                         }
3101                                         .chan << 
3102                                         .ifac << 
3103                                         .alts << 
3104                                         .alts << 
3105                                         .endp << 
3106                                         .ep_i << 
3107                                         .ep_a << 
3108                                               << 
3109                                         USB_E << 
3110                                         .rate << 
3111                                         .rate << 
3112                                         .rate << 
3113                                         .nr_r << 
3114                                         .rate << 
3115                                 }             << 
3116                         },                    << 
3117                         QUIRK_COMPOSITE_END   << 
3118                 }                             << 
3119         }                                     << 
3120 },                                            << 
3121                                               << 
3122 /*                                            << 
3123  * MacroSilicon MS2100/MS2106 based AV captur << 
3124  *                                            << 
3125  * These claim 96kHz 1ch in the descriptors,  << 
3126  * They also need QUIRK_FLAG_ALIGN_TRANSFER,  << 
3127  * they pretend to be 96kHz mono as a workaro << 
3128  * by that...                                 << 
3129  *                                            << 
3130  * They also have an issue with initial strea << 
3131  * channels to be swapped and out of phase, w << 
3132  */                                           << 
3133 {                                             << 
3134         USB_AUDIO_DEVICE(0x534d, 0x0021),     << 
3135         QUIRK_DRIVER_INFO {                   << 
3136                 .vendor_name = "MacroSilicon" << 
3137                 .product_name = "MS210x",     << 
3138                 QUIRK_DATA_COMPOSITE {        << 
3139                         { QUIRK_DATA_STANDARD << 
3140                         {                     << 
3141                                 QUIRK_DATA_AU << 
3142                                         .form << 
3143                                         .chan << 
3144                                         .ifac << 
3145                                         .alts << 
3146                                         .alts << 
3147                                         .attr << 
3148                                         .endp << 
3149                                         .ep_a << 
3150                                               << 
3151                                         .rate << 
3152                                         .rate << 
3153                                         .rate << 
3154                                 }             << 
3155                         },                    << 
3156                         QUIRK_COMPOSITE_END   << 
3157                 }                                3715                 }
3158         }                                        3716         }
3159 },                                               3717 },
3160                                                  3718 
3161 /*                                               3719 /*
3162  * MacroSilicon MS2109 based HDMI capture car    3720  * MacroSilicon MS2109 based HDMI capture cards
3163  *                                               3721  *
3164  * These claim 96kHz 1ch in the descriptors,     3722  * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch.
3165  * They also need QUIRK_FLAG_ALIGN_TRANSFER,  !! 3723  * They also need QUIRK_AUDIO_ALIGN_TRANSFER, which makes one wonder if
3166  * they pretend to be 96kHz mono as a workaro    3724  * they pretend to be 96kHz mono as a workaround for stereo being broken
3167  * by that...                                    3725  * by that...
3168  *                                               3726  *
3169  * They also have an issue with initial strea    3727  * They also have an issue with initial stream alignment that causes the
3170  * channels to be swapped and out of phase, w    3728  * channels to be swapped and out of phase, which is dealt with in quirks.c.
3171  */                                              3729  */
3172 {                                                3730 {
3173         USB_AUDIO_DEVICE(0x534d, 0x2109),        3731         USB_AUDIO_DEVICE(0x534d, 0x2109),
3174         QUIRK_DRIVER_INFO {                   !! 3732         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3175                 .vendor_name = "MacroSilicon"    3733                 .vendor_name = "MacroSilicon",
3176                 .product_name = "MS2109",        3734                 .product_name = "MS2109",
3177                 QUIRK_DATA_COMPOSITE {        !! 3735                 .ifnum = QUIRK_ANY_INTERFACE,
3178                         { QUIRK_DATA_STANDARD !! 3736                 .type = QUIRK_COMPOSITE,
                                                   >> 3737                 .data = &(const struct snd_usb_audio_quirk[]) {
                                                   >> 3738                         {
                                                   >> 3739                                 .ifnum = 2,
                                                   >> 3740                                 .type = QUIRK_AUDIO_ALIGN_TRANSFER,
                                                   >> 3741                         },
                                                   >> 3742                         {
                                                   >> 3743                                 .ifnum = 2,
                                                   >> 3744                                 .type = QUIRK_AUDIO_STANDARD_MIXER,
                                                   >> 3745                         },
3179                         {                        3746                         {
3180                                 QUIRK_DATA_AU !! 3747                                 .ifnum = 3,
                                                   >> 3748                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3749                                 .data = &(const struct audioformat) {
3181                                         .form    3750                                         .formats = SNDRV_PCM_FMTBIT_S16_LE,
3182                                         .chan    3751                                         .channels = 2,
3183                                         .ifac    3752                                         .iface = 3,
3184                                         .alts    3753                                         .altsetting = 1,
3185                                         .alts    3754                                         .altset_idx = 1,
3186                                         .attr    3755                                         .attributes = 0,
3187                                         .endp    3756                                         .endpoint = 0x82,
3188                                         .ep_a    3757                                         .ep_attr = USB_ENDPOINT_XFER_ISOC |
3189                                                  3758                                                 USB_ENDPOINT_SYNC_ASYNC,
3190                                         .rate    3759                                         .rates = SNDRV_PCM_RATE_CONTINUOUS,
3191                                         .rate    3760                                         .rate_min = 48000,
3192                                         .rate    3761                                         .rate_max = 48000,
3193                                 }                3762                                 }
3194                         },                       3763                         },
3195                         QUIRK_COMPOSITE_END   !! 3764                         {
                                                   >> 3765                                 .ifnum = -1
                                                   >> 3766                         }
3196                 }                                3767                 }
3197         }                                        3768         }
3198 },                                               3769 },
3199 {                                                3770 {
3200         /*                                       3771         /*
3201          * Pioneer DJ DJM-750                    3772          * Pioneer DJ DJM-750
3202          * 8 channels playback & 8 channels c    3773          * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE
3203          */                                      3774          */
3204         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f    3775         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),
3205         QUIRK_DRIVER_INFO {                   !! 3776         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3206                 QUIRK_DATA_COMPOSITE {        !! 3777                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3778                 .type = QUIRK_COMPOSITE,
                                                   >> 3779                 .data = (const struct snd_usb_audio_quirk[]) {
3207                         {                        3780                         {
3208                                 QUIRK_DATA_AU !! 3781                                 .ifnum = 0,
                                                   >> 3782                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3783                                 .data = &(const struct audioformat) {
3209                                         .form    3784                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3210                                         .chan    3785                                         .channels = 8,
3211                                         .ifac    3786                                         .iface = 0,
3212                                         .alts    3787                                         .altsetting = 1,
3213                                         .alts    3788                                         .altset_idx = 1,
3214                                         .endp    3789                                         .endpoint = 0x05,
3215                                         .ep_a    3790                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3216                                             U    3791                                             USB_ENDPOINT_SYNC_ASYNC,
3217                                         .rate    3792                                         .rates = SNDRV_PCM_RATE_44100|
3218                                                  3793                                                 SNDRV_PCM_RATE_48000|
3219                                                  3794                                                 SNDRV_PCM_RATE_96000,
3220                                         .rate    3795                                         .rate_min = 44100,
3221                                         .rate    3796                                         .rate_max = 96000,
3222                                         .nr_r    3797                                         .nr_rates = 3,
3223                                         .rate    3798                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3224                                 }                3799                                 }
3225                         },                       3800                         },
3226                         {                        3801                         {
3227                                 QUIRK_DATA_AU !! 3802                                 .ifnum = 0,
                                                   >> 3803                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3804                                 .data = &(const struct audioformat) {
3228                                         .form    3805                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3229                                         .chan    3806                                         .channels = 8,
3230                                         .ifac    3807                                         .iface = 0,
3231                                         .alts    3808                                         .altsetting = 1,
3232                                         .alts    3809                                         .altset_idx = 1,
3233                                         .endp    3810                                         .endpoint = 0x86,
3234                                         .ep_i    3811                                         .ep_idx = 1,
3235                                         .ep_a    3812                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3236                                                  3813                                                 USB_ENDPOINT_SYNC_ASYNC|
3237                                                  3814                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3238                                         .rate    3815                                         .rates = SNDRV_PCM_RATE_44100|
3239                                                  3816                                                 SNDRV_PCM_RATE_48000|
3240                                                  3817                                                 SNDRV_PCM_RATE_96000,
3241                                         .rate    3818                                         .rate_min = 44100,
3242                                         .rate    3819                                         .rate_max = 96000,
3243                                         .nr_r    3820                                         .nr_rates = 3,
3244                                         .rate    3821                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3245                                 }                3822                                 }
3246                         },                       3823                         },
3247                         QUIRK_COMPOSITE_END   << 
3248                 }                             << 
3249         }                                     << 
3250 },                                            << 
3251 {                                             << 
3252         /*                                    << 
3253          * Pioneer DJ DJM-750MK2              << 
3254          * 10 channels playback & 12 channels << 
3255          */                                   << 
3256         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b << 
3257         QUIRK_DRIVER_INFO {                   << 
3258                 QUIRK_DATA_COMPOSITE {        << 
3259                         {                     << 
3260                                 QUIRK_DATA_AU << 
3261                                         .form << 
3262                                         .chan << 
3263                                         .ifac << 
3264                                         .alts << 
3265                                         .alts << 
3266                                         .endp << 
3267                                         .ep_a << 
3268                                             U << 
3269                                         .rate << 
3270                                         .rate << 
3271                                         .rate << 
3272                                         .nr_r << 
3273                                         .rate << 
3274                                               << 
3275                                         }     << 
3276                                 }             << 
3277                         },                    << 
3278                         {                        3824                         {
3279                                 QUIRK_DATA_AU !! 3825                                 .ifnum = -1
3280                                         .form !! 3826                         }
3281                                         .chan << 
3282                                         .ifac << 
3283                                         .alts << 
3284                                         .alts << 
3285                                         .endp << 
3286                                         .ep_i << 
3287                                         .ep_a << 
3288                                               << 
3289                                               << 
3290                                         .rate << 
3291                                         .rate << 
3292                                         .rate << 
3293                                         .nr_r << 
3294                                         .rate << 
3295                                 }             << 
3296                         },                    << 
3297                         QUIRK_COMPOSITE_END   << 
3298                 }                                3827                 }
3299         }                                        3828         }
3300 },                                               3829 },
3301 {                                                3830 {
3302         /*                                       3831         /*
3303          * Pioneer DJ DJM-850                    3832          * Pioneer DJ DJM-850
3304          * 8 channels playback and 8 channels    3833          * 8 channels playback and 8 channels capture @ 44.1/48/96kHz S24LE
3305          * Playback on EP 0x05                   3834          * Playback on EP 0x05
3306          * Capture on EP 0x86                    3835          * Capture on EP 0x86
3307          */                                      3836          */
3308         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163    3837         USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163),
3309         QUIRK_DRIVER_INFO {                   !! 3838         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3310                 QUIRK_DATA_COMPOSITE {        !! 3839                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3840                 .type = QUIRK_COMPOSITE,
                                                   >> 3841                 .data = (const struct snd_usb_audio_quirk[]) {
3311                         {                        3842                         {
3312                                 QUIRK_DATA_AU !! 3843                                 .ifnum = 0,
                                                   >> 3844                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3845                                 .data = &(const struct audioformat) {
3313                                         .form    3846                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3314                                         .chan    3847                                         .channels = 8,
3315                                         .ifac    3848                                         .iface = 0,
3316                                         .alts    3849                                         .altsetting = 1,
3317                                         .alts    3850                                         .altset_idx = 1,
3318                                         .endp    3851                                         .endpoint = 0x05,
3319                                         .ep_a    3852                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3320                                             U    3853                                             USB_ENDPOINT_SYNC_ASYNC|
3321                                                  3854                                                 USB_ENDPOINT_USAGE_DATA,
3322                                         .rate    3855                                         .rates = SNDRV_PCM_RATE_44100|
3323                                                  3856                                                 SNDRV_PCM_RATE_48000|
3324                                                  3857                                                 SNDRV_PCM_RATE_96000,
3325                                         .rate    3858                                         .rate_min = 44100,
3326                                         .rate    3859                                         .rate_max = 96000,
3327                                         .nr_r    3860                                         .nr_rates = 3,
3328                                         .rate    3861                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3329                                 }                3862                                 }
3330                         },                       3863                         },
3331                         {                        3864                         {
3332                                 QUIRK_DATA_AU !! 3865                                 .ifnum = 0,
                                                   >> 3866                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3867                                 .data = &(const struct audioformat) {
3333                                         .form    3868                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3334                                         .chan    3869                                         .channels = 8,
3335                                         .ifac    3870                                         .iface = 0,
3336                                         .alts    3871                                         .altsetting = 1,
3337                                         .alts    3872                                         .altset_idx = 1,
3338                                         .endp    3873                                         .endpoint = 0x86,
3339                                         .ep_i    3874                                         .ep_idx = 1,
3340                                         .ep_a    3875                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3341                                                  3876                                                 USB_ENDPOINT_SYNC_ASYNC|
3342                                                  3877                                                 USB_ENDPOINT_USAGE_DATA,
3343                                         .rate    3878                                         .rates = SNDRV_PCM_RATE_44100|
3344                                                  3879                                                 SNDRV_PCM_RATE_48000|
3345                                                  3880                                                 SNDRV_PCM_RATE_96000,
3346                                         .rate    3881                                         .rate_min = 44100,
3347                                         .rate    3882                                         .rate_max = 96000,
3348                                         .nr_r    3883                                         .nr_rates = 3,
3349                                         .rate    3884                                         .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3350                                 }                3885                                 }
3351                         },                       3886                         },
3352                         QUIRK_COMPOSITE_END   !! 3887                         {
                                                   >> 3888                                 .ifnum = -1
                                                   >> 3889                         }
3353                 }                                3890                 }
3354         }                                        3891         }
3355 },                                               3892 },
3356 {                                                3893 {
3357         /*                                       3894         /*
3358          * Pioneer DJ DJM-450                    3895          * Pioneer DJ DJM-450
3359          * PCM is 8 channels out @ 48 fixed (    3896          * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
3360          * and 8 channels in @ 48 fixed (endp    3897          * and 8 channels in @ 48 fixed (endpoint 0x82).
3361          */                                      3898          */
3362         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013    3899         USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),
3363         QUIRK_DRIVER_INFO {                   !! 3900         .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3364                 QUIRK_DATA_COMPOSITE {        !! 3901                 .ifnum = QUIRK_ANY_INTERFACE,
                                                   >> 3902                 .type = QUIRK_COMPOSITE,
                                                   >> 3903                 .data = (const struct snd_usb_audio_quirk[]) {
3365                         {                        3904                         {
3366                                 QUIRK_DATA_AU !! 3905                                 .ifnum = 0,
                                                   >> 3906                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3907                                 .data = &(const struct audioformat) {
3367                                         .form    3908                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3368                                         .chan    3909                                         .channels = 8, // outputs
3369                                         .ifac    3910                                         .iface = 0,
3370                                         .alts    3911                                         .altsetting = 1,
3371                                         .alts    3912                                         .altset_idx = 1,
3372                                         .endp    3913                                         .endpoint = 0x01,
3373                                         .ep_a    3914                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3374                                                  3915                                                 USB_ENDPOINT_SYNC_ASYNC,
3375                                         .rate    3916                                         .rates = SNDRV_PCM_RATE_48000,
3376                                         .rate    3917                                         .rate_min = 48000,
3377                                         .rate    3918                                         .rate_max = 48000,
3378                                         .nr_r    3919                                         .nr_rates = 1,
3379                                         .rate    3920                                         .rate_table = (unsigned int[]) { 48000 }
3380                                         }        3921                                         }
3381                         },                       3922                         },
3382                         {                        3923                         {
3383                                 QUIRK_DATA_AU !! 3924                                 .ifnum = 0,
                                                   >> 3925                                 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                                   >> 3926                                 .data = &(const struct audioformat) {
3384                                         .form    3927                                         .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3385                                         .chan    3928                                         .channels = 8, // inputs
3386                                         .ifac    3929                                         .iface = 0,
3387                                         .alts    3930                                         .altsetting = 1,
3388                                         .alts    3931                                         .altset_idx = 1,
3389                                         .endp    3932                                         .endpoint = 0x82,
3390                                         .ep_i    3933                                         .ep_idx = 1,
3391                                         .ep_a    3934                                         .ep_attr = USB_ENDPOINT_XFER_ISOC|
3392                                                  3935                                                 USB_ENDPOINT_SYNC_ASYNC|
3393                                                  3936                                                 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3394                                         .rate    3937                                         .rates = SNDRV_PCM_RATE_48000,
3395                                         .rate    3938                                         .rate_min = 48000,
3396                                         .rate    3939                                         .rate_max = 48000,
3397                                         .nr_r    3940                                         .nr_rates = 1,
3398                                         .rate    3941                                         .rate_table = (unsigned int[]) { 48000 }
3399                                 }                3942                                 }
3400                         },                       3943                         },
3401                         QUIRK_COMPOSITE_END   << 
3402                 }                             << 
3403         }                                     << 
3404 },                                            << 
3405 {                                             << 
3406         /*                                    << 
3407          * Sennheiser GSP670                  << 
3408          * Change order of interfaces loaded  << 
3409          */                                   << 
3410         USB_DEVICE(0x1395, 0x0300),           << 
3411         .bInterfaceClass = USB_CLASS_PER_INTE << 
3412         QUIRK_DRIVER_INFO {                   << 
3413                 QUIRK_DATA_COMPOSITE {        << 
3414                         // Communication      << 
3415                         { QUIRK_DATA_STANDARD << 
3416                         // Recording          << 
3417                         { QUIRK_DATA_STANDARD << 
3418                         // Main               << 
3419                         { QUIRK_DATA_STANDARD << 
3420                         QUIRK_COMPOSITE_END   << 
3421                 }                             << 
3422         }                                     << 
3423 },                                            << 
3424 {                                             << 
3425         /*                                    << 
3426          * Fiero SC-01 (firmware v1.0.0 @ 48  << 
3427          */                                   << 
3428         USB_DEVICE(0x2b53, 0x0023),           << 
3429         QUIRK_DRIVER_INFO {                   << 
3430                 .vendor_name = "Fiero",       << 
3431                 .product_name = "SC-01",      << 
3432                 QUIRK_DATA_COMPOSITE {        << 
3433                         { QUIRK_DATA_STANDARD << 
3434                         /* Playback */        << 
3435                         {                     << 
3436                                 QUIRK_DATA_AU << 
3437                                         .form << 
3438                                         .chan << 
3439                                         .fmt_ << 
3440                                         .ifac << 
3441                                         .alts << 
3442                                         .alts << 
3443                                         .endp << 
3444                                         .ep_a << 
3445                                               << 
3446                                         .rate << 
3447                                         .rate << 
3448                                         .rate << 
3449                                         .nr_r << 
3450                                         .rate << 
3451                                         .cloc << 
3452                                 }             << 
3453                         },                    << 
3454                         /* Capture */         << 
3455                         {                        3944                         {
3456                                 QUIRK_DATA_AU !! 3945                                 .ifnum = -1
3457                                         .form !! 3946                         }
3458                                         .chan << 
3459                                         .fmt_ << 
3460                                         .ifac << 
3461                                         .alts << 
3462                                         .alts << 
3463                                         .endp << 
3464                                         .ep_a << 
3465                                               << 
3466                                               << 
3467                                         .rate << 
3468                                         .rate << 
3469                                         .rate << 
3470                                         .nr_r << 
3471                                         .rate << 
3472                                         .cloc << 
3473                                 }             << 
3474                         },                    << 
3475                         QUIRK_COMPOSITE_END   << 
3476                 }                             << 
3477         }                                     << 
3478 },                                            << 
3479 {                                             << 
3480         /*                                    << 
3481          * Fiero SC-01 (firmware v1.0.0 @ 96  << 
3482          */                                   << 
3483         USB_DEVICE(0x2b53, 0x0024),           << 
3484         QUIRK_DRIVER_INFO {                   << 
3485                 .vendor_name = "Fiero",       << 
3486                 .product_name = "SC-01",      << 
3487                 QUIRK_DATA_COMPOSITE {        << 
3488                         { QUIRK_DATA_STANDARD << 
3489                         /* Playback */        << 
3490                         {                     << 
3491                                 QUIRK_DATA_AU << 
3492                                         .form << 
3493                                         .chan << 
3494                                         .fmt_ << 
3495                                         .ifac << 
3496                                         .alts << 
3497                                         .alts << 
3498                                         .endp << 
3499                                         .ep_a << 
3500                                               << 
3501                                         .rate << 
3502                                         .rate << 
3503                                         .rate << 
3504                                         .nr_r << 
3505                                         .rate << 
3506                                         .cloc << 
3507                                 }             << 
3508                         },                    << 
3509                         /* Capture */         << 
3510                         {                     << 
3511                                 QUIRK_DATA_AU << 
3512                                         .form << 
3513                                         .chan << 
3514                                         .fmt_ << 
3515                                         .ifac << 
3516                                         .alts << 
3517                                         .alts << 
3518                                         .endp << 
3519                                         .ep_a << 
3520                                               << 
3521                                               << 
3522                                         .rate << 
3523                                         .rate << 
3524                                         .rate << 
3525                                         .nr_r << 
3526                                         .rate << 
3527                                         .cloc << 
3528                                 }             << 
3529                         },                    << 
3530                         QUIRK_COMPOSITE_END   << 
3531                 }                             << 
3532         }                                     << 
3533 },                                            << 
3534 {                                             << 
3535         /*                                    << 
3536          * Fiero SC-01 (firmware v1.1.0)      << 
3537          */                                   << 
3538         USB_DEVICE(0x2b53, 0x0031),           << 
3539         QUIRK_DRIVER_INFO {                   << 
3540                 .vendor_name = "Fiero",       << 
3541                 .product_name = "SC-01",      << 
3542                 QUIRK_DATA_COMPOSITE {        << 
3543                         { QUIRK_DATA_STANDARD << 
3544                         /* Playback */        << 
3545                         {                     << 
3546                                 QUIRK_DATA_AU << 
3547                                         .form << 
3548                                         .chan << 
3549                                         .fmt_ << 
3550                                         .ifac << 
3551                                         .alts << 
3552                                         .alts << 
3553                                         .endp << 
3554                                         .ep_a << 
3555                                               << 
3556                                         .rate << 
3557                                               << 
3558                                         .rate << 
3559                                         .rate << 
3560                                         .nr_r << 
3561                                         .rate << 
3562                                         .cloc << 
3563                                 }             << 
3564                         },                    << 
3565                         /* Capture */         << 
3566                         {                     << 
3567                                 QUIRK_DATA_AU << 
3568                                         .form << 
3569                                         .chan << 
3570                                         .fmt_ << 
3571                                         .ifac << 
3572                                         .alts << 
3573                                         .alts << 
3574                                         .endp << 
3575                                         .ep_a << 
3576                                               << 
3577                                               << 
3578                                         .rate << 
3579                                               << 
3580                                         .rate << 
3581                                         .rate << 
3582                                         .nr_r << 
3583                                         .rate << 
3584                                         .cloc << 
3585                                 }             << 
3586                         },                    << 
3587                         QUIRK_COMPOSITE_END   << 
3588                 }                             << 
3589         }                                     << 
3590 },                                            << 
3591 {                                             << 
3592         /* Advanced modes of the Mythware XA0 << 
3593          * For the standard mode, Mythware XA << 
3594          */                                   << 
3595         USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001 << 
3596         QUIRK_DRIVER_INFO {                   << 
3597                 .vendor_name = "Mythware",    << 
3598                 .product_name = "XA001AU",    << 
3599                 QUIRK_DATA_COMPOSITE {        << 
3600                         { QUIRK_DATA_IGNORE(0 << 
3601                         { QUIRK_DATA_STANDARD << 
3602                         { QUIRK_DATA_STANDARD << 
3603                         QUIRK_COMPOSITE_END   << 
3604                 }                             << 
3605         }                                     << 
3606 },                                            << 
3607 {                                             << 
3608         /* Only claim interface 0 */          << 
3609         .match_flags = USB_DEVICE_ID_MATCH_VE << 
3610                        USB_DEVICE_ID_MATCH_PR << 
3611                        USB_DEVICE_ID_MATCH_IN << 
3612                        USB_DEVICE_ID_MATCH_IN << 
3613         .idVendor = 0x2a39,                   << 
3614         .idProduct = 0x3f8c,                  << 
3615         .bInterfaceClass = USB_CLASS_VENDOR_S << 
3616         .bInterfaceNumber = 0,                << 
3617         QUIRK_DRIVER_INFO {                   << 
3618                 QUIRK_DATA_COMPOSITE {        << 
3619                         /*                    << 
3620                          * Three modes depend << 
3621                          * with different cha << 
3622                          */                   << 
3623                         { QUIRK_DATA_STANDARD << 
3624                         {                     << 
3625                                 QUIRK_DATA_AU << 
3626                                         .form << 
3627                                         .chan << 
3628                                         .fmt_ << 
3629                                         .ifac << 
3630                                         .alts << 
3631                                         .alts << 
3632                                         .endp << 
3633                                         .ep_i << 
3634                                         .ep_a << 
3635                                               << 
3636                                         .rate << 
3637                                               << 
3638                                               << 
3639                                         .rate << 
3640                                         .rate << 
3641                                         .nr_r << 
3642                                         .rate << 
3643                                               << 
3644                                         },    << 
3645                                         .sync << 
3646                                         .sync << 
3647                                         .sync << 
3648                                         .sync << 
3649                                         .impl << 
3650                                 },            << 
3651                         },                    << 
3652                         {                     << 
3653                                 QUIRK_DATA_AU << 
3654                                         .form << 
3655                                         .chan << 
3656                                         .fmt_ << 
3657                                         .ifac << 
3658                                         .alts << 
3659                                         .alts << 
3660                                         .endp << 
3661                                         .ep_i << 
3662                                         .ep_a << 
3663                                               << 
3664                                         .rate << 
3665                                               << 
3666                                               << 
3667                                         .rate << 
3668                                         .rate << 
3669                                         .nr_r << 
3670                                         .rate << 
3671                                               << 
3672                                         },    << 
3673                                         .sync << 
3674                                         .sync << 
3675                                         .sync << 
3676                                         .sync << 
3677                                         .impl << 
3678                                 },            << 
3679                         },                    << 
3680                         {                     << 
3681                                 QUIRK_DATA_AU << 
3682                                         .form << 
3683                                         .chan << 
3684                                         .fmt_ << 
3685                                         .ifac << 
3686                                         .alts << 
3687                                         .alts << 
3688                                         .endp << 
3689                                         .ep_i << 
3690                                         .ep_a << 
3691                                               << 
3692                                         .rate << 
3693                                               << 
3694                                               << 
3695                                         .rate << 
3696                                         .rate << 
3697                                         .nr_r << 
3698                                         .rate << 
3699                                               << 
3700                                         },    << 
3701                                         .sync << 
3702                                         .sync << 
3703                                         .sync << 
3704                                         .sync << 
3705                                         .impl << 
3706                                 },            << 
3707                         },                    << 
3708                         {                     << 
3709                                 QUIRK_DATA_AU << 
3710                                         .form << 
3711                                         .chan << 
3712                                         .fmt_ << 
3713                                         .ifac << 
3714                                         .alts << 
3715                                         .alts << 
3716                                         .endp << 
3717                                         .ep_a << 
3718                                               << 
3719                                         .rate << 
3720                                               << 
3721                                               << 
3722                                         .rate << 
3723                                         .rate << 
3724                                         .nr_r << 
3725                                         .rate << 
3726                                               << 
3727                                         }     << 
3728                                 }             << 
3729                         },                    << 
3730                         {                     << 
3731                                 QUIRK_DATA_AU << 
3732                                         .form << 
3733                                         .chan << 
3734                                         .fmt_ << 
3735                                         .ifac << 
3736                                         .alts << 
3737                                         .alts << 
3738                                         .endp << 
3739                                         .ep_a << 
3740                                               << 
3741                                         .rate << 
3742                                               << 
3743                                               << 
3744                                         .rate << 
3745                                         .rate << 
3746                                         .nr_r << 
3747                                         .rate << 
3748                                               << 
3749                                         }     << 
3750                                 }             << 
3751                         },                    << 
3752                         {                     << 
3753                                 QUIRK_DATA_AU << 
3754                                         .form << 
3755                                         .chan << 
3756                                         .fmt_ << 
3757                                         .ifac << 
3758                                         .alts << 
3759                                         .alts << 
3760                                         .endp << 
3761                                         .ep_a << 
3762                                               << 
3763                                         .rate << 
3764                                               << 
3765                                               << 
3766                                         .rate << 
3767                                         .rate << 
3768                                         .nr_r << 
3769                                         .rate << 
3770                                               << 
3771                                         }     << 
3772                                 }             << 
3773                         },                    << 
3774                         QUIRK_COMPOSITE_END   << 
3775                 }                                3947                 }
3776         }                                        3948         }
3777 },                                               3949 },
                                                   >> 3950 
3778 #undef USB_DEVICE_VENDOR_SPEC                    3951 #undef USB_DEVICE_VENDOR_SPEC
3779 #undef USB_AUDIO_DEVICE                          3952 #undef USB_AUDIO_DEVICE
3780                                                  3953 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php