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