diff options
author | Guillaume Fougnies <guillaume@eulerian.com> | 2016-01-25 18:28:27 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-01-26 00:58:57 -0500 |
commit | 5a4ff9ec8d6edd2ab1cfe8ce6a080d6e57cbea9a (patch) | |
tree | a69c85de5d947b3bd9987e0793c3208d96f44656 /sound | |
parent | 462b3f161beb62eeb290f4ec52f5ead29a2f8ac7 (diff) |
ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay
TEAC UD-501/UD-503/NT-503 fail to switch properly between different
rate/format. Similar to 'Playback Design', this patch corrects the
invalid clock source error for TEAC products and avoids complete
freeze of the usb interface of 503 series.
Signed-off-by: Guillaume Fougnies <guillaume@eulerian.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/usb/quirks.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 23ea6d800c4c..a75d9ce7d77a 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c | |||
@@ -1205,8 +1205,12 @@ void snd_usb_set_interface_quirk(struct usb_device *dev) | |||
1205 | * "Playback Design" products need a 50ms delay after setting the | 1205 | * "Playback Design" products need a 50ms delay after setting the |
1206 | * USB interface. | 1206 | * USB interface. |
1207 | */ | 1207 | */ |
1208 | if (le16_to_cpu(dev->descriptor.idVendor) == 0x23ba) | 1208 | switch (le16_to_cpu(dev->descriptor.idVendor)) { |
1209 | case 0x23ba: /* Playback Design */ | ||
1210 | case 0x0644: /* TEAC Corp. */ | ||
1209 | mdelay(50); | 1211 | mdelay(50); |
1212 | break; | ||
1213 | } | ||
1210 | } | 1214 | } |
1211 | 1215 | ||
1212 | void snd_usb_ctl_msg_quirk(struct usb_device *dev, unsigned int pipe, | 1216 | 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, | |||
1221 | (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) | 1225 | (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) |
1222 | mdelay(20); | 1226 | mdelay(20); |
1223 | 1227 | ||
1228 | /* | ||
1229 | * "TEAC Corp." products need a 20ms delay after each | ||
1230 | * class compliant request | ||
1231 | */ | ||
1232 | if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0644) && | ||
1233 | (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) | ||
1234 | mdelay(20); | ||
1235 | |||
1224 | /* Marantz/Denon devices with USB DAC functionality need a delay | 1236 | /* Marantz/Denon devices with USB DAC functionality need a delay |
1225 | * after each class compliant request | 1237 | * after each class compliant request |
1226 | */ | 1238 | */ |