aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/card.c
diff options
context:
space:
mode:
authorAlexander Tsoy <alexander@tsoy.me>2020-01-12 13:23:58 +0300
committerTakashi Iwai <tiwai@suse.de>2020-01-13 10:47:56 +0100
commit73ac9f5e5b43a5dbadb61f27dae7a971f7ec0d22 (patch)
treedd9e57dc62f3f57a62366d74ace0d7885ad3b214 /sound/usb/card.c
parentALSA: dice: add support for Alesis MasterControl (diff)
downloadlinux-dev-73ac9f5e5b43a5dbadb61f27dae7a971f7ec0d22.tar.xz
linux-dev-73ac9f5e5b43a5dbadb61f27dae7a971f7ec0d22.zip
ALSA: usb-audio: Add boot quirk for MOTU M Series
Add delay to make sure that audio urbs are not sent too early. Otherwise the device hangs. Windows driver makes ~2s delay, so use about the same time delay value. snd_usb_apply_boot_quirk() is called 3 times for my MOTU M4, which is an overkill. Thus a quirk that is called only once is implemented. Also send two vendor-specific control messages before and after the delay. This behaviour is blindly copied from the Windows driver. Signed-off-by: Alexander Tsoy <alexander@tsoy.me> Link: https://lore.kernel.org/r/20200112102358.18085-1-alexander@tsoy.me Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/card.c')
-rw-r--r--sound/usb/card.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c
index 9f743ebae615..2f582ac7cf78 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -600,6 +600,10 @@ static int usb_audio_probe(struct usb_interface *intf,
}
}
if (! chip) {
+ err = snd_usb_apply_boot_quirk_once(dev, intf, quirk, id);
+ if (err < 0)
+ return err;
+
/* it's a fresh one.
* now look for an empty slot and create a new card instance
*/