ALSA: usb-audio: Add support for MOTU MicroBook IIc

MicroBook IIc operates in UAC2 mode by default. This patch addresses
several issues with it:

- MicroBook II and IIc shares the same USB ID. We can distinguish them
  by interface class.
- MaxPacketsOnly attribute is erroneously set in endpoint descriptors.
  As a result this card produces noise with all sample rates other than
  96 KHz. This also causes issues like IOMMU page faults and other
  problems with host controller.
- Sample rate changes takes more than 2 seconds for this device. Clock
  validity request returns false during that period, so the clock validity
  quirk is required.

Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
Link: https://lore.kernel.org/r/20200229151815.14199-1-alexander@tsoy.me
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Этот коммит содержится в:
Alexander Tsoy
2020-02-29 18:18:15 +03:00
коммит произвёл Takashi Iwai
родитель 66db29588d
Коммит 2edb84e304
4 изменённых файлов: 72 добавлений и 14 удалений

Просмотреть файл

@@ -357,7 +357,12 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
ep = 0x81;
ifnum = 1;
goto add_sync_ep_from_ifnum;
case USB_ID(0x07fd, 0x0004): /* MOTU MicroBook II */
case USB_ID(0x07fd, 0x0004): /* MOTU MicroBook II/IIc */
/* MicroBook IIc */
if (altsd->bInterfaceClass == USB_CLASS_AUDIO)
return 0;
/* MicroBook II */
ep = 0x84;
ifnum = 0;
goto add_sync_ep_from_ifnum;