diff options
author | Alexander Tsoy <alexander@tsoy.me> | 2020-01-12 13:23:58 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-01-13 12:47:56 +0300 |
commit | 73ac9f5e5b43a5dbadb61f27dae7a971f7ec0d22 (patch) | |
tree | dd9e57dc62f3f57a62366d74ace0d7885ad3b214 /sound/usb/card.c | |
parent | 791a485f2da392df00341ed4c0c14780fd320d92 (diff) | |
download | linux-73ac9f5e5b43a5dbadb61f27dae7a971f7ec0d22.tar.xz |
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.c | 4 |
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 */ |