~ [ 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-4.20.17)


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

~ [ 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