0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #define USB_DEVICE_VENDOR_SPEC(vend, prod) \
0021 .match_flags = USB_DEVICE_ID_MATCH_VENDOR | \
0022 USB_DEVICE_ID_MATCH_PRODUCT | \
0023 USB_DEVICE_ID_MATCH_INT_CLASS, \
0024 .idVendor = vend, \
0025 .idProduct = prod, \
0026 .bInterfaceClass = USB_CLASS_VENDOR_SPEC
0027
0028
0029 #define USB_AUDIO_DEVICE(vend, prod) \
0030 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
0031 USB_DEVICE_ID_MATCH_INT_CLASS | \
0032 USB_DEVICE_ID_MATCH_INT_SUBCLASS, \
0033 .idVendor = vend, \
0034 .idProduct = prod, \
0035 .bInterfaceClass = USB_CLASS_AUDIO, \
0036 .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL
0037
0038
0039 {
0040 USB_DEVICE(0x0403, 0xb8d8),
0041 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0042
0043
0044 .ifnum = 0,
0045 .type = QUIRK_MIDI_FTDI
0046 }
0047 },
0048
0049 {
0050
0051 USB_DEVICE(0x041e, 0x0005),
0052 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
0053 .ifnum = 1,
0054 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0055 .data = &(const struct audioformat) {
0056 .formats = SNDRV_PCM_FMTBIT_S16_LE,
0057 .channels = 2,
0058 .iface = 1,
0059 .altsetting = 1,
0060 .altset_idx = 1,
0061 .endpoint = 0x03,
0062 .ep_attr = USB_ENDPOINT_XFER_ISOC,
0063 .attributes = 0,
0064 .rates = SNDRV_PCM_RATE_CONTINUOUS,
0065 .rate_min = 48000,
0066 .rate_max = 48000,
0067 }
0068 }
0069 },
0070
0071
0072 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f02) },
0073
0074 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f04) },
0075
0076 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f0a) },
0077
0078 { USB_DEVICE_VENDOR_SPEC(0x041e, 0x3f19) },
0079
0080
0081
0082
0083
0084
0085
0086 {
0087 USB_AUDIO_DEVICE(0x041e, 0x4095),
0088 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
0089 .ifnum = QUIRK_ANY_INTERFACE,
0090 .type = QUIRK_COMPOSITE,
0091 .data = &(const struct snd_usb_audio_quirk[]) {
0092 {
0093 .ifnum = 2,
0094 .type = QUIRK_AUDIO_STANDARD_MIXER,
0095 },
0096 {
0097 .ifnum = 3,
0098 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0099 .data = &(const struct audioformat) {
0100 .formats = SNDRV_PCM_FMTBIT_S16_LE,
0101 .channels = 2,
0102 .fmt_bits = 16,
0103 .iface = 3,
0104 .altsetting = 4,
0105 .altset_idx = 4,
0106 .endpoint = 0x82,
0107 .ep_attr = 0x05,
0108 .rates = SNDRV_PCM_RATE_48000,
0109 .rate_min = 48000,
0110 .rate_max = 48000,
0111 .nr_rates = 1,
0112 .rate_table = (unsigned int[]) { 48000 },
0113 },
0114 },
0115 {
0116 .ifnum = -1
0117 },
0118 },
0119 },
0120 },
0121
0122
0123
0124
0125
0126
0127 {
0128 USB_DEVICE(0x0424, 0xb832),
0129 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
0130 .vendor_name = "Standard Microsystems Corp.",
0131 .product_name = "HP Wireless Audio",
0132 .ifnum = QUIRK_ANY_INTERFACE,
0133 .type = QUIRK_COMPOSITE,
0134 .data = (const struct snd_usb_audio_quirk[]) {
0135
0136 {
0137 .ifnum = 0,
0138 .type = QUIRK_IGNORE_INTERFACE,
0139 },
0140
0141 {
0142 .ifnum = 1,
0143 .type = QUIRK_IGNORE_INTERFACE,
0144 },
0145
0146 {
0147 .ifnum = 2,
0148 .type = QUIRK_IGNORE_INTERFACE,
0149 },
0150
0151 {
0152 .ifnum = -1,
0153 }
0154 }
0155 }
0156 },
0157
0158
0159
0160
0161
0162 { USB_AUDIO_DEVICE(0x046d, 0x0850) },
0163 { USB_AUDIO_DEVICE(0x046d, 0x08ae) },
0164 { USB_AUDIO_DEVICE(0x046d, 0x08c6) },
0165 { USB_AUDIO_DEVICE(0x046d, 0x08f0) },
0166 { USB_AUDIO_DEVICE(0x046d, 0x08f5) },
0167 { USB_AUDIO_DEVICE(0x046d, 0x08f6) },
0168 { USB_AUDIO_DEVICE(0x046d, 0x0990) },
0169
0170
0171
0172
0173
0174 #define YAMAHA_DEVICE(id, name) { \
0175 USB_DEVICE(0x0499, id), \
0176 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \
0177 .vendor_name = "Yamaha", \
0178 .product_name = name, \
0179 .ifnum = QUIRK_ANY_INTERFACE, \
0180 .type = QUIRK_MIDI_YAMAHA \
0181 } \
0182 }
0183 #define YAMAHA_INTERFACE(id, intf, name) { \
0184 USB_DEVICE_VENDOR_SPEC(0x0499, id), \
0185 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \
0186 .vendor_name = "Yamaha", \
0187 .product_name = name, \
0188 .ifnum = intf, \
0189 .type = QUIRK_MIDI_YAMAHA \
0190 } \
0191 }
0192 YAMAHA_DEVICE(0x1000, "UX256"),
0193 YAMAHA_DEVICE(0x1001, "MU1000"),
0194 YAMAHA_DEVICE(0x1002, "MU2000"),
0195 YAMAHA_DEVICE(0x1003, "MU500"),
0196 YAMAHA_INTERFACE(0x1004, 3, "UW500"),
0197 YAMAHA_DEVICE(0x1005, "MOTIF6"),
0198 YAMAHA_DEVICE(0x1006, "MOTIF7"),
0199 YAMAHA_DEVICE(0x1007, "MOTIF8"),
0200 YAMAHA_DEVICE(0x1008, "UX96"),
0201 YAMAHA_DEVICE(0x1009, "UX16"),
0202 YAMAHA_INTERFACE(0x100a, 3, "EOS BX"),
0203 YAMAHA_DEVICE(0x100c, "UC-MX"),
0204 YAMAHA_DEVICE(0x100d, "UC-KX"),
0205 YAMAHA_DEVICE(0x100e, "S08"),
0206 YAMAHA_DEVICE(0x100f, "CLP-150"),
0207 YAMAHA_DEVICE(0x1010, "CLP-170"),
0208 YAMAHA_DEVICE(0x1011, "P-250"),
0209 YAMAHA_DEVICE(0x1012, "TYROS"),
0210 YAMAHA_DEVICE(0x1013, "PF-500"),
0211 YAMAHA_DEVICE(0x1014, "S90"),
0212 YAMAHA_DEVICE(0x1015, "MOTIF-R"),
0213 YAMAHA_DEVICE(0x1016, "MDP-5"),
0214 YAMAHA_DEVICE(0x1017, "CVP-204"),
0215 YAMAHA_DEVICE(0x1018, "CVP-206"),
0216 YAMAHA_DEVICE(0x1019, "CVP-208"),
0217 YAMAHA_DEVICE(0x101a, "CVP-210"),
0218 YAMAHA_DEVICE(0x101b, "PSR-1100"),
0219 YAMAHA_DEVICE(0x101c, "PSR-2100"),
0220 YAMAHA_DEVICE(0x101d, "CLP-175"),
0221 YAMAHA_DEVICE(0x101e, "PSR-K1"),
0222 YAMAHA_DEVICE(0x101f, "EZ-J24"),
0223 YAMAHA_DEVICE(0x1020, "EZ-250i"),
0224 YAMAHA_DEVICE(0x1021, "MOTIF ES 6"),
0225 YAMAHA_DEVICE(0x1022, "MOTIF ES 7"),
0226 YAMAHA_DEVICE(0x1023, "MOTIF ES 8"),
0227 YAMAHA_DEVICE(0x1024, "CVP-301"),
0228 YAMAHA_DEVICE(0x1025, "CVP-303"),
0229 YAMAHA_DEVICE(0x1026, "CVP-305"),
0230 YAMAHA_DEVICE(0x1027, "CVP-307"),
0231 YAMAHA_DEVICE(0x1028, "CVP-309"),
0232 YAMAHA_DEVICE(0x1029, "CVP-309GP"),
0233 YAMAHA_DEVICE(0x102a, "PSR-1500"),
0234 YAMAHA_DEVICE(0x102b, "PSR-3000"),
0235 YAMAHA_DEVICE(0x102e, "ELS-01/01C"),
0236 YAMAHA_DEVICE(0x1030, "PSR-295/293"),
0237 YAMAHA_DEVICE(0x1031, "DGX-205/203"),
0238 YAMAHA_DEVICE(0x1032, "DGX-305"),
0239 YAMAHA_DEVICE(0x1033, "DGX-505"),
0240 YAMAHA_DEVICE(0x1034, NULL),
0241 YAMAHA_DEVICE(0x1035, NULL),
0242 YAMAHA_DEVICE(0x1036, NULL),
0243 YAMAHA_DEVICE(0x1037, NULL),
0244 YAMAHA_DEVICE(0x1038, NULL),
0245 YAMAHA_DEVICE(0x1039, NULL),
0246 YAMAHA_DEVICE(0x103a, NULL),
0247 YAMAHA_DEVICE(0x103b, NULL),
0248 YAMAHA_DEVICE(0x103c, NULL),
0249 YAMAHA_DEVICE(0x103d, NULL),
0250 YAMAHA_DEVICE(0x103e, NULL),
0251 YAMAHA_DEVICE(0x103f, NULL),
0252 YAMAHA_DEVICE(0x1040, NULL),
0253 YAMAHA_DEVICE(0x1041, NULL),
0254 YAMAHA_DEVICE(0x1042, NULL),
0255 YAMAHA_DEVICE(0x1043, NULL),
0256 YAMAHA_DEVICE(0x1044, NULL),
0257 YAMAHA_DEVICE(0x1045, NULL),
0258 YAMAHA_INTERFACE(0x104e, 0, NULL),
0259 YAMAHA_DEVICE(0x104f, NULL),
0260 YAMAHA_DEVICE(0x1050, NULL),
0261 YAMAHA_DEVICE(0x1051, NULL),
0262 YAMAHA_DEVICE(0x1052, NULL),
0263 YAMAHA_INTERFACE(0x1053, 0, NULL),
0264 YAMAHA_INTERFACE(0x1054, 0, NULL),
0265 YAMAHA_DEVICE(0x1055, NULL),
0266 YAMAHA_DEVICE(0x1056, NULL),
0267 YAMAHA_DEVICE(0x1057, NULL),
0268 YAMAHA_DEVICE(0x1058, NULL),
0269 YAMAHA_DEVICE(0x1059, NULL),
0270 YAMAHA_DEVICE(0x105a, NULL),
0271 YAMAHA_DEVICE(0x105b, NULL),
0272 YAMAHA_DEVICE(0x105c, NULL),
0273 YAMAHA_DEVICE(0x105d, NULL),
0274 {
0275 USB_DEVICE(0x0499, 0x1503),
0276 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0277
0278
0279 .ifnum = QUIRK_ANY_INTERFACE,
0280 .type = QUIRK_COMPOSITE,
0281 .data = (const struct snd_usb_audio_quirk[]) {
0282 {
0283 .ifnum = 1,
0284 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0285 },
0286 {
0287 .ifnum = 2,
0288 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0289 },
0290 {
0291 .ifnum = 3,
0292 .type = QUIRK_MIDI_YAMAHA
0293 },
0294 {
0295 .ifnum = -1
0296 }
0297 }
0298 }
0299 },
0300 {
0301 USB_DEVICE(0x0499, 0x1507),
0302 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0303
0304
0305 .ifnum = QUIRK_ANY_INTERFACE,
0306 .type = QUIRK_COMPOSITE,
0307 .data = (const struct snd_usb_audio_quirk[]) {
0308 {
0309 .ifnum = 1,
0310 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0311 },
0312 {
0313 .ifnum = 2,
0314 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0315 },
0316 {
0317 .ifnum = 3,
0318 .type = QUIRK_MIDI_YAMAHA
0319 },
0320 {
0321 .ifnum = -1
0322 }
0323 }
0324 }
0325 },
0326 {
0327 USB_DEVICE(0x0499, 0x1509),
0328 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0329
0330
0331 .ifnum = QUIRK_ANY_INTERFACE,
0332 .type = QUIRK_COMPOSITE,
0333 .data = (const struct snd_usb_audio_quirk[]) {
0334 {
0335 .ifnum = 1,
0336 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0337 },
0338 {
0339 .ifnum = 2,
0340 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0341 },
0342 {
0343 .ifnum = 3,
0344 .type = QUIRK_MIDI_YAMAHA
0345 },
0346 {
0347 .ifnum = 4,
0348 .type = QUIRK_IGNORE_INTERFACE
0349 },
0350 {
0351 .ifnum = -1
0352 }
0353 }
0354 }
0355 },
0356 {
0357 USB_DEVICE(0x0499, 0x150a),
0358 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0359
0360
0361 .ifnum = QUIRK_ANY_INTERFACE,
0362 .type = QUIRK_COMPOSITE,
0363 .data = (const struct snd_usb_audio_quirk[]) {
0364 {
0365 .ifnum = 1,
0366 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0367 },
0368 {
0369 .ifnum = 2,
0370 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0371 },
0372 {
0373 .ifnum = 3,
0374 .type = QUIRK_MIDI_YAMAHA
0375 },
0376 {
0377 .ifnum = -1
0378 }
0379 }
0380 }
0381 },
0382 {
0383 USB_DEVICE(0x0499, 0x150c),
0384 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0385
0386
0387 .ifnum = QUIRK_ANY_INTERFACE,
0388 .type = QUIRK_COMPOSITE,
0389 .data = (const struct snd_usb_audio_quirk[]) {
0390 {
0391 .ifnum = 1,
0392 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0393 },
0394 {
0395 .ifnum = 2,
0396 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0397 },
0398 {
0399 .ifnum = 3,
0400 .type = QUIRK_MIDI_YAMAHA
0401 },
0402 {
0403 .ifnum = -1
0404 }
0405 }
0406 }
0407 },
0408 YAMAHA_DEVICE(0x2000, "DGP-7"),
0409 YAMAHA_DEVICE(0x2001, "DGP-5"),
0410 YAMAHA_DEVICE(0x2002, NULL),
0411 YAMAHA_DEVICE(0x2003, NULL),
0412 YAMAHA_DEVICE(0x5000, "CS1D"),
0413 YAMAHA_DEVICE(0x5001, "DSP1D"),
0414 YAMAHA_DEVICE(0x5002, "DME32"),
0415 YAMAHA_DEVICE(0x5003, "DM2000"),
0416 YAMAHA_DEVICE(0x5004, "02R96"),
0417 YAMAHA_DEVICE(0x5005, "ACU16-C"),
0418 YAMAHA_DEVICE(0x5006, "NHB32-C"),
0419 YAMAHA_DEVICE(0x5007, "DM1000"),
0420 YAMAHA_DEVICE(0x5008, "01V96"),
0421 YAMAHA_DEVICE(0x5009, "SPX2000"),
0422 YAMAHA_DEVICE(0x500a, "PM5D"),
0423 YAMAHA_DEVICE(0x500b, "DME64N"),
0424 YAMAHA_DEVICE(0x500c, "DME24N"),
0425 YAMAHA_DEVICE(0x500d, NULL),
0426 YAMAHA_DEVICE(0x500e, NULL),
0427 YAMAHA_DEVICE(0x500f, NULL),
0428 YAMAHA_DEVICE(0x7000, "DTX"),
0429 YAMAHA_DEVICE(0x7010, "UB99"),
0430 #undef YAMAHA_DEVICE
0431 #undef YAMAHA_INTERFACE
0432
0433 {
0434 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
0435 USB_DEVICE_ID_MATCH_INT_CLASS,
0436 .idVendor = 0x0499,
0437 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
0438 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
0439 .ifnum = QUIRK_ANY_INTERFACE,
0440 .type = QUIRK_AUTODETECT
0441 }
0442 },
0443
0444
0445
0446
0447 {
0448 USB_DEVICE(0x0582, 0x0000),
0449 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0450 .vendor_name = "Roland",
0451 .product_name = "UA-100",
0452 .ifnum = QUIRK_ANY_INTERFACE,
0453 .type = QUIRK_COMPOSITE,
0454 .data = (const struct snd_usb_audio_quirk[]) {
0455 {
0456 .ifnum = 0,
0457 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0458 .data = & (const struct audioformat) {
0459 .formats = SNDRV_PCM_FMTBIT_S16_LE,
0460 .channels = 4,
0461 .iface = 0,
0462 .altsetting = 1,
0463 .altset_idx = 1,
0464 .attributes = 0,
0465 .endpoint = 0x01,
0466 .ep_attr = 0x09,
0467 .rates = SNDRV_PCM_RATE_CONTINUOUS,
0468 .rate_min = 44100,
0469 .rate_max = 44100,
0470 }
0471 },
0472 {
0473 .ifnum = 1,
0474 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0475 .data = & (const struct audioformat) {
0476 .formats = SNDRV_PCM_FMTBIT_S16_LE,
0477 .channels = 2,
0478 .iface = 1,
0479 .altsetting = 1,
0480 .altset_idx = 1,
0481 .attributes = UAC_EP_CS_ATTR_FILL_MAX,
0482 .endpoint = 0x81,
0483 .ep_attr = 0x05,
0484 .rates = SNDRV_PCM_RATE_CONTINUOUS,
0485 .rate_min = 44100,
0486 .rate_max = 44100,
0487 }
0488 },
0489 {
0490 .ifnum = 2,
0491 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0492 .data = & (const struct snd_usb_midi_endpoint_info) {
0493 .out_cables = 0x0007,
0494 .in_cables = 0x0007
0495 }
0496 },
0497 {
0498 .ifnum = -1
0499 }
0500 }
0501 }
0502 },
0503 {
0504 USB_DEVICE(0x0582, 0x0002),
0505 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0506 .vendor_name = "EDIROL",
0507 .product_name = "UM-4",
0508 .ifnum = QUIRK_ANY_INTERFACE,
0509 .type = QUIRK_COMPOSITE,
0510 .data = (const struct snd_usb_audio_quirk[]) {
0511 {
0512 .ifnum = 0,
0513 .type = QUIRK_IGNORE_INTERFACE
0514 },
0515 {
0516 .ifnum = 1,
0517 .type = QUIRK_IGNORE_INTERFACE
0518 },
0519 {
0520 .ifnum = 2,
0521 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0522 .data = & (const struct snd_usb_midi_endpoint_info) {
0523 .out_cables = 0x000f,
0524 .in_cables = 0x000f
0525 }
0526 },
0527 {
0528 .ifnum = -1
0529 }
0530 }
0531 }
0532 },
0533 {
0534 USB_DEVICE(0x0582, 0x0003),
0535 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0536 .vendor_name = "Roland",
0537 .product_name = "SC-8850",
0538 .ifnum = QUIRK_ANY_INTERFACE,
0539 .type = QUIRK_COMPOSITE,
0540 .data = (const struct snd_usb_audio_quirk[]) {
0541 {
0542 .ifnum = 0,
0543 .type = QUIRK_IGNORE_INTERFACE
0544 },
0545 {
0546 .ifnum = 1,
0547 .type = QUIRK_IGNORE_INTERFACE
0548 },
0549 {
0550 .ifnum = 2,
0551 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0552 .data = & (const struct snd_usb_midi_endpoint_info) {
0553 .out_cables = 0x003f,
0554 .in_cables = 0x003f
0555 }
0556 },
0557 {
0558 .ifnum = -1
0559 }
0560 }
0561 }
0562 },
0563 {
0564 USB_DEVICE(0x0582, 0x0004),
0565 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0566 .vendor_name = "Roland",
0567 .product_name = "U-8",
0568 .ifnum = QUIRK_ANY_INTERFACE,
0569 .type = QUIRK_COMPOSITE,
0570 .data = (const struct snd_usb_audio_quirk[]) {
0571 {
0572 .ifnum = 0,
0573 .type = QUIRK_IGNORE_INTERFACE
0574 },
0575 {
0576 .ifnum = 1,
0577 .type = QUIRK_IGNORE_INTERFACE
0578 },
0579 {
0580 .ifnum = 2,
0581 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0582 .data = & (const struct snd_usb_midi_endpoint_info) {
0583 .out_cables = 0x0005,
0584 .in_cables = 0x0005
0585 }
0586 },
0587 {
0588 .ifnum = -1
0589 }
0590 }
0591 }
0592 },
0593 {
0594
0595
0596 USB_DEVICE(0x0582, 0x0005),
0597 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0598 .vendor_name = "EDIROL",
0599 .product_name = "UM-2",
0600 .ifnum = QUIRK_ANY_INTERFACE,
0601 .type = QUIRK_COMPOSITE,
0602 .data = (const struct snd_usb_audio_quirk[]) {
0603 {
0604 .ifnum = 0,
0605 .type = QUIRK_IGNORE_INTERFACE
0606 },
0607 {
0608 .ifnum = 1,
0609 .type = QUIRK_IGNORE_INTERFACE
0610 },
0611 {
0612 .ifnum = 2,
0613 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0614 .data = & (const struct snd_usb_midi_endpoint_info) {
0615 .out_cables = 0x0003,
0616 .in_cables = 0x0003
0617 }
0618 },
0619 {
0620 .ifnum = -1
0621 }
0622 }
0623 }
0624 },
0625 {
0626 USB_DEVICE(0x0582, 0x0007),
0627 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0628 .vendor_name = "Roland",
0629 .product_name = "SC-8820",
0630 .ifnum = QUIRK_ANY_INTERFACE,
0631 .type = QUIRK_COMPOSITE,
0632 .data = (const struct snd_usb_audio_quirk[]) {
0633 {
0634 .ifnum = 0,
0635 .type = QUIRK_IGNORE_INTERFACE
0636 },
0637 {
0638 .ifnum = 1,
0639 .type = QUIRK_IGNORE_INTERFACE
0640 },
0641 {
0642 .ifnum = 2,
0643 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0644 .data = & (const struct snd_usb_midi_endpoint_info) {
0645 .out_cables = 0x0013,
0646 .in_cables = 0x0013
0647 }
0648 },
0649 {
0650 .ifnum = -1
0651 }
0652 }
0653 }
0654 },
0655 {
0656 USB_DEVICE(0x0582, 0x0008),
0657 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0658 .vendor_name = "Roland",
0659 .product_name = "PC-300",
0660 .ifnum = QUIRK_ANY_INTERFACE,
0661 .type = QUIRK_COMPOSITE,
0662 .data = (const struct snd_usb_audio_quirk[]) {
0663 {
0664 .ifnum = 0,
0665 .type = QUIRK_IGNORE_INTERFACE
0666 },
0667 {
0668 .ifnum = 1,
0669 .type = QUIRK_IGNORE_INTERFACE
0670 },
0671 {
0672 .ifnum = 2,
0673 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0674 .data = & (const struct snd_usb_midi_endpoint_info) {
0675 .out_cables = 0x0001,
0676 .in_cables = 0x0001
0677 }
0678 },
0679 {
0680 .ifnum = -1
0681 }
0682 }
0683 }
0684 },
0685 {
0686
0687 USB_DEVICE(0x0582, 0x0009),
0688 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0689 .vendor_name = "EDIROL",
0690 .product_name = "UM-1",
0691 .ifnum = QUIRK_ANY_INTERFACE,
0692 .type = QUIRK_COMPOSITE,
0693 .data = (const struct snd_usb_audio_quirk[]) {
0694 {
0695 .ifnum = 0,
0696 .type = QUIRK_IGNORE_INTERFACE
0697 },
0698 {
0699 .ifnum = 1,
0700 .type = QUIRK_IGNORE_INTERFACE
0701 },
0702 {
0703 .ifnum = 2,
0704 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0705 .data = & (const struct snd_usb_midi_endpoint_info) {
0706 .out_cables = 0x0001,
0707 .in_cables = 0x0001
0708 }
0709 },
0710 {
0711 .ifnum = -1
0712 }
0713 }
0714 }
0715 },
0716 {
0717 USB_DEVICE(0x0582, 0x000b),
0718 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0719 .vendor_name = "Roland",
0720 .product_name = "SK-500",
0721 .ifnum = QUIRK_ANY_INTERFACE,
0722 .type = QUIRK_COMPOSITE,
0723 .data = (const struct snd_usb_audio_quirk[]) {
0724 {
0725 .ifnum = 0,
0726 .type = QUIRK_IGNORE_INTERFACE
0727 },
0728 {
0729 .ifnum = 1,
0730 .type = QUIRK_IGNORE_INTERFACE
0731 },
0732 {
0733 .ifnum = 2,
0734 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0735 .data = & (const struct snd_usb_midi_endpoint_info) {
0736 .out_cables = 0x0013,
0737 .in_cables = 0x0013
0738 }
0739 },
0740 {
0741 .ifnum = -1
0742 }
0743 }
0744 }
0745 },
0746 {
0747
0748
0749 USB_DEVICE(0x0582, 0x000c),
0750 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0751 .vendor_name = "Roland",
0752 .product_name = "SC-D70",
0753 .ifnum = QUIRK_ANY_INTERFACE,
0754 .type = QUIRK_COMPOSITE,
0755 .data = (const struct snd_usb_audio_quirk[]) {
0756 {
0757 .ifnum = 0,
0758 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0759 },
0760 {
0761 .ifnum = 1,
0762 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0763 },
0764 {
0765 .ifnum = 2,
0766 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0767 .data = & (const struct snd_usb_midi_endpoint_info) {
0768 .out_cables = 0x0007,
0769 .in_cables = 0x0007
0770 }
0771 },
0772 {
0773 .ifnum = -1
0774 }
0775 }
0776 }
0777 },
0778 {
0779
0780
0781
0782
0783
0784
0785
0786
0787 USB_DEVICE(0x0582, 0x0010),
0788 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0789 .vendor_name = "EDIROL",
0790 .product_name = "UA-5",
0791 .ifnum = QUIRK_ANY_INTERFACE,
0792 .type = QUIRK_COMPOSITE,
0793 .data = (const struct snd_usb_audio_quirk[]) {
0794 {
0795 .ifnum = 1,
0796 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0797 },
0798 {
0799 .ifnum = 2,
0800 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0801 },
0802 {
0803 .ifnum = -1
0804 }
0805 }
0806 }
0807 },
0808 {
0809
0810 USB_DEVICE(0x0582, 0x0012),
0811 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0812 .vendor_name = "Roland",
0813 .product_name = "XV-5050",
0814 .ifnum = 0,
0815 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0816 .data = & (const struct snd_usb_midi_endpoint_info) {
0817 .out_cables = 0x0001,
0818 .in_cables = 0x0001
0819 }
0820 }
0821 },
0822 {
0823
0824 USB_DEVICE(0x0582, 0x0014),
0825 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0826 .vendor_name = "EDIROL",
0827 .product_name = "UM-880",
0828 .ifnum = 0,
0829 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0830 .data = & (const struct snd_usb_midi_endpoint_info) {
0831 .out_cables = 0x01ff,
0832 .in_cables = 0x01ff
0833 }
0834 }
0835 },
0836 {
0837
0838 USB_DEVICE(0x0582, 0x0016),
0839 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0840 .vendor_name = "EDIROL",
0841 .product_name = "SD-90",
0842 .ifnum = QUIRK_ANY_INTERFACE,
0843 .type = QUIRK_COMPOSITE,
0844 .data = (const struct snd_usb_audio_quirk[]) {
0845 {
0846 .ifnum = 0,
0847 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0848 },
0849 {
0850 .ifnum = 1,
0851 .type = QUIRK_AUDIO_STANDARD_INTERFACE
0852 },
0853 {
0854 .ifnum = 2,
0855 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0856 .data = & (const struct snd_usb_midi_endpoint_info) {
0857 .out_cables = 0x000f,
0858 .in_cables = 0x000f
0859 }
0860 },
0861 {
0862 .ifnum = -1
0863 }
0864 }
0865 }
0866 },
0867 {
0868
0869 USB_DEVICE(0x0582, 0x001b),
0870 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0871 .vendor_name = "Roland",
0872 .product_name = "MMP-2",
0873 .ifnum = QUIRK_ANY_INTERFACE,
0874 .type = QUIRK_COMPOSITE,
0875 .data = (const struct snd_usb_audio_quirk[]) {
0876 {
0877 .ifnum = 0,
0878 .type = QUIRK_IGNORE_INTERFACE
0879 },
0880 {
0881 .ifnum = 1,
0882 .type = QUIRK_IGNORE_INTERFACE
0883 },
0884 {
0885 .ifnum = 2,
0886 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0887 .data = & (const struct snd_usb_midi_endpoint_info) {
0888 .out_cables = 0x0001,
0889 .in_cables = 0x0001
0890 }
0891 },
0892 {
0893 .ifnum = -1
0894 }
0895 }
0896 }
0897 },
0898 {
0899
0900 USB_DEVICE(0x0582, 0x001d),
0901 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0902 .vendor_name = "Roland",
0903 .product_name = "V-SYNTH",
0904 .ifnum = 0,
0905 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0906 .data = & (const struct snd_usb_midi_endpoint_info) {
0907 .out_cables = 0x0001,
0908 .in_cables = 0x0001
0909 }
0910 }
0911 },
0912 {
0913
0914 USB_DEVICE(0x0582, 0x0023),
0915 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0916 .vendor_name = "EDIROL",
0917 .product_name = "UM-550",
0918 .ifnum = 0,
0919 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0920 .data = & (const struct snd_usb_midi_endpoint_info) {
0921 .out_cables = 0x003f,
0922 .in_cables = 0x003f
0923 }
0924 }
0925 },
0926 {
0927
0928
0929
0930
0931
0932 USB_DEVICE(0x0582, 0x0025),
0933 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0934 .vendor_name = "EDIROL",
0935 .product_name = "UA-20",
0936 .ifnum = QUIRK_ANY_INTERFACE,
0937 .type = QUIRK_COMPOSITE,
0938 .data = (const struct snd_usb_audio_quirk[]) {
0939 {
0940 .ifnum = 0,
0941 .type = QUIRK_IGNORE_INTERFACE
0942 },
0943 {
0944 .ifnum = 1,
0945 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0946 .data = & (const struct audioformat) {
0947 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
0948 .channels = 2,
0949 .iface = 1,
0950 .altsetting = 1,
0951 .altset_idx = 1,
0952 .attributes = 0,
0953 .endpoint = 0x01,
0954 .ep_attr = 0x01,
0955 .rates = SNDRV_PCM_RATE_CONTINUOUS,
0956 .rate_min = 44100,
0957 .rate_max = 44100,
0958 }
0959 },
0960 {
0961 .ifnum = 2,
0962 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
0963 .data = & (const struct audioformat) {
0964 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
0965 .channels = 2,
0966 .iface = 2,
0967 .altsetting = 1,
0968 .altset_idx = 1,
0969 .attributes = 0,
0970 .endpoint = 0x82,
0971 .ep_attr = 0x01,
0972 .rates = SNDRV_PCM_RATE_CONTINUOUS,
0973 .rate_min = 44100,
0974 .rate_max = 44100,
0975 }
0976 },
0977 {
0978 .ifnum = 3,
0979 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0980 .data = & (const struct snd_usb_midi_endpoint_info) {
0981 .out_cables = 0x0001,
0982 .in_cables = 0x0001
0983 }
0984 },
0985 {
0986 .ifnum = -1
0987 }
0988 }
0989 }
0990 },
0991 {
0992
0993 USB_DEVICE(0x0582, 0x0027),
0994 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
0995 .vendor_name = "EDIROL",
0996 .product_name = "SD-20",
0997 .ifnum = 0,
0998 .type = QUIRK_MIDI_FIXED_ENDPOINT,
0999 .data = & (const struct snd_usb_midi_endpoint_info) {
1000 .out_cables = 0x0003,
1001 .in_cables = 0x0007
1002 }
1003 }
1004 },
1005 {
1006
1007 USB_DEVICE(0x0582, 0x0029),
1008 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1009 .vendor_name = "EDIROL",
1010 .product_name = "SD-80",
1011 .ifnum = 0,
1012 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1013 .data = & (const struct snd_usb_midi_endpoint_info) {
1014 .out_cables = 0x000f,
1015 .in_cables = 0x000f
1016 }
1017 }
1018 },
1019 {
1020
1021
1022
1023
1024
1025 USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b),
1026 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1027 .vendor_name = "EDIROL",
1028 .product_name = "UA-700",
1029 .ifnum = QUIRK_ANY_INTERFACE,
1030 .type = QUIRK_COMPOSITE,
1031 .data = (const struct snd_usb_audio_quirk[]) {
1032 {
1033 .ifnum = 1,
1034 .type = QUIRK_AUDIO_EDIROL_UAXX
1035 },
1036 {
1037 .ifnum = 2,
1038 .type = QUIRK_AUDIO_EDIROL_UAXX
1039 },
1040 {
1041 .ifnum = 3,
1042 .type = QUIRK_AUDIO_EDIROL_UAXX
1043 },
1044 {
1045 .ifnum = -1
1046 }
1047 }
1048 }
1049 },
1050 {
1051
1052 USB_DEVICE(0x0582, 0x002d),
1053 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1054 .vendor_name = "Roland",
1055 .product_name = "XV-2020",
1056 .ifnum = 0,
1057 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1058 .data = & (const struct snd_usb_midi_endpoint_info) {
1059 .out_cables = 0x0001,
1060 .in_cables = 0x0001
1061 }
1062 }
1063 },
1064 {
1065
1066 USB_DEVICE(0x0582, 0x002f),
1067 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1068 .vendor_name = "Roland",
1069 .product_name = "VariOS",
1070 .ifnum = 0,
1071 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1072 .data = & (const struct snd_usb_midi_endpoint_info) {
1073 .out_cables = 0x0007,
1074 .in_cables = 0x0007
1075 }
1076 }
1077 },
1078 {
1079
1080 USB_DEVICE(0x0582, 0x0033),
1081 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1082 .vendor_name = "EDIROL",
1083 .product_name = "PCR",
1084 .ifnum = 0,
1085 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1086 .data = & (const struct snd_usb_midi_endpoint_info) {
1087 .out_cables = 0x0003,
1088 .in_cables = 0x0007
1089 }
1090 }
1091 },
1092 {
1093
1094
1095
1096
1097 USB_DEVICE(0x0582, 0x0037),
1098 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1099 .vendor_name = "Roland",
1100 .product_name = "Digital Piano",
1101 .ifnum = 0,
1102 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1103 .data = & (const struct snd_usb_midi_endpoint_info) {
1104 .out_cables = 0x0001,
1105 .in_cables = 0x0001
1106 }
1107 }
1108 },
1109 {
1110
1111
1112
1113
1114
1115 USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b),
1116 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1117 .vendor_name = "BOSS",
1118 .product_name = "GS-10",
1119 .ifnum = QUIRK_ANY_INTERFACE,
1120 .type = QUIRK_COMPOSITE,
1121 .data = & (const struct snd_usb_audio_quirk[]) {
1122 {
1123 .ifnum = 1,
1124 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1125 },
1126 {
1127 .ifnum = 2,
1128 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1129 },
1130 {
1131 .ifnum = 3,
1132 .type = QUIRK_MIDI_STANDARD_INTERFACE
1133 },
1134 {
1135 .ifnum = -1
1136 }
1137 }
1138 }
1139 },
1140 {
1141
1142 USB_DEVICE(0x0582, 0x0040),
1143 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1144 .vendor_name = "Roland",
1145 .product_name = "GI-20",
1146 .ifnum = 0,
1147 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1148 .data = & (const struct snd_usb_midi_endpoint_info) {
1149 .out_cables = 0x0001,
1150 .in_cables = 0x0001
1151 }
1152 }
1153 },
1154 {
1155
1156 USB_DEVICE(0x0582, 0x0042),
1157 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1158 .vendor_name = "Roland",
1159 .product_name = "RS-70",
1160 .ifnum = 0,
1161 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1162 .data = & (const struct snd_usb_midi_endpoint_info) {
1163 .out_cables = 0x0001,
1164 .in_cables = 0x0001
1165 }
1166 }
1167 },
1168 {
1169
1170 USB_DEVICE(0x0582, 0x0047),
1171 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1172
1173
1174 .ifnum = QUIRK_ANY_INTERFACE,
1175 .type = QUIRK_COMPOSITE,
1176 .data = (const struct snd_usb_audio_quirk[]) {
1177
1178 {
1179 .ifnum = 1,
1180 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1181 },
1182 {
1183 .ifnum = 2,
1184 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1185 },
1186 {
1187 .ifnum = -1
1188 }
1189 }
1190 }
1191 },
1192 {
1193
1194 USB_DEVICE(0x0582, 0x0048),
1195 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1196
1197
1198 .ifnum = 0,
1199 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1200 .data = & (const struct snd_usb_midi_endpoint_info) {
1201 .out_cables = 0x0003,
1202 .in_cables = 0x0007
1203 }
1204 }
1205 },
1206 {
1207
1208 USB_DEVICE(0x0582, 0x004c),
1209 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1210 .vendor_name = "EDIROL",
1211 .product_name = "PCR-A",
1212 .ifnum = QUIRK_ANY_INTERFACE,
1213 .type = QUIRK_COMPOSITE,
1214 .data = (const struct snd_usb_audio_quirk[]) {
1215 {
1216 .ifnum = 1,
1217 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1218 },
1219 {
1220 .ifnum = 2,
1221 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1222 },
1223 {
1224 .ifnum = -1
1225 }
1226 }
1227 }
1228 },
1229 {
1230
1231 USB_DEVICE(0x0582, 0x004d),
1232 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1233 .vendor_name = "EDIROL",
1234 .product_name = "PCR-A",
1235 .ifnum = 0,
1236 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1237 .data = & (const struct snd_usb_midi_endpoint_info) {
1238 .out_cables = 0x0003,
1239 .in_cables = 0x0007
1240 }
1241 }
1242 },
1243 {
1244
1245
1246
1247
1248 USB_DEVICE(0x0582, 0x0050),
1249 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1250 .vendor_name = "EDIROL",
1251 .product_name = "UA-3FX",
1252 .ifnum = QUIRK_ANY_INTERFACE,
1253 .type = QUIRK_COMPOSITE,
1254 .data = (const struct snd_usb_audio_quirk[]) {
1255 {
1256 .ifnum = 1,
1257 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1258 },
1259 {
1260 .ifnum = 2,
1261 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1262 },
1263 {
1264 .ifnum = -1
1265 }
1266 }
1267 }
1268 },
1269 {
1270 USB_DEVICE(0x0582, 0x0052),
1271 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1272 .vendor_name = "EDIROL",
1273 .product_name = "UM-1SX",
1274 .ifnum = 0,
1275 .type = QUIRK_MIDI_STANDARD_INTERFACE
1276 }
1277 },
1278 {
1279 USB_DEVICE(0x0582, 0x0060),
1280 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1281 .vendor_name = "Roland",
1282 .product_name = "EXR Series",
1283 .ifnum = 0,
1284 .type = QUIRK_MIDI_STANDARD_INTERFACE
1285 }
1286 },
1287 {
1288
1289 USB_DEVICE(0x0582, 0x0064),
1290 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1291
1292
1293 .ifnum = QUIRK_ANY_INTERFACE,
1294 .type = QUIRK_COMPOSITE,
1295 .data = (const struct snd_usb_audio_quirk[]) {
1296 {
1297 .ifnum = 1,
1298 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1299 },
1300 {
1301 .ifnum = 2,
1302 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1303 },
1304 {
1305 .ifnum = -1
1306 }
1307 }
1308 }
1309 },
1310 {
1311
1312 USB_DEVICE(0x0582, 0x0065),
1313 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1314
1315
1316 .ifnum = 0,
1317 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1318 .data = & (const struct snd_usb_midi_endpoint_info) {
1319 .out_cables = 0x0001,
1320 .in_cables = 0x0003
1321 }
1322 }
1323 },
1324 {
1325
1326 USB_DEVICE(0x0582, 0x006d),
1327 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1328 .vendor_name = "Roland",
1329 .product_name = "FANTOM-X",
1330 .ifnum = 0,
1331 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1332 .data = & (const struct snd_usb_midi_endpoint_info) {
1333 .out_cables = 0x0001,
1334 .in_cables = 0x0001
1335 }
1336 }
1337 },
1338 {
1339
1340
1341
1342
1343
1344 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074),
1345 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1346 .vendor_name = "EDIROL",
1347 .product_name = "UA-25",
1348 .ifnum = QUIRK_ANY_INTERFACE,
1349 .type = QUIRK_COMPOSITE,
1350 .data = (const struct snd_usb_audio_quirk[]) {
1351 {
1352 .ifnum = 0,
1353 .type = QUIRK_AUDIO_EDIROL_UAXX
1354 },
1355 {
1356 .ifnum = 1,
1357 .type = QUIRK_AUDIO_EDIROL_UAXX
1358 },
1359 {
1360 .ifnum = 2,
1361 .type = QUIRK_AUDIO_EDIROL_UAXX
1362 },
1363 {
1364 .ifnum = -1
1365 }
1366 }
1367 }
1368 },
1369 {
1370
1371 USB_DEVICE(0x0582, 0x0075),
1372 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1373 .vendor_name = "BOSS",
1374 .product_name = "DR-880",
1375 .ifnum = 0,
1376 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1377 .data = & (const struct snd_usb_midi_endpoint_info) {
1378 .out_cables = 0x0001,
1379 .in_cables = 0x0001
1380 }
1381 }
1382 },
1383 {
1384
1385 USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a),
1386 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1387 .vendor_name = "Roland",
1388
1389 .ifnum = 0,
1390 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1391 .data = & (const struct snd_usb_midi_endpoint_info) {
1392 .out_cables = 0x0003,
1393 .in_cables = 0x0003
1394 }
1395 }
1396 },
1397 {
1398
1399 USB_DEVICE(0x0582, 0x0080),
1400 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1401 .vendor_name = "Roland",
1402 .product_name = "G-70",
1403 .ifnum = 0,
1404 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1405 .data = & (const struct snd_usb_midi_endpoint_info) {
1406 .out_cables = 0x0001,
1407 .in_cables = 0x0001
1408 }
1409 }
1410 },
1411 {
1412
1413 USB_DEVICE(0x0582, 0x008b),
1414 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1415 .vendor_name = "EDIROL",
1416 .product_name = "PC-50",
1417 .ifnum = 0,
1418 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1419 .data = & (const struct snd_usb_midi_endpoint_info) {
1420 .out_cables = 0x0001,
1421 .in_cables = 0x0001
1422 }
1423 }
1424 },
1425 {
1426
1427
1428
1429
1430 USB_DEVICE(0x0582, 0x00a3),
1431 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1432 .vendor_name = "EDIROL",
1433 .product_name = "UA-4FX",
1434 .ifnum = QUIRK_ANY_INTERFACE,
1435 .type = QUIRK_COMPOSITE,
1436 .data = (const struct snd_usb_audio_quirk[]) {
1437 {
1438 .ifnum = 0,
1439 .type = QUIRK_AUDIO_EDIROL_UAXX
1440 },
1441 {
1442 .ifnum = 1,
1443 .type = QUIRK_AUDIO_EDIROL_UAXX
1444 },
1445 {
1446 .ifnum = 2,
1447 .type = QUIRK_AUDIO_EDIROL_UAXX
1448 },
1449 {
1450 .ifnum = -1
1451 }
1452 }
1453 }
1454 },
1455 {
1456
1457 USB_DEVICE(0x0582, 0x00c4),
1458 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1459 .ifnum = QUIRK_ANY_INTERFACE,
1460 .type = QUIRK_COMPOSITE,
1461 .data = (const struct snd_usb_audio_quirk[]) {
1462 {
1463 .ifnum = 0,
1464 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1465 },
1466 {
1467 .ifnum = 1,
1468 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1469 },
1470 {
1471 .ifnum = 2,
1472 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1473 .data = & (const struct snd_usb_midi_endpoint_info) {
1474 .out_cables = 0x0001,
1475 .in_cables = 0x0001
1476 }
1477 },
1478 {
1479 .ifnum = -1
1480 }
1481 }
1482 }
1483 },
1484 {
1485
1486
1487
1488
1489 USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6),
1490 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1491 .vendor_name = "EDIROL",
1492 .product_name = "UA-25EX",
1493 .ifnum = QUIRK_ANY_INTERFACE,
1494 .type = QUIRK_COMPOSITE,
1495 .data = (const struct snd_usb_audio_quirk[]) {
1496 {
1497 .ifnum = 0,
1498 .type = QUIRK_AUDIO_EDIROL_UAXX
1499 },
1500 {
1501 .ifnum = 1,
1502 .type = QUIRK_AUDIO_EDIROL_UAXX
1503 },
1504 {
1505 .ifnum = 2,
1506 .type = QUIRK_AUDIO_EDIROL_UAXX
1507 },
1508 {
1509 .ifnum = -1
1510 }
1511 }
1512 }
1513 },
1514 {
1515
1516 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108),
1517 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1518 .ifnum = 0,
1519 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1520 .data = & (const struct snd_usb_midi_endpoint_info) {
1521 .out_cables = 0x0007,
1522 .in_cables = 0x0007
1523 }
1524 }
1525 },
1526 {
1527
1528 USB_DEVICE(0x0582, 0x0113),
1529 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1530 .ifnum = QUIRK_ANY_INTERFACE,
1531 .type = QUIRK_COMPOSITE,
1532 .data = (const struct snd_usb_audio_quirk[]) {
1533 {
1534 .ifnum = 0,
1535 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1536 },
1537 {
1538 .ifnum = 1,
1539 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1540 },
1541 {
1542 .ifnum = 2,
1543 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1544 .data = & (const struct snd_usb_midi_endpoint_info) {
1545 .out_cables = 0x0001,
1546 .in_cables = 0x0001
1547 }
1548 },
1549 {
1550 .ifnum = -1
1551 }
1552 }
1553 }
1554 },
1555 {
1556
1557 USB_DEVICE(0x0582, 0x0120),
1558 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1559
1560
1561 .ifnum = QUIRK_ANY_INTERFACE,
1562 .type = QUIRK_COMPOSITE,
1563 .data = (const struct snd_usb_audio_quirk[]) {
1564 {
1565 .ifnum = 0,
1566 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1567 .data = & (const struct audioformat) {
1568 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1569 .channels = 10,
1570 .iface = 0,
1571 .altsetting = 1,
1572 .altset_idx = 1,
1573 .endpoint = 0x05,
1574 .ep_attr = 0x05,
1575 .rates = SNDRV_PCM_RATE_44100,
1576 .rate_min = 44100,
1577 .rate_max = 44100,
1578 .nr_rates = 1,
1579 .rate_table = (unsigned int[]) { 44100 }
1580 }
1581 },
1582 {
1583 .ifnum = 1,
1584 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1585 .data = & (const struct audioformat) {
1586 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1587 .channels = 12,
1588 .iface = 1,
1589 .altsetting = 1,
1590 .altset_idx = 1,
1591 .endpoint = 0x85,
1592 .ep_attr = 0x25,
1593 .rates = SNDRV_PCM_RATE_44100,
1594 .rate_min = 44100,
1595 .rate_max = 44100,
1596 .nr_rates = 1,
1597 .rate_table = (unsigned int[]) { 44100 }
1598 }
1599 },
1600 {
1601 .ifnum = 2,
1602 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1603 .data = & (const struct snd_usb_midi_endpoint_info) {
1604 .out_cables = 0x0001,
1605 .in_cables = 0x0001
1606 }
1607 },
1608 {
1609 .ifnum = 3,
1610 .type = QUIRK_IGNORE_INTERFACE
1611 },
1612 {
1613 .ifnum = 4,
1614 .type = QUIRK_IGNORE_INTERFACE
1615 },
1616 {
1617 .ifnum = -1
1618 }
1619 }
1620 }
1621 },
1622 {
1623
1624 USB_DEVICE(0x0582, 0x012f),
1625 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1626
1627
1628 .ifnum = QUIRK_ANY_INTERFACE,
1629 .type = QUIRK_COMPOSITE,
1630 .data = (const struct snd_usb_audio_quirk[]) {
1631 {
1632 .ifnum = 0,
1633 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1634 .data = & (const struct audioformat) {
1635 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1636 .channels = 4,
1637 .iface = 0,
1638 .altsetting = 1,
1639 .altset_idx = 1,
1640 .endpoint = 0x05,
1641 .ep_attr = 0x05,
1642 .rates = SNDRV_PCM_RATE_44100,
1643 .rate_min = 44100,
1644 .rate_max = 44100,
1645 .nr_rates = 1,
1646 .rate_table = (unsigned int[]) { 44100 }
1647 }
1648 },
1649 {
1650 .ifnum = 1,
1651 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
1652 .data = & (const struct audioformat) {
1653 .formats = SNDRV_PCM_FMTBIT_S32_LE,
1654 .channels = 6,
1655 .iface = 1,
1656 .altsetting = 1,
1657 .altset_idx = 1,
1658 .endpoint = 0x85,
1659 .ep_attr = 0x25,
1660 .rates = SNDRV_PCM_RATE_44100,
1661 .rate_min = 44100,
1662 .rate_max = 44100,
1663 .nr_rates = 1,
1664 .rate_table = (unsigned int[]) { 44100 }
1665 }
1666 },
1667 {
1668 .ifnum = 2,
1669 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1670 .data = & (const struct snd_usb_midi_endpoint_info) {
1671 .out_cables = 0x0001,
1672 .in_cables = 0x0001
1673 }
1674 },
1675 {
1676 .ifnum = 3,
1677 .type = QUIRK_IGNORE_INTERFACE
1678 },
1679 {
1680 .ifnum = 4,
1681 .type = QUIRK_IGNORE_INTERFACE
1682 },
1683 {
1684 .ifnum = -1
1685 }
1686 }
1687 }
1688 },
1689 {
1690 USB_DEVICE(0x0582, 0x0159),
1691 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1692
1693
1694 .ifnum = QUIRK_ANY_INTERFACE,
1695 .type = QUIRK_COMPOSITE,
1696 .data = (const struct snd_usb_audio_quirk[]) {
1697 {
1698 .ifnum = 0,
1699 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1700 },
1701 {
1702 .ifnum = 1,
1703 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1704 },
1705 {
1706 .ifnum = 2,
1707 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1708 .data = & (const struct snd_usb_midi_endpoint_info) {
1709 .out_cables = 0x0001,
1710 .in_cables = 0x0001
1711 }
1712 },
1713 {
1714 .ifnum = -1
1715 }
1716 }
1717 }
1718 },
1719
1720
1721 {
1722 USB_DEVICE(0x0582, 0x0044),
1723 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1724 .ifnum = QUIRK_NODEV_INTERFACE
1725 },
1726 },
1727 {
1728 USB_DEVICE(0x0582, 0x007d),
1729 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1730 .ifnum = QUIRK_NODEV_INTERFACE
1731 },
1732 },
1733 {
1734 USB_DEVICE(0x0582, 0x008d),
1735 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1736 .ifnum = QUIRK_NODEV_INTERFACE
1737 },
1738 },
1739
1740
1741 {
1742 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
1743 USB_DEVICE_ID_MATCH_INT_CLASS,
1744 .idVendor = 0x0582,
1745 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
1746 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
1747 .ifnum = QUIRK_ANY_INTERFACE,
1748 .type = QUIRK_AUTODETECT
1749 }
1750 },
1751
1752
1753 {
1754
1755
1756
1757
1758
1759
1760 USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000),
1761 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1762 .vendor_name = "Hercules",
1763 .product_name = "DJ Console (WE)",
1764 .ifnum = 4,
1765 .type = QUIRK_MIDI_FIXED_ENDPOINT,
1766 .data = & (const struct snd_usb_midi_endpoint_info) {
1767 .out_cables = 0x0001,
1768 .in_cables = 0x0001
1769 }
1770 }
1771 },
1772
1773
1774 {
1775 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002),
1776 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1777 .vendor_name = "M-Audio",
1778 .product_name = "MidiSport 2x2",
1779 .ifnum = QUIRK_ANY_INTERFACE,
1780 .type = QUIRK_MIDI_MIDIMAN,
1781 .data = & (const struct snd_usb_midi_endpoint_info) {
1782 .out_cables = 0x0003,
1783 .in_cables = 0x0003
1784 }
1785 }
1786 },
1787 {
1788 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011),
1789 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1790 .vendor_name = "M-Audio",
1791 .product_name = "MidiSport 1x1",
1792 .ifnum = QUIRK_ANY_INTERFACE,
1793 .type = QUIRK_MIDI_MIDIMAN,
1794 .data = & (const struct snd_usb_midi_endpoint_info) {
1795 .out_cables = 0x0001,
1796 .in_cables = 0x0001
1797 }
1798 }
1799 },
1800 {
1801 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015),
1802 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1803 .vendor_name = "M-Audio",
1804 .product_name = "Keystation",
1805 .ifnum = QUIRK_ANY_INTERFACE,
1806 .type = QUIRK_MIDI_MIDIMAN,
1807 .data = & (const struct snd_usb_midi_endpoint_info) {
1808 .out_cables = 0x0001,
1809 .in_cables = 0x0001
1810 }
1811 }
1812 },
1813 {
1814 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021),
1815 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1816 .vendor_name = "M-Audio",
1817 .product_name = "MidiSport 4x4",
1818 .ifnum = QUIRK_ANY_INTERFACE,
1819 .type = QUIRK_MIDI_MIDIMAN,
1820 .data = & (const struct snd_usb_midi_endpoint_info) {
1821 .out_cables = 0x000f,
1822 .in_cables = 0x000f
1823 }
1824 }
1825 },
1826 {
1827
1828
1829
1830
1831
1832 USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109),
1833 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1834 .vendor_name = "M-Audio",
1835 .product_name = "MidiSport 8x8",
1836 .ifnum = QUIRK_ANY_INTERFACE,
1837 .type = QUIRK_MIDI_MIDIMAN,
1838 .data = & (const struct snd_usb_midi_endpoint_info) {
1839 .out_cables = 0x01ff,
1840 .in_cables = 0x01ff
1841 }
1842 }
1843 },
1844 {
1845 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033),
1846 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1847 .vendor_name = "M-Audio",
1848 .product_name = "MidiSport 8x8",
1849 .ifnum = QUIRK_ANY_INTERFACE,
1850 .type = QUIRK_MIDI_MIDIMAN,
1851 .data = & (const struct snd_usb_midi_endpoint_info) {
1852 .out_cables = 0x01ff,
1853 .in_cables = 0x01ff
1854 }
1855 }
1856 },
1857 {
1858 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041),
1859 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1860 .vendor_name = "M-Audio",
1861 .product_name = "MidiSport 2x4",
1862 .ifnum = QUIRK_ANY_INTERFACE,
1863 .type = QUIRK_MIDI_MIDIMAN,
1864 .data = & (const struct snd_usb_midi_endpoint_info) {
1865 .out_cables = 0x000f,
1866 .in_cables = 0x0003
1867 }
1868 }
1869 },
1870 {
1871 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001),
1872 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1873 .vendor_name = "M-Audio",
1874 .product_name = "Quattro",
1875 .ifnum = QUIRK_ANY_INTERFACE,
1876 .type = QUIRK_COMPOSITE,
1877 .data = & (const struct snd_usb_audio_quirk[]) {
1878
1879
1880
1881
1882
1883
1884 {
1885 .ifnum = 0,
1886 .type = QUIRK_IGNORE_INTERFACE
1887 },
1888 {
1889 .ifnum = 1,
1890 .type = QUIRK_IGNORE_INTERFACE
1891 },
1892 {
1893 .ifnum = 2,
1894 .type = QUIRK_IGNORE_INTERFACE
1895 },
1896 {
1897 .ifnum = 3,
1898 .type = QUIRK_IGNORE_INTERFACE
1899 },
1900 {
1901 .ifnum = 4,
1902 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1903 },
1904 {
1905 .ifnum = 5,
1906 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1907 },
1908 {
1909 .ifnum = 6,
1910 .type = QUIRK_IGNORE_INTERFACE
1911 },
1912 {
1913 .ifnum = 7,
1914 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1915 },
1916 {
1917 .ifnum = 8,
1918 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1919 },
1920 {
1921 .ifnum = 9,
1922 .type = QUIRK_MIDI_MIDIMAN,
1923 .data = & (const struct snd_usb_midi_endpoint_info) {
1924 .out_cables = 0x0001,
1925 .in_cables = 0x0001
1926 }
1927 },
1928 {
1929 .ifnum = -1
1930 }
1931 }
1932 }
1933 },
1934 {
1935 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003),
1936 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1937 .vendor_name = "M-Audio",
1938 .product_name = "AudioPhile",
1939 .ifnum = 6,
1940 .type = QUIRK_MIDI_MIDIMAN,
1941 .data = & (const struct snd_usb_midi_endpoint_info) {
1942 .out_cables = 0x0001,
1943 .in_cables = 0x0001
1944 }
1945 }
1946 },
1947 {
1948 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008),
1949 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1950 .vendor_name = "M-Audio",
1951 .product_name = "Ozone",
1952 .ifnum = 3,
1953 .type = QUIRK_MIDI_MIDIMAN,
1954 .data = & (const struct snd_usb_midi_endpoint_info) {
1955 .out_cables = 0x0001,
1956 .in_cables = 0x0001
1957 }
1958 }
1959 },
1960 {
1961 USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d),
1962 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1963 .vendor_name = "M-Audio",
1964 .product_name = "OmniStudio",
1965 .ifnum = QUIRK_ANY_INTERFACE,
1966 .type = QUIRK_COMPOSITE,
1967 .data = & (const struct snd_usb_audio_quirk[]) {
1968 {
1969 .ifnum = 0,
1970 .type = QUIRK_IGNORE_INTERFACE
1971 },
1972 {
1973 .ifnum = 1,
1974 .type = QUIRK_IGNORE_INTERFACE
1975 },
1976 {
1977 .ifnum = 2,
1978 .type = QUIRK_IGNORE_INTERFACE
1979 },
1980 {
1981 .ifnum = 3,
1982 .type = QUIRK_IGNORE_INTERFACE
1983 },
1984 {
1985 .ifnum = 4,
1986 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1987 },
1988 {
1989 .ifnum = 5,
1990 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1991 },
1992 {
1993 .ifnum = 6,
1994 .type = QUIRK_IGNORE_INTERFACE
1995 },
1996 {
1997 .ifnum = 7,
1998 .type = QUIRK_AUDIO_STANDARD_INTERFACE
1999 },
2000 {
2001 .ifnum = 8,
2002 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2003 },
2004 {
2005 .ifnum = 9,
2006 .type = QUIRK_MIDI_MIDIMAN,
2007 .data = & (const struct snd_usb_midi_endpoint_info) {
2008 .out_cables = 0x0001,
2009 .in_cables = 0x0001
2010 }
2011 },
2012 {
2013 .ifnum = -1
2014 }
2015 }
2016 }
2017 },
2018 {
2019 USB_DEVICE(0x0763, 0x2019),
2020 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2021
2022
2023 .ifnum = QUIRK_ANY_INTERFACE,
2024 .type = QUIRK_COMPOSITE,
2025 .data = & (const struct snd_usb_audio_quirk[]) {
2026 {
2027 .ifnum = 0,
2028 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2029 },
2030 {
2031 .ifnum = 1,
2032 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2033 },
2034 {
2035 .ifnum = 2,
2036 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2037 },
2038 {
2039 .ifnum = 3,
2040 .type = QUIRK_MIDI_MIDIMAN,
2041 .data = & (const struct snd_usb_midi_endpoint_info) {
2042 .out_cables = 0x0001,
2043 .in_cables = 0x0001
2044 }
2045 },
2046 {
2047 .ifnum = -1
2048 }
2049 }
2050 }
2051 },
2052 {
2053 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
2054 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2055
2056
2057 .ifnum = QUIRK_ANY_INTERFACE,
2058 .type = QUIRK_COMPOSITE,
2059 .data = &(const struct snd_usb_audio_quirk[]) {
2060 {
2061 .ifnum = 1,
2062 .type = QUIRK_AUDIO_STANDARD_MIXER,
2063 },
2064
2065 {
2066 .ifnum = 2,
2067 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2068 .data = &(const struct audioformat) {
2069 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2070 .channels = 6,
2071 .iface = 2,
2072 .altsetting = 1,
2073 .altset_idx = 1,
2074 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2075 .endpoint = 0x01,
2076 .ep_attr = 0x09,
2077 .rates = SNDRV_PCM_RATE_44100 |
2078 SNDRV_PCM_RATE_48000 |
2079 SNDRV_PCM_RATE_88200 |
2080 SNDRV_PCM_RATE_96000,
2081 .rate_min = 44100,
2082 .rate_max = 96000,
2083 .nr_rates = 4,
2084 .rate_table = (unsigned int[]) {
2085 44100, 48000, 88200, 96000
2086 },
2087 .clock = 0x80,
2088 }
2089 },
2090
2091 {
2092 .ifnum = 3,
2093 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2094 .data = &(const struct audioformat) {
2095 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2096 .channels = 4,
2097 .iface = 3,
2098 .altsetting = 1,
2099 .altset_idx = 1,
2100 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2101 .endpoint = 0x81,
2102 .ep_attr = 0x05,
2103 .rates = SNDRV_PCM_RATE_44100 |
2104 SNDRV_PCM_RATE_48000 |
2105 SNDRV_PCM_RATE_88200 |
2106 SNDRV_PCM_RATE_96000,
2107 .rate_min = 44100,
2108 .rate_max = 96000,
2109 .nr_rates = 4,
2110 .rate_table = (unsigned int[]) {
2111 44100, 48000, 88200, 96000
2112 },
2113 .clock = 0x80,
2114 }
2115 },
2116
2117 {
2118 .ifnum = -1
2119 }
2120 }
2121 }
2122 },
2123 {
2124 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031),
2125 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2126
2127
2128 .ifnum = QUIRK_ANY_INTERFACE,
2129 .type = QUIRK_COMPOSITE,
2130 .data = &(const struct snd_usb_audio_quirk[]) {
2131 {
2132 .ifnum = 1,
2133 .type = QUIRK_AUDIO_STANDARD_MIXER,
2134 },
2135
2136 {
2137 .ifnum = 2,
2138 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2139 .data = &(const struct audioformat) {
2140 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2141 .channels = 8,
2142 .iface = 2,
2143 .altsetting = 1,
2144 .altset_idx = 1,
2145 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2146 .endpoint = 0x01,
2147 .ep_attr = 0x09,
2148 .rates = SNDRV_PCM_RATE_44100 |
2149 SNDRV_PCM_RATE_48000 |
2150 SNDRV_PCM_RATE_88200 |
2151 SNDRV_PCM_RATE_96000,
2152 .rate_min = 44100,
2153 .rate_max = 96000,
2154 .nr_rates = 4,
2155 .rate_table = (unsigned int[]) {
2156 44100, 48000, 88200, 96000
2157 },
2158 .clock = 0x80,
2159 }
2160 },
2161
2162 {
2163 .ifnum = 3,
2164 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2165 .data = &(const struct audioformat) {
2166 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2167 .channels = 6,
2168 .iface = 3,
2169 .altsetting = 1,
2170 .altset_idx = 1,
2171 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2172 .endpoint = 0x81,
2173 .ep_attr = 0x05,
2174 .rates = SNDRV_PCM_RATE_44100 |
2175 SNDRV_PCM_RATE_48000 |
2176 SNDRV_PCM_RATE_88200 |
2177 SNDRV_PCM_RATE_96000,
2178 .rate_min = 44100,
2179 .rate_max = 96000,
2180 .nr_rates = 4,
2181 .rate_table = (unsigned int[]) {
2182 44100, 48000, 88200, 96000
2183 },
2184 .clock = 0x80,
2185 }
2186 },
2187
2188 {
2189 .ifnum = -1
2190 }
2191 }
2192 }
2193 },
2194 {
2195 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080),
2196 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2197
2198
2199 .ifnum = QUIRK_ANY_INTERFACE,
2200 .type = QUIRK_COMPOSITE,
2201 .data = & (const struct snd_usb_audio_quirk[]) {
2202 {
2203 .ifnum = 0,
2204 .type = QUIRK_AUDIO_STANDARD_MIXER,
2205 },
2206 {
2207 .ifnum = 1,
2208 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2209 .data = & (const struct audioformat) {
2210 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2211 .channels = 8,
2212 .iface = 1,
2213 .altsetting = 1,
2214 .altset_idx = 1,
2215 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2216 .endpoint = 0x01,
2217 .ep_attr = 0x09,
2218 .rates = SNDRV_PCM_RATE_44100 |
2219 SNDRV_PCM_RATE_48000 |
2220 SNDRV_PCM_RATE_88200 |
2221 SNDRV_PCM_RATE_96000,
2222 .rate_min = 44100,
2223 .rate_max = 96000,
2224 .nr_rates = 4,
2225 .rate_table = (unsigned int[]) {
2226 44100, 48000, 88200, 96000
2227 }
2228 }
2229 },
2230 {
2231 .ifnum = 2,
2232 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2233 .data = & (const struct audioformat) {
2234 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2235 .channels = 8,
2236 .iface = 2,
2237 .altsetting = 1,
2238 .altset_idx = 1,
2239 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2240 .endpoint = 0x81,
2241 .ep_attr = 0x05,
2242 .rates = SNDRV_PCM_RATE_44100 |
2243 SNDRV_PCM_RATE_48000 |
2244 SNDRV_PCM_RATE_88200 |
2245 SNDRV_PCM_RATE_96000,
2246 .rate_min = 44100,
2247 .rate_max = 96000,
2248 .nr_rates = 4,
2249 .rate_table = (unsigned int[]) {
2250 44100, 48000, 88200, 96000
2251 }
2252 }
2253 },
2254
2255 {
2256 .ifnum = -1
2257 }
2258 }
2259 }
2260 },
2261 {
2262 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081),
2263 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2264
2265
2266 .ifnum = QUIRK_ANY_INTERFACE,
2267 .type = QUIRK_COMPOSITE,
2268 .data = & (const struct snd_usb_audio_quirk[]) {
2269 {
2270 .ifnum = 0,
2271 .type = QUIRK_AUDIO_STANDARD_MIXER,
2272 },
2273 {
2274 .ifnum = 1,
2275 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2276 .data = & (const struct audioformat) {
2277 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2278 .channels = 8,
2279 .iface = 1,
2280 .altsetting = 1,
2281 .altset_idx = 1,
2282 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2283 .endpoint = 0x01,
2284 .ep_attr = 0x09,
2285 .rates = SNDRV_PCM_RATE_44100 |
2286 SNDRV_PCM_RATE_48000 |
2287 SNDRV_PCM_RATE_88200 |
2288 SNDRV_PCM_RATE_96000,
2289 .rate_min = 44100,
2290 .rate_max = 96000,
2291 .nr_rates = 4,
2292 .rate_table = (unsigned int[]) {
2293 44100, 48000, 88200, 96000
2294 }
2295 }
2296 },
2297 {
2298 .ifnum = 2,
2299 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2300 .data = & (const struct audioformat) {
2301 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2302 .channels = 8,
2303 .iface = 2,
2304 .altsetting = 1,
2305 .altset_idx = 1,
2306 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2307 .endpoint = 0x81,
2308 .ep_attr = 0x05,
2309 .rates = SNDRV_PCM_RATE_44100 |
2310 SNDRV_PCM_RATE_48000 |
2311 SNDRV_PCM_RATE_88200 |
2312 SNDRV_PCM_RATE_96000,
2313 .rate_min = 44100,
2314 .rate_max = 96000,
2315 .nr_rates = 4,
2316 .rate_table = (unsigned int[]) {
2317 44100, 48000, 88200, 96000
2318 }
2319 }
2320 },
2321
2322 {
2323 .ifnum = -1
2324 }
2325 }
2326 }
2327 },
2328
2329
2330 {
2331 USB_DEVICE(0x07cf, 0x6801),
2332 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2333 .vendor_name = "Casio",
2334 .product_name = "PL-40R",
2335 .ifnum = 0,
2336 .type = QUIRK_MIDI_YAMAHA
2337 }
2338 },
2339 {
2340
2341 USB_DEVICE(0x07cf, 0x6802),
2342 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2343 .vendor_name = "Casio",
2344 .product_name = "Keyboard",
2345 .ifnum = 0,
2346 .type = QUIRK_MIDI_YAMAHA
2347 }
2348 },
2349
2350
2351 {
2352
2353 .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
2354 USB_DEVICE_ID_MATCH_PRODUCT |
2355 USB_DEVICE_ID_MATCH_DEV_SUBCLASS,
2356 .idVendor = 0x07fd,
2357 .idProduct = 0x0001,
2358 .bDeviceSubClass = 2,
2359 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2360 .vendor_name = "MOTU",
2361 .product_name = "Fastlane",
2362 .ifnum = QUIRK_ANY_INTERFACE,
2363 .type = QUIRK_COMPOSITE,
2364 .data = & (const struct snd_usb_audio_quirk[]) {
2365 {
2366 .ifnum = 0,
2367 .type = QUIRK_MIDI_RAW_BYTES
2368 },
2369 {
2370 .ifnum = 1,
2371 .type = QUIRK_IGNORE_INTERFACE
2372 },
2373 {
2374 .ifnum = -1
2375 }
2376 }
2377 }
2378 },
2379
2380
2381 {
2382 USB_DEVICE(0x086a, 0x0001),
2383 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2384 .vendor_name = "Emagic",
2385 .product_name = "Unitor8",
2386 .ifnum = 2,
2387 .type = QUIRK_MIDI_EMAGIC,
2388 .data = & (const struct snd_usb_midi_endpoint_info) {
2389 .out_cables = 0x80ff,
2390 .in_cables = 0x80ff
2391 }
2392 }
2393 },
2394 {
2395 USB_DEVICE(0x086a, 0x0002),
2396 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2397 .vendor_name = "Emagic",
2398
2399 .ifnum = 2,
2400 .type = QUIRK_MIDI_EMAGIC,
2401 .data = & (const struct snd_usb_midi_endpoint_info) {
2402 .out_cables = 0x80ff,
2403 .in_cables = 0x80ff
2404 }
2405 }
2406 },
2407 {
2408 USB_DEVICE(0x086a, 0x0003),
2409 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2410 .vendor_name = "Emagic",
2411
2412 .ifnum = 2,
2413 .type = QUIRK_MIDI_EMAGIC,
2414 .data = & (const struct snd_usb_midi_endpoint_info) {
2415 .out_cables = 0x800f,
2416 .in_cables = 0x8003
2417 }
2418 }
2419 },
2420
2421
2422 {
2423 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200),
2424 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2425 .vendor_name = "KORG, Inc.",
2426
2427 .ifnum = 3,
2428 .type = QUIRK_MIDI_STANDARD_INTERFACE,
2429 }
2430 },
2431
2432 {
2433 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201),
2434 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2435 .vendor_name = "KORG, Inc.",
2436
2437 .ifnum = 3,
2438 .type = QUIRK_MIDI_STANDARD_INTERFACE,
2439 }
2440 },
2441
2442 {
2443 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204),
2444 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2445 .vendor_name = "KORG, Inc.",
2446
2447 .ifnum = 3,
2448 .type = QUIRK_MIDI_STANDARD_INTERFACE,
2449 }
2450 },
2451
2452
2453 {
2454 USB_DEVICE(0x09e8, 0x0062),
2455 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2456 .vendor_name = "AKAI",
2457 .product_name = "MPD16",
2458 .ifnum = 0,
2459 .type = QUIRK_MIDI_AKAI,
2460 }
2461 },
2462
2463 {
2464
2465 USB_DEVICE(0x09e8, 0x0021),
2466 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2467 .ifnum = QUIRK_ANY_INTERFACE,
2468 .type = QUIRK_COMPOSITE,
2469 .data = & (const struct snd_usb_audio_quirk[]) {
2470 {
2471 .ifnum = 0,
2472 .type = QUIRK_IGNORE_INTERFACE
2473 },
2474 {
2475 .ifnum = 1,
2476 .type = QUIRK_MIDI_STANDARD_INTERFACE
2477 },
2478 {
2479 .ifnum = -1
2480 }
2481 }
2482 }
2483 },
2484
2485
2486 {
2487
2488 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
2489 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2490 .ifnum = QUIRK_ANY_INTERFACE,
2491 .type = QUIRK_COMPOSITE,
2492 .data = & (const struct snd_usb_audio_quirk[]) {
2493 {
2494 .ifnum = 0,
2495 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2496 },
2497 {
2498 .ifnum = 1,
2499 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2500 },
2501 {
2502 .ifnum = 2,
2503 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2504 },
2505 {
2506 .ifnum = 3,
2507 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2508 .data = &(const struct snd_usb_midi_endpoint_info) {
2509 .out_cables = 0x0001,
2510 .in_cables = 0x0001
2511 }
2512 },
2513 {
2514 .ifnum = -1
2515 }
2516 }
2517 }
2518 },
2519 {
2520
2521 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
2522 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2523 .ifnum = QUIRK_ANY_INTERFACE,
2524 .type = QUIRK_COMPOSITE,
2525 .data = & (const struct snd_usb_audio_quirk[]) {
2526 {
2527 .ifnum = 0,
2528 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2529 },
2530 {
2531 .ifnum = 1,
2532 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2533 },
2534 {
2535 .ifnum = 2,
2536 .type = QUIRK_AUDIO_STANDARD_INTERFACE
2537 },
2538 {
2539 .ifnum = 3,
2540 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2541 .data = &(const struct snd_usb_midi_endpoint_info) {
2542 .out_cables = 0x0001,
2543 .in_cables = 0x0001
2544 }
2545 },
2546 {
2547 .ifnum = -1
2548 }
2549 }
2550 }
2551 },
2552
2553
2554 {
2555 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
2556 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2557 .vendor_name = "TerraTec",
2558 .product_name = "PHASE 26",
2559 .ifnum = 3,
2560 .type = QUIRK_MIDI_STANDARD_INTERFACE
2561 }
2562 },
2563 {
2564 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013),
2565 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2566 .vendor_name = "TerraTec",
2567 .product_name = "PHASE 26",
2568 .ifnum = 3,
2569 .type = QUIRK_MIDI_STANDARD_INTERFACE
2570 }
2571 },
2572 {
2573 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014),
2574 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2575 .vendor_name = "TerraTec",
2576 .product_name = "PHASE 26",
2577 .ifnum = 3,
2578 .type = QUIRK_MIDI_STANDARD_INTERFACE
2579 }
2580 },
2581 {
2582 USB_DEVICE(0x0ccd, 0x0035),
2583 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2584 .vendor_name = "Miditech",
2585 .product_name = "Play'n Roll",
2586 .ifnum = 0,
2587 .type = QUIRK_MIDI_CME
2588 }
2589 },
2590
2591
2592 {
2593 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001),
2594 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2595 .vendor_name = "Novation",
2596 .product_name = "ReMOTE Audio/XStation",
2597 .ifnum = 4,
2598 .type = QUIRK_MIDI_NOVATION
2599 }
2600 },
2601 {
2602 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002),
2603 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2604 .vendor_name = "Novation",
2605 .product_name = "Speedio",
2606 .ifnum = 3,
2607 .type = QUIRK_MIDI_NOVATION
2608 }
2609 },
2610 {
2611 USB_DEVICE(0x1235, 0x000a),
2612 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2613
2614
2615 .ifnum = 0,
2616 .type = QUIRK_MIDI_RAW_BYTES
2617 }
2618 },
2619 {
2620 USB_DEVICE(0x1235, 0x000e),
2621 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2622
2623
2624 .ifnum = 0,
2625 .type = QUIRK_MIDI_RAW_BYTES
2626 }
2627 },
2628 {
2629 USB_DEVICE(0x1235, 0x0010),
2630 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2631 .vendor_name = "Focusrite",
2632 .product_name = "Saffire 6 USB",
2633 .ifnum = QUIRK_ANY_INTERFACE,
2634 .type = QUIRK_COMPOSITE,
2635 .data = (const struct snd_usb_audio_quirk[]) {
2636 {
2637 .ifnum = 0,
2638 .type = QUIRK_AUDIO_STANDARD_MIXER,
2639 },
2640 {
2641 .ifnum = 0,
2642 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2643 .data = &(const struct audioformat) {
2644 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2645 .channels = 4,
2646 .iface = 0,
2647 .altsetting = 1,
2648 .altset_idx = 1,
2649 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2650 .endpoint = 0x01,
2651 .ep_attr = USB_ENDPOINT_XFER_ISOC,
2652 .datainterval = 1,
2653 .maxpacksize = 0x024c,
2654 .rates = SNDRV_PCM_RATE_44100 |
2655 SNDRV_PCM_RATE_48000,
2656 .rate_min = 44100,
2657 .rate_max = 48000,
2658 .nr_rates = 2,
2659 .rate_table = (unsigned int[]) {
2660 44100, 48000
2661 },
2662 .sync_ep = 0x82,
2663 .sync_iface = 0,
2664 .sync_altsetting = 1,
2665 .sync_ep_idx = 1,
2666 .implicit_fb = 1,
2667 }
2668 },
2669 {
2670 .ifnum = 0,
2671 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2672 .data = &(const struct audioformat) {
2673 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2674 .channels = 2,
2675 .iface = 0,
2676 .altsetting = 1,
2677 .altset_idx = 1,
2678 .attributes = 0,
2679 .endpoint = 0x82,
2680 .ep_idx = 1,
2681 .ep_attr = USB_ENDPOINT_XFER_ISOC,
2682 .datainterval = 1,
2683 .maxpacksize = 0x0126,
2684 .rates = SNDRV_PCM_RATE_44100 |
2685 SNDRV_PCM_RATE_48000,
2686 .rate_min = 44100,
2687 .rate_max = 48000,
2688 .nr_rates = 2,
2689 .rate_table = (unsigned int[]) {
2690 44100, 48000
2691 }
2692 }
2693 },
2694 {
2695 .ifnum = 1,
2696 .type = QUIRK_MIDI_RAW_BYTES
2697 },
2698 {
2699 .ifnum = -1
2700 }
2701 }
2702 }
2703 },
2704 {
2705 USB_DEVICE(0x1235, 0x0018),
2706 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2707 .vendor_name = "Novation",
2708 .product_name = "Twitch",
2709 .ifnum = QUIRK_ANY_INTERFACE,
2710 .type = QUIRK_COMPOSITE,
2711 .data = (const struct snd_usb_audio_quirk[]) {
2712 {
2713 .ifnum = 0,
2714 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2715 .data = & (const struct audioformat) {
2716 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
2717 .channels = 4,
2718 .iface = 0,
2719 .altsetting = 1,
2720 .altset_idx = 1,
2721 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2722 .endpoint = 0x01,
2723 .ep_attr = USB_ENDPOINT_XFER_ISOC,
2724 .rates = SNDRV_PCM_RATE_44100 |
2725 SNDRV_PCM_RATE_48000,
2726 .rate_min = 44100,
2727 .rate_max = 48000,
2728 .nr_rates = 2,
2729 .rate_table = (unsigned int[]) {
2730 44100, 48000
2731 }
2732 }
2733 },
2734 {
2735 .ifnum = 1,
2736 .type = QUIRK_MIDI_RAW_BYTES
2737 },
2738 {
2739 .ifnum = -1
2740 }
2741 }
2742 }
2743 },
2744 {
2745 USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661),
2746 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2747 .vendor_name = "Novation",
2748 .product_name = "ReMOTE25",
2749 .ifnum = 0,
2750 .type = QUIRK_MIDI_NOVATION
2751 }
2752 },
2753
2754
2755 {
2756
2757 USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815),
2758 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2759 .ifnum = QUIRK_ANY_INTERFACE,
2760 .type = QUIRK_COMPOSITE,
2761 .data = &(const struct snd_usb_audio_quirk[]) {
2762 {
2763 .ifnum = 3,
2764 .type = QUIRK_MIDI_FIXED_ENDPOINT,
2765 .data = &(const struct snd_usb_midi_endpoint_info) {
2766 .out_cables = 0x0003,
2767 .in_cables = 0x0003
2768 }
2769 },
2770 {
2771 .ifnum = 4,
2772 .type = QUIRK_IGNORE_INTERFACE
2773 },
2774 {
2775 .ifnum = -1
2776 }
2777 }
2778 }
2779 },
2780
2781
2782 {
2783
2784 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2785 .idVendor = 0x17cc,
2786 .idProduct = 0x1000,
2787 },
2788 {
2789
2790 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2791 .idVendor = 0x17cc,
2792 .idProduct = 0x1010,
2793 },
2794 {
2795
2796 .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
2797 .idVendor = 0x17cc,
2798 .idProduct = 0x1020,
2799 },
2800
2801
2802 {
2803 USB_DEVICE(0x1a86, 0x752d),
2804 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2805 .vendor_name = "QinHeng",
2806 .product_name = "CH345",
2807 .ifnum = 1,
2808 .type = QUIRK_MIDI_CH345
2809 }
2810 },
2811
2812
2813 { USB_DEVICE(0x1f38, 0x0001) },
2814
2815
2816 {
2817 USB_DEVICE(0x4752, 0x0011),
2818 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2819 .vendor_name = "Miditech",
2820 .product_name = "Midistart-2",
2821 .ifnum = 0,
2822 .type = QUIRK_MIDI_CME
2823 }
2824 },
2825
2826
2827 {
2828
2829 USB_DEVICE(0x7104, 0x2202),
2830 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2831 .ifnum = 0,
2832 .type = QUIRK_MIDI_CME
2833 }
2834 },
2835
2836
2837 {
2838
2839 USB_DEVICE(0x0dba, 0x1000),
2840 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2841 .vendor_name = "Digidesign",
2842 .product_name = "MBox",
2843 .ifnum = QUIRK_ANY_INTERFACE,
2844 .type = QUIRK_COMPOSITE,
2845 .data = (const struct snd_usb_audio_quirk[]){
2846 {
2847 .ifnum = 0,
2848 .type = QUIRK_AUDIO_STANDARD_MIXER,
2849 },
2850 {
2851 .ifnum = 1,
2852 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2853 .data = &(const struct audioformat) {
2854 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2855 .channels = 2,
2856 .iface = 1,
2857 .altsetting = 1,
2858 .altset_idx = 1,
2859 .attributes = 0x4,
2860 .endpoint = 0x02,
2861 .ep_attr = USB_ENDPOINT_XFER_ISOC |
2862 USB_ENDPOINT_SYNC_SYNC,
2863 .maxpacksize = 0x130,
2864 .rates = SNDRV_PCM_RATE_48000,
2865 .rate_min = 48000,
2866 .rate_max = 48000,
2867 .nr_rates = 1,
2868 .rate_table = (unsigned int[]) {
2869 48000
2870 }
2871 }
2872 },
2873 {
2874 .ifnum = 1,
2875 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2876 .data = &(const struct audioformat) {
2877 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2878 .channels = 2,
2879 .iface = 1,
2880 .altsetting = 1,
2881 .altset_idx = 1,
2882 .attributes = 0x4,
2883 .endpoint = 0x81,
2884 .ep_idx = 1,
2885 .ep_attr = USB_ENDPOINT_XFER_ISOC |
2886 USB_ENDPOINT_SYNC_ASYNC,
2887 .maxpacksize = 0x130,
2888 .rates = SNDRV_PCM_RATE_48000,
2889 .rate_min = 48000,
2890 .rate_max = 48000,
2891 .nr_rates = 1,
2892 .rate_table = (unsigned int[]) {
2893 48000
2894 }
2895 }
2896 },
2897 {
2898 .ifnum = -1
2899 }
2900 }
2901 }
2902 },
2903
2904
2905 {
2906 USB_DEVICE(0x0dba, 0x3000),
2907 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2908 .vendor_name = "Digidesign",
2909 .product_name = "Mbox 2",
2910 .ifnum = QUIRK_ANY_INTERFACE,
2911 .type = QUIRK_COMPOSITE,
2912 .data = (const struct snd_usb_audio_quirk[]) {
2913 {
2914 .ifnum = 0,
2915 .type = QUIRK_IGNORE_INTERFACE
2916 },
2917 {
2918 .ifnum = 1,
2919 .type = QUIRK_IGNORE_INTERFACE
2920 },
2921 {
2922 .ifnum = 2,
2923 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2924 .data = &(const struct audioformat) {
2925 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2926 .channels = 2,
2927 .iface = 2,
2928 .altsetting = 2,
2929 .altset_idx = 1,
2930 .attributes = 0x00,
2931 .endpoint = 0x03,
2932 .ep_attr = USB_ENDPOINT_SYNC_ASYNC,
2933 .rates = SNDRV_PCM_RATE_48000,
2934 .rate_min = 48000,
2935 .rate_max = 48000,
2936 .nr_rates = 1,
2937 .rate_table = (unsigned int[]) {
2938 48000
2939 }
2940 }
2941 },
2942 {
2943 .ifnum = 3,
2944 .type = QUIRK_IGNORE_INTERFACE
2945 },
2946 {
2947 .ifnum = 4,
2948 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
2949 .data = &(const struct audioformat) {
2950 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
2951 .channels = 2,
2952 .iface = 4,
2953 .altsetting = 2,
2954 .altset_idx = 1,
2955 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
2956 .endpoint = 0x85,
2957 .ep_attr = USB_ENDPOINT_SYNC_SYNC,
2958 .rates = SNDRV_PCM_RATE_48000,
2959 .rate_min = 48000,
2960 .rate_max = 48000,
2961 .nr_rates = 1,
2962 .rate_table = (unsigned int[]) {
2963 48000
2964 }
2965 }
2966 },
2967 {
2968 .ifnum = 5,
2969 .type = QUIRK_IGNORE_INTERFACE
2970 },
2971 {
2972 .ifnum = 6,
2973 .type = QUIRK_MIDI_MIDIMAN,
2974 .data = &(const struct snd_usb_midi_endpoint_info) {
2975 .out_ep = 0x02,
2976 .out_cables = 0x0001,
2977 .in_ep = 0x81,
2978 .in_interval = 0x01,
2979 .in_cables = 0x0001
2980 }
2981 },
2982 {
2983 .ifnum = -1
2984 }
2985 }
2986 }
2987 },
2988 {
2989
2990 USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021),
2991 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
2992 .vendor_name = "TASCAM",
2993 .product_name = "US122 MKII",
2994 .ifnum = QUIRK_ANY_INTERFACE,
2995 .type = QUIRK_COMPOSITE,
2996 .data = (const struct snd_usb_audio_quirk[]) {
2997 {
2998 .ifnum = 0,
2999 .type = QUIRK_IGNORE_INTERFACE
3000 },
3001 {
3002 .ifnum = 1,
3003 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3004 .data = &(const struct audioformat) {
3005 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3006 .channels = 2,
3007 .iface = 1,
3008 .altsetting = 1,
3009 .altset_idx = 1,
3010 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
3011 .endpoint = 0x02,
3012 .ep_attr = USB_ENDPOINT_XFER_ISOC,
3013 .rates = SNDRV_PCM_RATE_44100 |
3014 SNDRV_PCM_RATE_48000 |
3015 SNDRV_PCM_RATE_88200 |
3016 SNDRV_PCM_RATE_96000,
3017 .rate_min = 44100,
3018 .rate_max = 96000,
3019 .nr_rates = 4,
3020 .rate_table = (unsigned int[]) {
3021 44100, 48000, 88200, 96000
3022 }
3023 }
3024 },
3025 {
3026 .ifnum = -1
3027 }
3028 }
3029 }
3030 },
3031
3032
3033 {
3034 USB_AUDIO_DEVICE(0x154e, 0x500e),
3035 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3036 .vendor_name = "Denon",
3037 .product_name = "DN-X1600",
3038 .ifnum = QUIRK_ANY_INTERFACE,
3039 .type = QUIRK_COMPOSITE,
3040 .data = (const struct snd_usb_audio_quirk[]){
3041 {
3042 .ifnum = 0,
3043 .type = QUIRK_IGNORE_INTERFACE,
3044 },
3045 {
3046 .ifnum = 1,
3047 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3048 .data = &(const struct audioformat) {
3049 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3050 .channels = 8,
3051 .iface = 1,
3052 .altsetting = 1,
3053 .altset_idx = 1,
3054 .attributes = 0x0,
3055 .endpoint = 0x01,
3056 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3057 USB_ENDPOINT_SYNC_ADAPTIVE,
3058 .maxpacksize = 0x138,
3059 .rates = SNDRV_PCM_RATE_48000,
3060 .rate_min = 48000,
3061 .rate_max = 48000,
3062 .nr_rates = 1,
3063 .rate_table = (unsigned int[]) {
3064 48000
3065 }
3066 }
3067 },
3068 {
3069 .ifnum = 2,
3070 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3071 .data = &(const struct audioformat) {
3072 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3073 .channels = 8,
3074 .iface = 2,
3075 .altsetting = 1,
3076 .altset_idx = 1,
3077 .attributes = 0x0,
3078 .endpoint = 0x85,
3079 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3080 USB_ENDPOINT_SYNC_ADAPTIVE,
3081 .maxpacksize = 0x138,
3082 .rates = SNDRV_PCM_RATE_48000,
3083 .rate_min = 48000,
3084 .rate_max = 48000,
3085 .nr_rates = 1,
3086 .rate_table = (unsigned int[]) {
3087 48000
3088 }
3089 }
3090 },
3091 {
3092 .ifnum = 4,
3093 .type = QUIRK_MIDI_STANDARD_INTERFACE,
3094 },
3095 {
3096 .ifnum = -1
3097 }
3098 }
3099 }
3100 },
3101
3102
3103 {
3104 USB_DEVICE(0x045e, 0x0283),
3105 .bInterfaceClass = USB_CLASS_PER_INTERFACE,
3106 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3107 .vendor_name = "Microsoft",
3108 .product_name = "XboxLive Headset/Xbox Communicator",
3109 .ifnum = QUIRK_ANY_INTERFACE,
3110 .type = QUIRK_COMPOSITE,
3111 .data = &(const struct snd_usb_audio_quirk[]) {
3112 {
3113
3114 .ifnum = 0,
3115 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3116 .data = &(const struct audioformat) {
3117 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3118 .channels = 1,
3119 .iface = 0,
3120 .altsetting = 0,
3121 .altset_idx = 0,
3122 .attributes = 0,
3123 .endpoint = 0x04,
3124 .ep_attr = 0x05,
3125 .rates = SNDRV_PCM_RATE_CONTINUOUS,
3126 .rate_min = 22050,
3127 .rate_max = 22050
3128 }
3129 },
3130 {
3131
3132 .ifnum = 1,
3133 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3134 .data = &(const struct audioformat) {
3135 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3136 .channels = 1,
3137 .iface = 1,
3138 .altsetting = 0,
3139 .altset_idx = 0,
3140 .attributes = 0,
3141 .endpoint = 0x85,
3142 .ep_attr = 0x05,
3143 .rates = SNDRV_PCM_RATE_CONTINUOUS,
3144 .rate_min = 16000,
3145 .rate_max = 16000
3146 }
3147 },
3148 {
3149 .ifnum = -1
3150 }
3151 }
3152 }
3153 },
3154
3155
3156 {
3157 USB_DEVICE(0x200c, 0x100b),
3158 .bInterfaceClass = USB_CLASS_PER_INTERFACE,
3159 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3160 .ifnum = QUIRK_ANY_INTERFACE,
3161 .type = QUIRK_COMPOSITE,
3162 .data = &(const struct snd_usb_audio_quirk[]) {
3163 {
3164 .ifnum = 0,
3165 .type = QUIRK_AUDIO_STANDARD_MIXER,
3166 },
3167 {
3168 .ifnum = 1,
3169 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3170 .data = &(const struct audioformat) {
3171 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3172 .channels = 4,
3173 .iface = 1,
3174 .altsetting = 1,
3175 .altset_idx = 1,
3176 .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
3177 .endpoint = 0x01,
3178 .ep_attr = USB_ENDPOINT_SYNC_ADAPTIVE,
3179 .rates = SNDRV_PCM_RATE_44100 |
3180 SNDRV_PCM_RATE_48000,
3181 .rate_min = 44100,
3182 .rate_max = 48000,
3183 .nr_rates = 2,
3184 .rate_table = (unsigned int[]) {
3185 44100, 48000
3186 }
3187 }
3188 },
3189 {
3190 .ifnum = -1
3191 }
3192 }
3193 }
3194 },
3195
3196 {
3197
3198
3199
3200
3201
3202
3203 USB_DEVICE(0x1686, 0x00dd),
3204 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
3205 .ifnum = QUIRK_ANY_INTERFACE,
3206 .type = QUIRK_COMPOSITE,
3207 .data = (const struct snd_usb_audio_quirk[]) {
3208 {
3209
3210 .ifnum = 1,
3211 .type = QUIRK_AUDIO_STANDARD_INTERFACE,
3212 },
3213 {
3214
3215 .ifnum = 2,
3216 .type = QUIRK_AUDIO_STANDARD_INTERFACE,
3217 },
3218 {
3219
3220 .ifnum = 3,
3221 .type = QUIRK_MIDI_STANDARD_INTERFACE
3222 },
3223 {
3224 .ifnum = -1
3225 },
3226 }
3227 }
3228 },
3229
3230 {
3231
3232
3233
3234
3235 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS |
3236 USB_DEVICE_ID_MATCH_INT_SUBCLASS,
3237 .bInterfaceClass = USB_CLASS_AUDIO,
3238 .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
3239 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
3240 .ifnum = QUIRK_ANY_INTERFACE,
3241 .type = QUIRK_MIDI_STANDARD_INTERFACE
3242 }
3243 },
3244
3245
3246 {
3247 USB_DEVICE(0x13e5, 0x0001),
3248 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
3249 .ifnum = QUIRK_ANY_INTERFACE,
3250 .type = QUIRK_AUDIO_STANDARD_INTERFACE
3251 }
3252 },
3253
3254
3255
3256
3257 #if 0
3258 {
3259
3260
3261
3262
3263
3264
3265 USB_DEVICE(0x0a12, 0x1243),
3266 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3267 .ifnum = QUIRK_ANY_INTERFACE,
3268 .type = QUIRK_COMPOSITE,
3269 .data = (const struct snd_usb_audio_quirk[]) {
3270 {
3271 .ifnum = 0,
3272 .type = QUIRK_AUDIO_STANDARD_MIXER,
3273 },
3274
3275 {
3276 .ifnum = 1,
3277 .type = QUIRK_IGNORE_INTERFACE,
3278 },
3279
3280 {
3281 .ifnum = 2,
3282 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3283 .data = &(const struct audioformat) {
3284 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3285 .channels = 2,
3286 .iface = 2,
3287 .altsetting = 1,
3288 .altset_idx = 1,
3289 .attributes = UAC_EP_CS_ATTR_FILL_MAX |
3290 UAC_EP_CS_ATTR_SAMPLE_RATE,
3291 .endpoint = 0x03,
3292 .ep_attr = USB_ENDPOINT_XFER_ISOC,
3293 .rates = SNDRV_PCM_RATE_48000,
3294 .rate_min = 48000,
3295 .rate_max = 48000,
3296 .nr_rates = 1,
3297 .rate_table = (unsigned int[]) {
3298 48000
3299 }
3300 }
3301 },
3302 {
3303 .ifnum = -1
3304 },
3305 }
3306 }
3307 },
3308 #endif
3309
3310 {
3311
3312
3313
3314
3315
3316 USB_DEVICE(0x19b5, 0x0021),
3317 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3318 .ifnum = QUIRK_ANY_INTERFACE,
3319 .type = QUIRK_COMPOSITE,
3320 .data = (const struct snd_usb_audio_quirk[]) {
3321 {
3322 .ifnum = 0,
3323 .type = QUIRK_AUDIO_STANDARD_MIXER,
3324 },
3325
3326 {
3327 .ifnum = 1,
3328 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3329 .data = &(const struct audioformat) {
3330 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3331 .channels = 2,
3332 .iface = 1,
3333 .altsetting = 1,
3334 .altset_idx = 1,
3335 .attributes = UAC_EP_CS_ATTR_FILL_MAX |
3336 UAC_EP_CS_ATTR_SAMPLE_RATE,
3337 .endpoint = 0x03,
3338 .ep_attr = USB_ENDPOINT_XFER_ISOC,
3339 .rates = SNDRV_PCM_RATE_48000,
3340 .rate_min = 48000,
3341 .rate_max = 48000,
3342 .nr_rates = 1,
3343 .rate_table = (unsigned int[]) {
3344 48000
3345 }
3346 }
3347 },
3348 {
3349 .ifnum = -1
3350 },
3351 }
3352 }
3353 },
3354
3355 {
3356 USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004),
3357 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3358 .vendor_name = "MOTU",
3359 .product_name = "MicroBookII",
3360 .ifnum = QUIRK_ANY_INTERFACE,
3361 .type = QUIRK_COMPOSITE,
3362 .data = (const struct snd_usb_audio_quirk[]) {
3363 {
3364 .ifnum = 0,
3365 .type = QUIRK_AUDIO_STANDARD_MIXER,
3366 },
3367 {
3368 .ifnum = 0,
3369 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3370 .data = &(const struct audioformat) {
3371 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
3372 .channels = 6,
3373 .iface = 0,
3374 .altsetting = 1,
3375 .altset_idx = 1,
3376 .attributes = 0,
3377 .endpoint = 0x84,
3378 .rates = SNDRV_PCM_RATE_96000,
3379 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3380 USB_ENDPOINT_SYNC_ASYNC,
3381 .rate_min = 96000,
3382 .rate_max = 96000,
3383 .nr_rates = 1,
3384 .maxpacksize = 0x00d8,
3385 .rate_table = (unsigned int[]) {
3386 96000
3387 }
3388 }
3389 },
3390 {
3391 .ifnum = 0,
3392 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3393 .data = &(const struct audioformat) {
3394 .formats = SNDRV_PCM_FMTBIT_S24_3BE,
3395 .channels = 8,
3396 .iface = 0,
3397 .altsetting = 1,
3398 .altset_idx = 1,
3399 .attributes = 0,
3400 .endpoint = 0x03,
3401 .ep_idx = 1,
3402 .rates = SNDRV_PCM_RATE_96000,
3403 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3404 USB_ENDPOINT_SYNC_ASYNC,
3405 .rate_min = 96000,
3406 .rate_max = 96000,
3407 .nr_rates = 1,
3408 .maxpacksize = 0x0120,
3409 .rate_table = (unsigned int[]) {
3410 96000
3411 }
3412 }
3413 },
3414 {
3415 .ifnum = -1
3416 }
3417 }
3418 }
3419 },
3420 {
3421
3422
3423
3424
3425
3426
3427 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023),
3428 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3429 .ifnum = QUIRK_ANY_INTERFACE,
3430 .type = QUIRK_COMPOSITE,
3431 .data = (const struct snd_usb_audio_quirk[]) {
3432 {
3433 .ifnum = 0,
3434 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3435 .data = &(const struct audioformat) {
3436 .formats = SNDRV_PCM_FMTBIT_S32_LE,
3437 .channels = 12,
3438 .iface = 0,
3439 .altsetting = 1,
3440 .altset_idx = 1,
3441 .endpoint = 0x05,
3442 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3443 USB_ENDPOINT_SYNC_ASYNC,
3444 .rates = SNDRV_PCM_RATE_44100,
3445 .rate_min = 44100,
3446 .rate_max = 44100,
3447 .nr_rates = 1,
3448 .rate_table = (unsigned int[]) { 44100 }
3449 }
3450 },
3451 {
3452 .ifnum = 0,
3453 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3454 .data = &(const struct audioformat) {
3455 .formats = SNDRV_PCM_FMTBIT_S32_LE,
3456 .channels = 10,
3457 .iface = 0,
3458 .altsetting = 1,
3459 .altset_idx = 1,
3460 .endpoint = 0x86,
3461 .ep_idx = 1,
3462 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3463 USB_ENDPOINT_SYNC_ASYNC|
3464 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3465 .rates = SNDRV_PCM_RATE_44100,
3466 .rate_min = 44100,
3467 .rate_max = 44100,
3468 .nr_rates = 1,
3469 .rate_table = (unsigned int[]) { 44100 }
3470 }
3471 },
3472 {
3473 .ifnum = -1
3474 }
3475 }
3476 }
3477 },
3478 {
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),
3517 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3518 .ifnum = QUIRK_ANY_INTERFACE,
3519 .type = QUIRK_COMPOSITE,
3520 .data = (const struct snd_usb_audio_quirk[]) {
3521 {
3522 .ifnum = 0,
3523 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3524 .data = &(const struct audioformat) {
3525 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3526 .channels = 8,
3527 .iface = 0,
3528 .altsetting = 1,
3529 .altset_idx = 1,
3530 .endpoint = 0x01,
3531 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3532 USB_ENDPOINT_SYNC_ASYNC,
3533 .rates = SNDRV_PCM_RATE_48000,
3534 .rate_min = 48000,
3535 .rate_max = 48000,
3536 .nr_rates = 1,
3537 .rate_table = (unsigned int[]) { 48000 }
3538 }
3539 },
3540 {
3541 .ifnum = 0,
3542 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3543 .data = &(const struct audioformat) {
3544 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3545 .channels = 8,
3546 .iface = 0,
3547 .altsetting = 1,
3548 .altset_idx = 1,
3549 .endpoint = 0x82,
3550 .ep_idx = 1,
3551 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3552 USB_ENDPOINT_SYNC_ASYNC|
3553 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3554 .rates = SNDRV_PCM_RATE_48000,
3555 .rate_min = 48000,
3556 .rate_max = 48000,
3557 .nr_rates = 1,
3558 .rate_table = (unsigned int[]) { 48000 }
3559 }
3560 },
3561 {
3562 .ifnum = -1
3563 }
3564 }
3565 }
3566 },
3567 {
3568
3569
3570
3571
3572
3573 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),
3574 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3575 .ifnum = QUIRK_ANY_INTERFACE,
3576 .type = QUIRK_COMPOSITE,
3577 .data = (const struct snd_usb_audio_quirk[]) {
3578 {
3579 .ifnum = 0,
3580 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3581 .data = &(const struct audioformat) {
3582 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3583 .channels = 4,
3584 .iface = 0,
3585 .altsetting = 1,
3586 .altset_idx = 1,
3587 .endpoint = 0x01,
3588 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3589 USB_ENDPOINT_SYNC_ASYNC,
3590 .rates = SNDRV_PCM_RATE_44100,
3591 .rate_min = 44100,
3592 .rate_max = 44100,
3593 .nr_rates = 1,
3594 .rate_table = (unsigned int[]) { 44100 }
3595 }
3596 },
3597 {
3598 .ifnum = 0,
3599 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3600 .data = &(const struct audioformat) {
3601 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3602 .channels = 2,
3603 .iface = 0,
3604 .altsetting = 1,
3605 .altset_idx = 1,
3606 .endpoint = 0x82,
3607 .ep_idx = 1,
3608 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3609 USB_ENDPOINT_SYNC_ASYNC|
3610 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3611 .rates = SNDRV_PCM_RATE_44100,
3612 .rate_min = 44100,
3613 .rate_max = 44100,
3614 .nr_rates = 1,
3615 .rate_table = (unsigned int[]) { 44100 }
3616 }
3617 },
3618 {
3619 .ifnum = -1
3620 }
3621 }
3622 }
3623 },
3624
3625 {
3626
3627
3628
3629
3630 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d),
3631 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3632 .ifnum = QUIRK_ANY_INTERFACE,
3633 .type = QUIRK_COMPOSITE,
3634 .data = (const struct snd_usb_audio_quirk[]) {
3635 {
3636 .ifnum = 0,
3637 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3638 .data = &(const struct audioformat) {
3639 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3640 .channels = 6,
3641 .iface = 0,
3642 .altsetting = 1,
3643 .altset_idx = 1,
3644 .endpoint = 0x01,
3645 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3646 USB_ENDPOINT_SYNC_ASYNC,
3647 .rates = SNDRV_PCM_RATE_44100,
3648 .rate_min = 44100,
3649 .rate_max = 44100,
3650 .nr_rates = 1,
3651 .rate_table = (unsigned int[]) { 44100 }
3652 }
3653 },
3654 {
3655 .ifnum = 0,
3656 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3657 .data = &(const struct audioformat) {
3658 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3659 .channels = 4,
3660 .iface = 0,
3661 .altsetting = 1,
3662 .altset_idx = 1,
3663 .endpoint = 0x82,
3664 .ep_idx = 1,
3665 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3666 USB_ENDPOINT_SYNC_ASYNC|
3667 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3668 .rates = SNDRV_PCM_RATE_44100,
3669 .rate_min = 44100,
3670 .rate_max = 44100,
3671 .nr_rates = 1,
3672 .rate_table = (unsigned int[]) { 44100 }
3673 }
3674 },
3675 {
3676 .ifnum = -1
3677 }
3678 }
3679 }
3680 },
3681
3682 {
3683
3684
3685
3686
3687
3688 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e),
3689 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3690 .ifnum = QUIRK_ANY_INTERFACE,
3691 .type = QUIRK_COMPOSITE,
3692 .data = (const struct snd_usb_audio_quirk[]) {
3693 {
3694 .ifnum = 0,
3695 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3696 .data = &(const struct audioformat) {
3697 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3698 .channels = 4,
3699 .iface = 0,
3700 .altsetting = 1,
3701 .altset_idx = 1,
3702 .endpoint = 0x01,
3703 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3704 USB_ENDPOINT_SYNC_ASYNC,
3705 .rates = SNDRV_PCM_RATE_44100,
3706 .rate_min = 44100,
3707 .rate_max = 44100,
3708 .nr_rates = 1,
3709 .rate_table = (unsigned int[]) { 44100 }
3710 }
3711 },
3712 {
3713 .ifnum = 0,
3714 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3715 .data = &(const struct audioformat) {
3716 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3717 .channels = 6,
3718 .iface = 0,
3719 .altsetting = 1,
3720 .altset_idx = 1,
3721 .endpoint = 0x82,
3722 .ep_idx = 1,
3723 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3724 USB_ENDPOINT_SYNC_ASYNC|
3725 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3726 .rates = SNDRV_PCM_RATE_44100,
3727 .rate_min = 44100,
3728 .rate_max = 44100,
3729 .nr_rates = 1,
3730 .rate_table = (unsigned int[]) { 44100 }
3731 }
3732 },
3733 {
3734 .ifnum = -1
3735 }
3736 }
3737 }
3738 },
3739
3740 {
3741
3742
3743
3744
3745 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a),
3746 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3747 .ifnum = QUIRK_ANY_INTERFACE,
3748 .type = QUIRK_COMPOSITE,
3749 .data = (const struct snd_usb_audio_quirk[]) {
3750 {
3751 .ifnum = 0,
3752 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3753 .data = &(const struct audioformat) {
3754 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3755 .channels = 10,
3756 .iface = 0,
3757 .altsetting = 1,
3758 .altset_idx = 1,
3759 .endpoint = 0x01,
3760 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3761 USB_ENDPOINT_SYNC_ASYNC,
3762 .rates = SNDRV_PCM_RATE_44100|
3763 SNDRV_PCM_RATE_48000|
3764 SNDRV_PCM_RATE_96000,
3765 .rate_min = 44100,
3766 .rate_max = 96000,
3767 .nr_rates = 3,
3768 .rate_table = (unsigned int[]) {
3769 44100, 48000, 96000
3770 }
3771 }
3772 },
3773 {
3774 .ifnum = 0,
3775 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3776 .data = &(const struct audioformat) {
3777 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3778 .channels = 12,
3779 .iface = 0,
3780 .altsetting = 1,
3781 .altset_idx = 1,
3782 .endpoint = 0x82,
3783 .ep_idx = 1,
3784 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3785 USB_ENDPOINT_SYNC_ASYNC|
3786 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3787 .rates = SNDRV_PCM_RATE_44100|
3788 SNDRV_PCM_RATE_48000|
3789 SNDRV_PCM_RATE_96000,
3790 .rate_min = 44100,
3791 .rate_max = 96000,
3792 .nr_rates = 3,
3793 .rate_table = (unsigned int[]) {
3794 44100, 48000, 96000
3795 }
3796 }
3797 },
3798 {
3799 .ifnum = -1
3800 }
3801 }
3802 }
3803 },
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816 {
3817 USB_AUDIO_DEVICE(0x534d, 0x0021),
3818 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3819 .vendor_name = "MacroSilicon",
3820 .product_name = "MS210x",
3821 .ifnum = QUIRK_ANY_INTERFACE,
3822 .type = QUIRK_COMPOSITE,
3823 .data = &(const struct snd_usb_audio_quirk[]) {
3824 {
3825 .ifnum = 2,
3826 .type = QUIRK_AUDIO_STANDARD_MIXER,
3827 },
3828 {
3829 .ifnum = 3,
3830 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3831 .data = &(const struct audioformat) {
3832 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3833 .channels = 2,
3834 .iface = 3,
3835 .altsetting = 1,
3836 .altset_idx = 1,
3837 .attributes = 0,
3838 .endpoint = 0x82,
3839 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3840 USB_ENDPOINT_SYNC_ASYNC,
3841 .rates = SNDRV_PCM_RATE_CONTINUOUS,
3842 .rate_min = 48000,
3843 .rate_max = 48000,
3844 }
3845 },
3846 {
3847 .ifnum = -1
3848 }
3849 }
3850 }
3851 },
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864 {
3865 USB_AUDIO_DEVICE(0x534d, 0x2109),
3866 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3867 .vendor_name = "MacroSilicon",
3868 .product_name = "MS2109",
3869 .ifnum = QUIRK_ANY_INTERFACE,
3870 .type = QUIRK_COMPOSITE,
3871 .data = &(const struct snd_usb_audio_quirk[]) {
3872 {
3873 .ifnum = 2,
3874 .type = QUIRK_AUDIO_STANDARD_MIXER,
3875 },
3876 {
3877 .ifnum = 3,
3878 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3879 .data = &(const struct audioformat) {
3880 .formats = SNDRV_PCM_FMTBIT_S16_LE,
3881 .channels = 2,
3882 .iface = 3,
3883 .altsetting = 1,
3884 .altset_idx = 1,
3885 .attributes = 0,
3886 .endpoint = 0x82,
3887 .ep_attr = USB_ENDPOINT_XFER_ISOC |
3888 USB_ENDPOINT_SYNC_ASYNC,
3889 .rates = SNDRV_PCM_RATE_CONTINUOUS,
3890 .rate_min = 48000,
3891 .rate_max = 48000,
3892 }
3893 },
3894 {
3895 .ifnum = -1
3896 }
3897 }
3898 }
3899 },
3900 {
3901
3902
3903
3904
3905 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),
3906 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3907 .ifnum = QUIRK_ANY_INTERFACE,
3908 .type = QUIRK_COMPOSITE,
3909 .data = (const struct snd_usb_audio_quirk[]) {
3910 {
3911 .ifnum = 0,
3912 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3913 .data = &(const struct audioformat) {
3914 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3915 .channels = 8,
3916 .iface = 0,
3917 .altsetting = 1,
3918 .altset_idx = 1,
3919 .endpoint = 0x05,
3920 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3921 USB_ENDPOINT_SYNC_ASYNC,
3922 .rates = SNDRV_PCM_RATE_44100|
3923 SNDRV_PCM_RATE_48000|
3924 SNDRV_PCM_RATE_96000,
3925 .rate_min = 44100,
3926 .rate_max = 96000,
3927 .nr_rates = 3,
3928 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3929 }
3930 },
3931 {
3932 .ifnum = 0,
3933 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3934 .data = &(const struct audioformat) {
3935 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3936 .channels = 8,
3937 .iface = 0,
3938 .altsetting = 1,
3939 .altset_idx = 1,
3940 .endpoint = 0x86,
3941 .ep_idx = 1,
3942 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3943 USB_ENDPOINT_SYNC_ASYNC|
3944 USB_ENDPOINT_USAGE_IMPLICIT_FB,
3945 .rates = SNDRV_PCM_RATE_44100|
3946 SNDRV_PCM_RATE_48000|
3947 SNDRV_PCM_RATE_96000,
3948 .rate_min = 44100,
3949 .rate_max = 96000,
3950 .nr_rates = 3,
3951 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3952 }
3953 },
3954 {
3955 .ifnum = -1
3956 }
3957 }
3958 }
3959 },
3960 {
3961
3962
3963
3964
3965 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b),
3966 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3967 .ifnum = QUIRK_ANY_INTERFACE,
3968 .type = QUIRK_COMPOSITE,
3969 .data = (const struct snd_usb_audio_quirk[]) {
3970 {
3971 .ifnum = 0,
3972 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3973 .data = &(const struct audioformat) {
3974 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3975 .channels = 10,
3976 .iface = 0,
3977 .altsetting = 1,
3978 .altset_idx = 1,
3979 .endpoint = 0x01,
3980 .ep_attr = USB_ENDPOINT_XFER_ISOC|
3981 USB_ENDPOINT_SYNC_ASYNC,
3982 .rates = SNDRV_PCM_RATE_48000,
3983 .rate_min = 48000,
3984 .rate_max = 48000,
3985 .nr_rates = 1,
3986 .rate_table = (unsigned int[]) {
3987 48000
3988 }
3989 }
3990 },
3991 {
3992 .ifnum = 0,
3993 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
3994 .data = &(const struct audioformat) {
3995 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
3996 .channels = 12,
3997 .iface = 0,
3998 .altsetting = 1,
3999 .altset_idx = 1,
4000 .endpoint = 0x82,
4001 .ep_idx = 1,
4002 .ep_attr = USB_ENDPOINT_XFER_ISOC|
4003 USB_ENDPOINT_SYNC_ASYNC|
4004 USB_ENDPOINT_USAGE_IMPLICIT_FB,
4005 .rates = SNDRV_PCM_RATE_48000,
4006 .rate_min = 48000,
4007 .rate_max = 48000,
4008 .nr_rates = 1,
4009 .rate_table = (unsigned int[]) { 48000 }
4010 }
4011 },
4012 {
4013 .ifnum = -1
4014 }
4015 }
4016 }
4017 },
4018 {
4019
4020
4021
4022
4023
4024
4025 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163),
4026 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4027 .ifnum = QUIRK_ANY_INTERFACE,
4028 .type = QUIRK_COMPOSITE,
4029 .data = (const struct snd_usb_audio_quirk[]) {
4030 {
4031 .ifnum = 0,
4032 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4033 .data = &(const struct audioformat) {
4034 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
4035 .channels = 8,
4036 .iface = 0,
4037 .altsetting = 1,
4038 .altset_idx = 1,
4039 .endpoint = 0x05,
4040 .ep_attr = USB_ENDPOINT_XFER_ISOC|
4041 USB_ENDPOINT_SYNC_ASYNC|
4042 USB_ENDPOINT_USAGE_DATA,
4043 .rates = SNDRV_PCM_RATE_44100|
4044 SNDRV_PCM_RATE_48000|
4045 SNDRV_PCM_RATE_96000,
4046 .rate_min = 44100,
4047 .rate_max = 96000,
4048 .nr_rates = 3,
4049 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
4050 }
4051 },
4052 {
4053 .ifnum = 0,
4054 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4055 .data = &(const struct audioformat) {
4056 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
4057 .channels = 8,
4058 .iface = 0,
4059 .altsetting = 1,
4060 .altset_idx = 1,
4061 .endpoint = 0x86,
4062 .ep_idx = 1,
4063 .ep_attr = USB_ENDPOINT_XFER_ISOC|
4064 USB_ENDPOINT_SYNC_ASYNC|
4065 USB_ENDPOINT_USAGE_DATA,
4066 .rates = SNDRV_PCM_RATE_44100|
4067 SNDRV_PCM_RATE_48000|
4068 SNDRV_PCM_RATE_96000,
4069 .rate_min = 44100,
4070 .rate_max = 96000,
4071 .nr_rates = 3,
4072 .rate_table = (unsigned int[]) { 44100, 48000, 96000 }
4073 }
4074 },
4075 {
4076 .ifnum = -1
4077 }
4078 }
4079 }
4080 },
4081 {
4082
4083
4084
4085
4086
4087 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013),
4088 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4089 .ifnum = QUIRK_ANY_INTERFACE,
4090 .type = QUIRK_COMPOSITE,
4091 .data = (const struct snd_usb_audio_quirk[]) {
4092 {
4093 .ifnum = 0,
4094 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4095 .data = &(const struct audioformat) {
4096 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
4097 .channels = 8,
4098 .iface = 0,
4099 .altsetting = 1,
4100 .altset_idx = 1,
4101 .endpoint = 0x01,
4102 .ep_attr = USB_ENDPOINT_XFER_ISOC|
4103 USB_ENDPOINT_SYNC_ASYNC,
4104 .rates = SNDRV_PCM_RATE_48000,
4105 .rate_min = 48000,
4106 .rate_max = 48000,
4107 .nr_rates = 1,
4108 .rate_table = (unsigned int[]) { 48000 }
4109 }
4110 },
4111 {
4112 .ifnum = 0,
4113 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4114 .data = &(const struct audioformat) {
4115 .formats = SNDRV_PCM_FMTBIT_S24_3LE,
4116 .channels = 8,
4117 .iface = 0,
4118 .altsetting = 1,
4119 .altset_idx = 1,
4120 .endpoint = 0x82,
4121 .ep_idx = 1,
4122 .ep_attr = USB_ENDPOINT_XFER_ISOC|
4123 USB_ENDPOINT_SYNC_ASYNC|
4124 USB_ENDPOINT_USAGE_IMPLICIT_FB,
4125 .rates = SNDRV_PCM_RATE_48000,
4126 .rate_min = 48000,
4127 .rate_max = 48000,
4128 .nr_rates = 1,
4129 .rate_table = (unsigned int[]) { 48000 }
4130 }
4131 },
4132 {
4133 .ifnum = -1
4134 }
4135 }
4136 }
4137 },
4138 {
4139
4140
4141
4142
4143 USB_DEVICE(0x1395, 0x0300),
4144 .bInterfaceClass = USB_CLASS_PER_INTERFACE,
4145 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4146 .ifnum = QUIRK_ANY_INTERFACE,
4147 .type = QUIRK_COMPOSITE,
4148 .data = &(const struct snd_usb_audio_quirk[]) {
4149
4150 {
4151 .ifnum = 3,
4152 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4153 },
4154
4155 {
4156 .ifnum = 4,
4157 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4158 },
4159
4160 {
4161 .ifnum = 1,
4162 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4163 },
4164 {
4165 .ifnum = -1
4166 }
4167 }
4168 }
4169 },
4170 {
4171
4172
4173
4174 USB_DEVICE(0x2b53, 0x0023),
4175 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4176 .vendor_name = "Fiero",
4177 .product_name = "SC-01",
4178 .ifnum = QUIRK_ANY_INTERFACE,
4179 .type = QUIRK_COMPOSITE,
4180 .data = &(const struct snd_usb_audio_quirk[]) {
4181 {
4182 .ifnum = 0,
4183 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4184 },
4185
4186 {
4187 .ifnum = 1,
4188 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4189 .data = &(const struct audioformat) {
4190 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4191 .channels = 2,
4192 .fmt_bits = 24,
4193 .iface = 1,
4194 .altsetting = 1,
4195 .altset_idx = 1,
4196 .endpoint = 0x01,
4197 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4198 USB_ENDPOINT_SYNC_ASYNC,
4199 .rates = SNDRV_PCM_RATE_48000,
4200 .rate_min = 48000,
4201 .rate_max = 48000,
4202 .nr_rates = 1,
4203 .rate_table = (unsigned int[]) { 48000 },
4204 .clock = 0x29
4205 }
4206 },
4207
4208 {
4209 .ifnum = 2,
4210 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4211 .data = &(const struct audioformat) {
4212 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4213 .channels = 2,
4214 .fmt_bits = 24,
4215 .iface = 2,
4216 .altsetting = 1,
4217 .altset_idx = 1,
4218 .endpoint = 0x82,
4219 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4220 USB_ENDPOINT_SYNC_ASYNC |
4221 USB_ENDPOINT_USAGE_IMPLICIT_FB,
4222 .rates = SNDRV_PCM_RATE_48000,
4223 .rate_min = 48000,
4224 .rate_max = 48000,
4225 .nr_rates = 1,
4226 .rate_table = (unsigned int[]) { 48000 },
4227 .clock = 0x29
4228 }
4229 },
4230 {
4231 .ifnum = -1
4232 }
4233 }
4234 }
4235 },
4236 {
4237
4238
4239
4240 USB_DEVICE(0x2b53, 0x0024),
4241 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4242 .vendor_name = "Fiero",
4243 .product_name = "SC-01",
4244 .ifnum = QUIRK_ANY_INTERFACE,
4245 .type = QUIRK_COMPOSITE,
4246 .data = &(const struct snd_usb_audio_quirk[]) {
4247 {
4248 .ifnum = 0,
4249 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4250 },
4251
4252 {
4253 .ifnum = 1,
4254 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4255 .data = &(const struct audioformat) {
4256 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4257 .channels = 2,
4258 .fmt_bits = 24,
4259 .iface = 1,
4260 .altsetting = 1,
4261 .altset_idx = 1,
4262 .endpoint = 0x01,
4263 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4264 USB_ENDPOINT_SYNC_ASYNC,
4265 .rates = SNDRV_PCM_RATE_96000,
4266 .rate_min = 96000,
4267 .rate_max = 96000,
4268 .nr_rates = 1,
4269 .rate_table = (unsigned int[]) { 96000 },
4270 .clock = 0x29
4271 }
4272 },
4273
4274 {
4275 .ifnum = 2,
4276 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4277 .data = &(const struct audioformat) {
4278 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4279 .channels = 2,
4280 .fmt_bits = 24,
4281 .iface = 2,
4282 .altsetting = 1,
4283 .altset_idx = 1,
4284 .endpoint = 0x82,
4285 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4286 USB_ENDPOINT_SYNC_ASYNC |
4287 USB_ENDPOINT_USAGE_IMPLICIT_FB,
4288 .rates = SNDRV_PCM_RATE_96000,
4289 .rate_min = 96000,
4290 .rate_max = 96000,
4291 .nr_rates = 1,
4292 .rate_table = (unsigned int[]) { 96000 },
4293 .clock = 0x29
4294 }
4295 },
4296 {
4297 .ifnum = -1
4298 }
4299 }
4300 }
4301 },
4302 {
4303
4304
4305
4306 USB_DEVICE(0x2b53, 0x0031),
4307 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
4308 .vendor_name = "Fiero",
4309 .product_name = "SC-01",
4310 .ifnum = QUIRK_ANY_INTERFACE,
4311 .type = QUIRK_COMPOSITE,
4312 .data = &(const struct snd_usb_audio_quirk[]) {
4313 {
4314 .ifnum = 0,
4315 .type = QUIRK_AUDIO_STANDARD_INTERFACE
4316 },
4317
4318 {
4319 .ifnum = 1,
4320 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4321 .data = &(const struct audioformat) {
4322 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4323 .channels = 2,
4324 .fmt_bits = 24,
4325 .iface = 1,
4326 .altsetting = 1,
4327 .altset_idx = 1,
4328 .endpoint = 0x01,
4329 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4330 USB_ENDPOINT_SYNC_ASYNC,
4331 .rates = SNDRV_PCM_RATE_48000 |
4332 SNDRV_PCM_RATE_96000,
4333 .rate_min = 48000,
4334 .rate_max = 96000,
4335 .nr_rates = 2,
4336 .rate_table = (unsigned int[]) { 48000, 96000 },
4337 .clock = 0x29
4338 }
4339 },
4340
4341 {
4342 .ifnum = 2,
4343 .type = QUIRK_AUDIO_FIXED_ENDPOINT,
4344 .data = &(const struct audioformat) {
4345 .formats = SNDRV_PCM_FMTBIT_S32_LE,
4346 .channels = 2,
4347 .fmt_bits = 24,
4348 .iface = 2,
4349 .altsetting = 1,
4350 .altset_idx = 1,
4351 .endpoint = 0x82,
4352 .ep_attr = USB_ENDPOINT_XFER_ISOC |
4353 USB_ENDPOINT_SYNC_ASYNC |
4354 USB_ENDPOINT_USAGE_IMPLICIT_FB,
4355 .rates = SNDRV_PCM_RATE_48000 |
4356 SNDRV_PCM_RATE_96000,
4357 .rate_min = 48000,
4358 .rate_max = 96000,
4359 .nr_rates = 2,
4360 .rate_table = (unsigned int[]) { 48000, 96000 },
4361 .clock = 0x29
4362 }
4363 },
4364 {
4365 .ifnum = -1
4366 }
4367 }
4368 }
4369 },
4370
4371 #undef USB_DEVICE_VENDOR_SPEC
4372 #undef USB_AUDIO_DEVICE