diff mbox

usb-audio: Add ctrl message delay quirk for Marantz/Denon devices

Message ID 1416056481-5086-1-git-send-email-gtmkramer@xs4all.nl (mailing list archive)
State Accepted
Commit 6e84a8d7ac3ba246ef44e313e92bc16a1da1b04a
Headers show

Commit Message

Jurgen Kramer Nov. 15, 2014, 1:01 p.m. UTC
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>
---
 sound/usb/quirks.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Takashi Iwai Nov. 16, 2014, 8:49 a.m. UTC | #1
At Sat, 15 Nov 2014 14:01:21 +0100,
Jurgen Kramer wrote:
> 
> 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>

Thanks, applied.


Takashi

> ---
>  sound/usb/quirks.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
> index d2aa45a..a5941f8 100644
> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -1146,6 +1146,20 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
>  	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;
> +		}
> +	}
>  }
>  
>  /*
> -- 
> 1.9.3
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
diff mbox

Patch

diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index d2aa45a..a5941f8 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1146,6 +1146,20 @@  void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
 	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;
+		}
+	}
 }
 
 /*