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