|
@@ -1205,8 +1205,12 @@ void snd_usb_set_interface_quirk(struct usb_device *dev)
|
|
|
* "Playback Design" products need a 50ms delay after setting the
|
|
|
* USB interface.
|
|
|
*/
|
|
|
- if (le16_to_cpu(dev->descriptor.idVendor) == 0x23ba)
|
|
|
+ switch (le16_to_cpu(dev->descriptor.idVendor)) {
|
|
|
+ case 0x23ba: /* Playback Design */
|
|
|
+ case 0x0644: /* TEAC Corp. */
|
|
|
mdelay(50);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
|
|
@@ -1221,6 +1225,14 @@ void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe,
|
|
|
(requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
|
|
|
mdelay(20);
|
|
|
|
|
|
+ /*
|
|
|
+ * "TEAC Corp." products need a 20ms delay after each
|
|
|
+ * class compliant request
|
|
|
+ */
|
|
|
+ if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0644) &&
|
|
|
+ (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
|
|
|
+ mdelay(20);
|
|
|
+
|
|
|
/* Marantz/Denon devices with USB DAC functionality need a delay
|
|
|
* after each class compliant request
|
|
|
*/
|