| From 6e84a8d7ac3ba246ef44e313e92bc16a1da1b04a Mon Sep 17 00:00:00 2001 |
| From: Jurgen Kramer <gtmkramer@xs4all.nl> |
| Date: Sat, 15 Nov 2014 14:01:21 +0100 |
| Subject: ALSA: usb-audio: Add ctrl message delay quirk for |
| Marantz/Denon devices |
| |
| From: Jurgen Kramer <gtmkramer@xs4all.nl> |
| |
| commit 6e84a8d7ac3ba246ef44e313e92bc16a1da1b04a upstream. |
| |
| This patch adds a USB control message delay quirk for a few specific Marantz/Denon |
| devices. Without the delay the DACs will not work properly and produces the |
| following type of messages: |
| |
| Nov 15 10:09:21 orwell kernel: [ 91.342880] usb 3-13: clock source 41 is not valid, cannot use |
| Nov 15 10:09:21 orwell kernel: [ 91.343775] usb 3-13: clock source 41 is not valid, cannot use |
| |
| There are likely other Marantz/Denon devices using the same USB module which exhibit the |
| same problems. But as this cannot be verified I limited the patch to the devices |
| I could test. |
| |
| The following two devices are covered by this path: |
| - Marantz SA-14S1 |
| - Marantz HD-DAC1 |
| |
| Signed-off-by: Jurgen Kramer <gtmkramer@xs4all.nl> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/usb/quirks.c | 14 ++++++++++++++ |
| 1 file changed, 14 insertions(+) |
| |
| --- a/sound/usb/quirks.c |
| +++ b/sound/usb/quirks.c |
| @@ -1142,6 +1142,20 @@ void snd_usb_ctl_msg_quirk(struct usb_de |
| if ((le16_to_cpu(dev->descriptor.idVendor) == 0x23ba) && |
| (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) |
| mdelay(20); |
| + |
| + /* Marantz/Denon devices with USB DAC functionality need a delay |
| + * after each class compliant request |
| + */ |
| + if ((le16_to_cpu(dev->descriptor.idVendor) == 0x154e) && |
| + (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) { |
| + |
| + switch (le16_to_cpu(dev->descriptor.idProduct)) { |
| + case 0x3005: /* Marantz HD-DAC1 */ |
| + case 0x3006: /* Marantz SA-14S1 */ |
| + mdelay(20); |
| + break; |
| + } |
| + } |
| } |
| |
| /* |