Lines Matching +full:hall +full:- +full:channel

1 // SPDX-License-Identifier: GPL-2.0-or-later
38 int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber;
42 for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
43 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
46 if (quirk->ifnum != probed_ifnum &&
54 for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
55 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
58 if (quirk->ifnum != probed_ifnum &&
99 alts = &iface->altsetting[0];
101 err = snd_usb_parse_audio_interface(chip, altsd->bInterfaceNumber);
104 altsd->bInterfaceNumber, err);
108 usb_set_interface(chip->dev, altsd->bInterfaceNumber, 0);
120 stream = (fp->endpoint & USB_DIR_IN) ?
129 err = snd_usb_add_endpoint(chip, fp->endpoint,
134 if (fp->sync_ep) {
135 err = snd_usb_add_endpoint(chip, fp->sync_ep,
136 fp->implicit_fb ?
160 fp = kmemdup(quirk->data, sizeof(*fp), GFP_KERNEL);
162 return -ENOMEM;
164 INIT_LIST_HEAD(&fp->list);
165 if (fp->nr_rates > MAX_NR_RATES) {
167 return -EINVAL;
169 if (fp->nr_rates > 0) {
170 rate_table = kmemdup_array(fp->rate_table, fp->nr_rates, sizeof(int),
174 return -ENOMEM;
176 fp->rate_table = rate_table;
179 if (fp->iface != get_iface_desc(&iface->altsetting[0])->bInterfaceNumber ||
180 fp->altset_idx >= iface->num_altsetting) {
181 err = -EINVAL;
184 alts = &iface->altsetting[fp->altset_idx];
186 if (altsd->bNumEndpoints <= fp->ep_idx) {
187 err = -EINVAL;
191 fp->protocol = altsd->bInterfaceProtocol;
193 if (fp->datainterval == 0)
194 fp->datainterval = snd_usb_parse_datainterval(chip, alts);
195 if (fp->maxpacksize == 0)
196 fp->maxpacksize = le16_to_cpu(get_endpoint(alts, fp->ep_idx)->wMaxPacketSize);
197 if (!fp->fmt_type)
198 fp->fmt_type = UAC_FORMAT_TYPE_I;
204 usb_set_interface(chip->dev, fp->iface, 0);
206 snd_usb_init_sample_rate(chip, fp, fp->rate_max);
210 list_del(&fp->list); /* unlink for avoiding double-free */
233 /* must have a non-zero altsetting for streaming */
234 if (iface->num_altsetting < 2)
235 return -ENODEV;
236 alts = &iface->altsetting[1];
240 if (altsd->bNumEndpoints < 1)
241 return -ENODEV;
244 return -ENODEV;
247 ashd = snd_usb_find_csint_desc(alts->extra, alts->extralen, NULL,
249 fmtd = snd_usb_find_csint_desc(alts->extra, alts->extralen, NULL,
251 if (!ashd || ashd->bLength < 7 ||
252 !fmtd || fmtd->bLength < 8)
253 return -ENODEV;
270 injd = snd_usb_find_csint_desc(alts->extra, alts->extralen,
272 outjd = snd_usb_find_csint_desc(alts->extra, alts->extralen,
275 return -ENODEV;
278 return -ENODEV;
279 if (injd && (injd->bLength < 5 ||
280 (injd->bJackType != USB_MS_EMBEDDED &&
281 injd->bJackType != USB_MS_EXTERNAL)))
282 return -ENODEV;
283 if (outjd && (outjd->bLength < 6 ||
284 (outjd->bJackType != USB_MS_EMBEDDED &&
285 outjd->bJackType != USB_MS_EXTERNAL)))
286 return -ENODEV;
300 /* might have a vendor-specific descriptor <06 24 F1 02 ...> */
302 roland_desc = snd_usb_find_csint_desc(alts->extra,
303 alts->extralen,
306 return -ENODEV;
323 mshd = (struct usb_ms_header_descriptor *)alts->extra;
324 if (alts->extralen < 7 ||
325 mshd->bLength < 7 ||
326 mshd->bDescriptorType != USB_DT_CS_INTERFACE ||
327 mshd->bDescriptorSubtype != USB_MS_HEADER)
328 return -ENODEV;
330 msepd = (struct usb_ms_endpoint_descriptor *)alts->endpoint[0].extra;
331 if (alts->endpoint[0].extralen < 4 ||
332 msepd->bLength < 4 ||
333 msepd->bDescriptorType != USB_DT_CS_ENDPOINT ||
334 msepd->bDescriptorSubtype != UAC_MS_GENERAL ||
335 msepd->bNumEmbMIDIJack < 1 ||
336 msepd->bNumEmbMIDIJack > 16)
337 return -ENODEV;
351 alts = &iface->altsetting[0];
355 if (altsd->bNumEndpoints < 1)
356 return -ENODEV;
360 return -ENODEV;
362 switch (USB_ID_VENDOR(chip->usb_id)) {
365 if (err != -ENODEV)
370 if (err != -ENODEV)
386 if (err == -ENODEV)
392 * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
414 if (iface->num_altsetting < 2)
415 return -ENXIO;
416 alts = &iface->altsetting[1];
419 if (altsd->bNumEndpoints == 2) {
437 chip->usb_id == USB_ID(0x0582, 0x002b)
439 return __snd_usbmidi_create(chip->card, iface,
440 &chip->midi_list, quirk,
441 chip->usb_id,
442 &chip->num_rawmidis);
445 if (altsd->bNumEndpoints != 1)
446 return -ENXIO;
450 return -ENOMEM;
452 fp->iface = altsd->bInterfaceNumber;
453 fp->endpoint = get_endpoint(alts, 0)->bEndpointAddress;
454 fp->ep_attr = get_endpoint(alts, 0)->bmAttributes;
455 fp->datainterval = 0;
456 fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
457 INIT_LIST_HEAD(&fp->list);
459 switch (fp->maxpacksize) {
461 fp->rate_max = fp->rate_min = 44100;
465 fp->rate_max = fp->rate_min = 48000;
469 fp->rate_max = fp->rate_min = 96000;
474 return -ENXIO;
479 list_del(&fp->list); /* unlink for avoiding double-free */
483 usb_set_interface(chip->dev, fp->iface, 0);
495 if (quirk->ifnum < 0)
498 return snd_usb_create_mixer(chip, quirk->ifnum);
502 * audio-interface quirks
540 if (quirk->type < QUIRK_TYPE_COUNT) {
541 return quirk_funcs[quirk->type](chip, iface, driver, quirk);
543 usb_audio_err(chip, "invalid quirk type %d\n", quirk->type);
544 return -ENXIO;
557 struct usb_host_config *config = dev->actconfig;
561 if (le16_to_cpu(get_cfg_desc(config)->wTotalLength) == EXTIGY_FIRMWARE_SIZE_OLD ||
562 le16_to_cpu(get_cfg_desc(config)->wTotalLength) == EXTIGY_FIRMWARE_SIZE_NEW) {
563 dev_dbg(&dev->dev, "sending Extigy boot sequence...\n");
568 dev_dbg(&dev->dev, "error sending boot message: %d\n", err);
572 return -ENOMEM;
576 dev_dbg(&dev->dev, "error usb_get_descriptor: %d\n", err);
577 if (new_device_descriptor->bNumConfigurations > dev->descriptor.bNumConfigurations)
578 dev_dbg(&dev->dev, "error too large bNumConfigurations: %d\n",
579 new_device_descriptor->bNumConfigurations);
581 memcpy(&dev->descriptor, new_device_descriptor, sizeof(dev->descriptor));
584 dev_dbg(&dev->dev, "error usb_reset_configuration: %d\n", err);
585 dev_dbg(&dev->dev, "extigy_boot: new boot length = %d\n",
586 le16_to_cpu(get_cfg_desc(config)->wTotalLength));
587 return -ENODEV; /* quit this anyway */
603 return -ENODEV;
612 if (dev->actconfig->desc.bConfigurationValue == 1) {
613 dev_info(&dev->dev,
622 dev_dbg(&dev->dev,
628 return -ENODEV;
630 dev_info(&dev->dev, "Fast Track Pro config OK\n");
636 * C-Media CM106/CM106+ have four 16-bit internal registers that are nicely
654 * Enable line-out driver mode, set headphone source to front
785 /* REG5: de-assert AD/DA reset signals */
837 return -EINVAL;
840 return -ENOMEM;
853 * they come up as vendor-specific device when first connected.
874 /* return -EAGAIN, so the creation of an audio interface for this
877 return -EAGAIN;
912 struct usb_host_config *config = dev->actconfig;
919 fwsize = le16_to_cpu(get_cfg_desc(config)->wTotalLength);
922 dev_err(&dev->dev, "Invalid firmware size=%d.\n", fwsize);
923 return -ENODEV;
926 dev_dbg(&dev->dev, "Sending Digidesign Mbox 2 boot sequence...\n");
933 /* Control magic - load onboard firmware */
937 dev_dbg(&dev->dev, "device not ready, resending boot sequence...\n");
942 dev_err(&dev->dev, "Unknown bootresponse=%d, or timed out, ignoring device.\n", bootresponse[0]);
943 return -ENODEV;
946 dev_dbg(&dev->dev, "device initialised!\n");
950 return -ENOMEM;
955 dev_dbg(&dev->dev, "error usb_get_descriptor: %d\n", err);
956 if (new_device_descriptor->bNumConfigurations > dev->descriptor.bNumConfigurations)
957 dev_dbg(&dev->dev, "error too large bNumConfigurations: %d\n",
958 new_device_descriptor->bNumConfigurations);
960 memcpy(&dev->descriptor, new_device_descriptor, sizeof(dev->descriptor));
964 dev_dbg(&dev->dev, "error usb_reset_configuration: %d\n", err);
965 dev_dbg(&dev->dev, "mbox2_boot: new boot length = %d\n",
966 le16_to_cpu(get_cfg_desc(config)->wTotalLength));
970 dev_info(&dev->dev, "Digidesign Mbox 2: 24bit 48kHz");
979 dev_dbg(&dev->dev, "Waiting for Axe-Fx III to boot up...\n");
981 /* If the Axe-Fx III has not fully booted, it will timeout when trying
983 * used here to detect when the Axe-Fx III has finished booting as the
990 dev_err(&dev->dev,
991 "failed waiting for Axe-Fx III to boot: %d\n", err);
995 dev_dbg(&dev->dev, "Axe-Fx III is now ready\n");
999 dev_dbg(&dev->dev,
1000 "error stopping Axe-Fx III interface: %d\n", err);
1030 /* Analogue input 1 left channel: */
1033 /* Analogue input 1 right channel: */
1036 /* Analogue input 2 left channel: */
1039 /* Analogue input 2 right channel: */
1042 /* Analogue input 3 left channel: */
1045 /* Analogue input 3 right channel: */
1048 /* Analogue input 4 left channel: */
1051 /* Analogue input 4 right channel: */
1058 /* Analogue software return 1 left channel: */
1063 /* Analogue software return 1 right channel: */
1068 /* Analogue software return 2 left channel: */
1073 /* Analogue software return 2 right channel: */
1079 /* Analogue software return 3 left channel: */
1082 /* Analogue software return 3 right channel: */
1085 /* Analogue software return 4 left channel: */
1088 /* Analogue software return 4 right channel: */
1095 /* Analogue fx return left channel: */
1098 /* Analogue fx return right channel: */
1149 /* S/PDIF hardware input 1 left channel */
1152 /* S/PDIF hardware input 1 right channel */
1155 /* S/PDIF hardware input 2 left channel */
1158 /* S/PDIF hardware input 2 right channel */
1161 /* S/PDIF hardware input 3 left channel */
1164 /* S/PDIF hardware input 3 right channel */
1167 /* S/PDIF hardware input 4 left channel */
1170 /* S/PDIF hardware input 4 right channel */
1173 /* S/PDIF software return 1 left channel */
1176 /* S/PDIF software return 1 right channel */
1179 /* S/PDIF software return 2 left channel */
1182 /* S/PDIF software return 2 right channel */
1188 /* S/PDIF software return 3 left channel */
1194 /* S/PDIF software return 3 right channel */
1197 /* S/PDIF software return 4 left channel */
1203 /* S/PDIF software return 4 right channel */
1209 /* S/PDIF fx returns left channel */
1212 /* S/PDIF fx returns right channel */
1220 /* Hall 1 = 0x03 */
1221 /* Hall 2 = 0x04 */
1269 struct usb_host_config *config = dev->actconfig;
1274 descriptor_size = le16_to_cpu(get_cfg_desc(config)->wTotalLength);
1277 dev_err(&dev->dev, "MBOX3: Invalid descriptor size=%d.\n", descriptor_size);
1278 return -ENODEV;
1281 dev_dbg(&dev->dev, "MBOX3: device initialised!\n");
1285 return -ENOMEM;
1290 dev_dbg(&dev->dev, "MBOX3: error usb_get_descriptor: %d\n", err);
1291 if (new_device_descriptor->bNumConfigurations > dev->descriptor.bNumConfigurations)
1292 dev_dbg(&dev->dev, "MBOX3: error too large bNumConfigurations: %d\n",
1293 new_device_descriptor->bNumConfigurations);
1295 memcpy(&dev->descriptor, new_device_descriptor, sizeof(dev->descriptor));
1299 dev_dbg(&dev->dev, "MBOX3: error usb_reset_configuration: %d\n", err);
1301 dev_dbg(&dev->dev, "MBOX3: new boot length = %d\n",
1302 le16_to_cpu(get_cfg_desc(config)->wTotalLength));
1305 dev_info(&dev->dev, "MBOX3: Initialized.");
1318 return -EINVAL;
1330 return -EINVAL;
1354 return -ENOMEM;
1356 dev_info(&dev->dev, "Waiting for MOTU Microbook II to boot up...\n");
1365 dev_err(&dev->dev,
1374 dev_err(&dev->dev,
1376 err = -ENODEV;
1387 dev_err(&dev->dev,
1399 if (actual_length == 12 && buf[actual_length - 1] == 1)
1405 dev_info(&dev->dev, "MOTU MicroBook II ready\n");
1444 #define MAUDIO_SET_COMPATIBLE 0x80 /* use only "win-compatible" interfaces */
1446 #define MAUDIO_SET_96K 0x04 /* 48-96kHz rate if set, 8-48kHz otherwise */
1461 usb_set_interface(chip->dev, iface, 0);
1462 if (chip->setup & MAUDIO_SET) {
1463 if (chip->setup & MAUDIO_SET_COMPATIBLE) {
1470 if ((chip->setup & MAUDIO_SET_96K) && altno != 1)
1472 mask = chip->setup & MAUDIO_SET_MASK;
1483 altno, iface, chip->setup);
1494 usb_set_interface(chip->dev, iface, 0);
1496 if (chip->setup & MAUDIO_SET) {
1498 if ((chip->setup & MAUDIO_SET_DTS) && altno != 6)
1500 if ((chip->setup & MAUDIO_SET_96K) && altno != 1)
1502 mask = chip->setup & MAUDIO_SET_MASK;
1522 usb_set_interface(chip->dev, iface, 0);
1527 if (chip->setup & (MAUDIO_SET | MAUDIO_SET_24B)) {
1528 if (chip->setup & MAUDIO_SET_96K) {
1531 } else if (chip->setup & MAUDIO_SET_DI) {
1543 /* keep only 16-Bit mode */
1550 altno, iface, chip->setup);
1576 if ((chip->setup == 0 || chip->setup > 2) && altno != 2)
1578 else if (chip->setup == 1 && altno != 1)
1580 else if (chip->setup == 2 && altno != 3)
1591 if (chip->usb_id == USB_ID(0x0763, 0x2003))
1594 if (chip->usb_id == USB_ID(0x0763, 0x2001))
1597 if (chip->usb_id == USB_ID(0x0763, 0x2012))
1600 if (chip->usb_id == USB_ID(0x194f, 0x010c))
1614 /* SB Extigy needs special boot-up sequence */
1619 /* SB Audigy 2 NX needs its own boot-up magic, too */
1623 /* C-Media CM106 / Turtle Beach Audio Advantage Roadie */
1627 /* C-Media CM6206 / CM106-Like Sound Device */
1651 case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro USB */
1655 case USB_ID(0x2466, 0x8010): /* Fractal Audio Axe-Fx 3 */
1659 * For some reason interface 3 with vendor-spec class is
1662 if (get_iface_desc(intf->altsetting)->bInterfaceClass ==
1664 get_iface_desc(intf->altsetting)->bInterfaceNumber < 3)
1689 * check if the device uses big-endian samples
1694 /* it depends on altsetting whether the device is big-endian or not */
1695 switch (chip->usb_id) {
1696 case USB_ID(0x0763, 0x2001): /* M-Audio Quattro: captured data only */
1697 if (fp->altsetting == 2 || fp->altsetting == 3 ||
1698 fp->altsetting == 5 || fp->altsetting == 6)
1701 case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */
1702 if (chip->setup == 0x00 ||
1703 fp->altsetting == 1 || fp->altsetting == 2 ||
1704 fp->altsetting == 3)
1707 case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro */
1708 if (fp->altsetting == 2 || fp->altsetting == 3 ||
1709 fp->altsetting == 5 || fp->altsetting == 6)
1717 * For E-Mu 0404USB/0202USB/TrackerPre/0204 sample rate should be set for device,
1739 if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) {
1740 if (subs->stream->substream[SNDRV_PCM_STREAM_CAPTURE].cur_audiofmt)
1744 switch (fmt->rate_min) {
1764 snd_emuusb_set_samplerate(subs->stream->chip, emu_samplerate_id);
1765 subs->pkt_offset_adj = (emu_samplerate_id >= EMU_QUIRK_SR_176400HZ) ? 4 : 0;
1771 unsigned int cur_rate = subs->data_endpoint->cur_rate;
1777 usb_set_interface(subs->dev, 0, 1);
1778 // we should derive windex from fmt-sync_ep but it's not set
1779 snd_usb_ctl_msg(subs->stream->chip->dev,
1780 usb_sndctrlpipe(subs->stream->chip->dev, 0),
1790 u32 new_rate = subs->data_endpoint->cur_rate;
1794 snd_usb_ctl_msg(subs->dev, usb_rcvctrlpipe(subs->dev, 0),
1797 dev_dbg(&subs->dev->dev,
1800 dev_dbg(&subs->dev->dev,
1807 dev_info(&subs->dev->dev,
1810 snd_usb_ctl_msg(subs->dev, usb_sndctrlpipe(subs->dev, 0),
1814 snd_usb_ctl_msg(subs->dev, usb_sndctrlpipe(subs->dev, 0),
1819 snd_usb_ctl_msg(subs->dev, usb_rcvctrlpipe(subs->dev, 0),
1822 dev_warn(&subs->dev->dev, "MBOX3: Couldn't set the sample rate");
1833 unsigned int cur_rate = subs->data_endpoint->cur_rate;
1844 return -EINVAL;
1851 snd_usb_ctl_msg(subs->stream->chip->dev,
1852 usb_sndctrlpipe(subs->stream->chip->dev, 0),
1860 switch (subs->stream->chip->usb_id) {
1861 case USB_ID(0x041e, 0x3f02): /* E-Mu 0202 USB */
1862 case USB_ID(0x041e, 0x3f04): /* E-Mu 0404 USB */
1863 case USB_ID(0x041e, 0x3f0a): /* E-Mu Tracker Pre */
1864 case USB_ID(0x041e, 0x3f19): /* E-Mu 0204 USB */
1869 subs->stream_offset_adj = 2;
1871 case USB_ID(0x2b73, 0x0013): /* Pioneer DJM-450 */
1874 case USB_ID(0x08e4, 0x017f): /* Pioneer DJM-750 */
1875 case USB_ID(0x08e4, 0x0163): /* Pioneer DJM-850 */
1891 struct usb_device *dev = chip->dev;
1894 if (chip->quirk_flags & QUIRK_FLAG_ITF_USB_DSD_DAC) {
1898 err = usb_set_interface(dev, fmt->iface, 0);
1905 if (fmt->formats & SNDRV_PCM_FMTBIT_DSD_U32_BE) {
1934 if (USB_ID_VENDOR(ep->chip->usb_id) == 0x23ba &&
1935 ep->type == SND_USB_ENDPOINT_TYPE_SYNC)
1936 ep->skip_packets = 4;
1939 * M-Audio Fast Track C400/C600 - when packets are not skipped, real
1940 * world latency varies by approx. +/- 50 frames (at 96kHz) each time
1942 * start up, the real world latency is stable within +/- 1 frame (also
1945 if ((ep->chip->usb_id == USB_ID(0x0763, 0x2030) ||
1946 ep->chip->usb_id == USB_ID(0x0763, 0x2031)) &&
1947 ep->type == SND_USB_ENDPOINT_TYPE_DATA)
1948 ep->skip_packets = 16;
1951 if ((ep->chip->usb_id == USB_ID(0x0644, 0x8038) || /* TEAC UD-H01 */
1952 ep->chip->usb_id == USB_ID(0x1852, 0x5034)) && /* T+A Dac8 */
1953 ep->syncmaxsize == 4)
1954 ep->tenor_fb_quirk = 1;
1962 struct snd_usb_audio *chip = dev_get_drvdata(&dev->dev);
1967 if (chip->quirk_flags & QUIRK_FLAG_CTL_MSG_DELAY)
1969 else if (chip->quirk_flags & QUIRK_FLAG_CTL_MSG_DELAY_1M)
1971 else if (chip->quirk_flags & QUIRK_FLAG_CTL_MSG_DELAY_5M)
1977 * augment the PCM format bit-field for DSD types. The UAC standards
1978 * don't have a designated bit field to denote DSD-capable interfaces,
1989 if (USB_ID_VENDOR(chip->usb_id) == 0x23ba &&
1990 USB_ID_PRODUCT(chip->usb_id) < 0x0110) {
1991 switch (fp->altsetting) {
1993 fp->dsd_dop = true;
1996 fp->dsd_bitrev = true;
1999 fp->dsd_bitrev = true;
2005 switch (chip->usb_id) {
2007 case USB_ID(0x20b1, 0x3089): /* Mola-Mola DAC */
2011 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */
2012 if (fp->altsetting == 2)
2017 case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */
2018 case USB_ID(0x16d0, 0x06b2): /* NuPrime DAC-10 */
2019 case USB_ID(0x16d0, 0x06b4): /* NuPrime Audio HD-AVP/AVA */
2021 case USB_ID(0x16d0, 0x09d8): /* NuPrime IDA-8 */
2022 case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */
2029 case USB_ID(0x2622, 0x0041): /* Audiolab M-DAC+ */
2030 case USB_ID(0x278b, 0x5100): /* Rotel RC-1590 */
2031 case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */
2034 if (fp->altsetting == 3)
2039 case USB_ID(0x16d0, 0x071a): /* Amanero - Combo384 */
2040 if (fp->altsetting == 2) {
2041 switch (le16_to_cpu(chip->dev->descriptor.bcdDevice)) {
2053 if (fp->altsetting == 2)
2061 /* ITF-USB DSD based DACs */
2062 if (chip->quirk_flags & QUIRK_FLAG_ITF_USB_DSD_DAC) {
2063 iface = usb_ifnum_to_if(chip->dev, fp->iface);
2066 * three (0-2),
2068 * four (0-3).
2070 if (fp->altsetting == iface->num_altsetting - 1)
2074 /* Mostly generic method to detect many DSD-capable implementations */
2075 if ((chip->quirk_flags & QUIRK_FLAG_DSD_RAW) && fp->dsd_raw)
2085 switch (chip->usb_id) {
2090 fp->attributes &= ~UAC_EP_CS_ATTR_SAMPLE_RATE;
2093 case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */
2095 fp->attributes |= UAC_EP_CS_ATTR_SAMPLE_RATE;
2097 case USB_ID(0x0763, 0x2001): /* M-Audio Quattro USB */
2098 case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro USB */
2103 * plantronics headset and Griffin iMic have set adaptive-in
2106 fp->ep_attr &= ~USB_ENDPOINT_SYNCTYPE;
2108 fp->ep_attr |= USB_ENDPOINT_SYNC_ADAPTIVE;
2110 fp->ep_attr |= USB_ENDPOINT_SYNC_SYNC;
2118 fp->attributes &= ~UAC_EP_CS_ATTR_FILL_MAX;
2122 fp->attributes |= UAC_EP_CS_ATTR_FILL_MAX;
2127 fp->attributes &= ~UAC_EP_CS_ATTR_PITCH_CONTROL;
2186 DEVICE_FLG(0x0499, 0x3108, /* Yamaha YIT-W12TX */
2194 DEVICE_FLG(0x054c, 0x0b8c, /* Sony WALKMAN NW-A45 DAC */
2206 DEVICE_FLG(0x0644, 0x8043, /* TEAC UD-501/UD-501V2/UD-503/NT-503 */
2209 DEVICE_FLG(0x0644, 0x8044, /* Esoteric D-05X */
2212 DEVICE_FLG(0x0644, 0x804a, /* TEAC UD-301 */
2217 DEVICE_FLG(0x0644, 0x806b, /* TEAC UD-701 */
2224 DEVICE_FLG(0x0711, 0x5800, /* MCT Trigger 5 USB-to-HDMI */
2228 DEVICE_FLG(0x0763, 0x2030, /* M-Audio Fast Track C400 */
2230 DEVICE_FLG(0x0763, 0x2031, /* M-Audio Fast Track C600 */
2246 DEVICE_FLG(0x0fd9, 0x0008, /* Hauppauge HVR-950Q */
2260 DEVICE_FLG(0x154e, 0x1002, /* Denon DCD-1500RE */
2262 DEVICE_FLG(0x154e, 0x1003, /* Denon DA-300USB */
2264 DEVICE_FLG(0x154e, 0x3005, /* Marantz HD-DAC1 */
2266 DEVICE_FLG(0x154e, 0x3006, /* Marantz SA-14S1 */
2268 DEVICE_FLG(0x154e, 0x300b, /* Marantz SA-KI RUBY / SA-12 */
2270 DEVICE_FLG(0x154e, 0x500e, /* Denon DN-X1600 */
2274 DEVICE_FLG(0x17aa, 0x1046, /* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */
2278 DEVICE_FLG(0x1852, 0x5062, /* Luxman D-08u */
2280 DEVICE_FLG(0x1852, 0x5065, /* Luxman DA-06 */
2284 DEVICE_FLG(0x19f7, 0x0035, /* RODE NT-USB+ */
2290 DEVICE_FLG(0x2040, 0x7200, /* Hauppauge HVR-950Q */
2292 DEVICE_FLG(0x2040, 0x7201, /* Hauppauge HVR-950Q-MXL */
2294 DEVICE_FLG(0x2040, 0x7210, /* Hauppauge HVR-950Q */
2296 DEVICE_FLG(0x2040, 0x7211, /* Hauppauge HVR-950Q-MXL */
2298 DEVICE_FLG(0x2040, 0x7213, /* Hauppauge HVR-950Q */
2300 DEVICE_FLG(0x2040, 0x7217, /* Hauppauge HVR-950Q */
2302 DEVICE_FLG(0x2040, 0x721b, /* Hauppauge HVR-950Q */
2304 DEVICE_FLG(0x2040, 0x721e, /* Hauppauge HVR-950Q */
2306 DEVICE_FLG(0x2040, 0x721f, /* Hauppauge HVR-950Q */
2308 DEVICE_FLG(0x2040, 0x7240, /* Hauppauge HVR-850 */
2310 DEVICE_FLG(0x2040, 0x7260, /* Hauppauge HVR-950Q */
2312 DEVICE_FLG(0x2040, 0x7270, /* Hauppauge HVR-950Q */
2314 DEVICE_FLG(0x2040, 0x7280, /* Hauppauge HVR-950Q */
2316 DEVICE_FLG(0x2040, 0x7281, /* Hauppauge HVR-950Q-MXL */
2322 DEVICE_FLG(0x21b4, 0x0230, /* Ayre QB-9 Twenty */
2324 DEVICE_FLG(0x21b4, 0x0232, /* Ayre QX-5 Twenty */
2334 DEVICE_FLG(0x2b53, 0x0023, /* Fiero SC-01 (firmware v1.0.0 @ 48 kHz) */
2336 DEVICE_FLG(0x2b53, 0x0024, /* Fiero SC-01 (firmware v1.0.0 @ 96 kHz) */
2338 DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
2340 DEVICE_FLG(0x2d95, 0x8011, /* VIVO USB-C HEADSET */
2342 DEVICE_FLG(0x2d95, 0x8021, /* VIVO USB-C-XE710 HEADSET */
2415 for (p = quirk_flags_table; p->id; p++) {
2416 if (chip->usb_id == p->id ||
2417 (!USB_ID_PRODUCT(p->id) &&
2418 USB_ID_VENDOR(chip->usb_id) == USB_ID_VENDOR(p->id))) {
2421 p->flags, USB_ID_VENDOR(chip->usb_id),
2422 USB_ID_PRODUCT(chip->usb_id));
2423 chip->quirk_flags |= p->flags;