diff options
author | Chirayu Desai <cdesai@cyanogenmod.org> | 2013-06-29 12:19:32 +0530 |
---|---|---|
committer | Chirayu Desai <cdesai@cyanogenmod.org> | 2013-06-29 12:19:32 +0530 |
commit | 5dd3308e81c660adaf95ff9d1efd699d0ad94b41 (patch) | |
tree | 01d73a37cdc3573dadc9630a36f7b62df7a83ce8 /sound | |
parent | a921f81fdcfec509021fcfe19dbca8650f95e7aa (diff) | |
parent | 863c94fa3948619d3e425f9a3c61e6baf72ee666 (diff) | |
download | kernel_samsung_aries-5dd3308e81c660adaf95ff9d1efd699d0ad94b41.zip kernel_samsung_aries-5dd3308e81c660adaf95ff9d1efd699d0ad94b41.tar.gz kernel_samsung_aries-5dd3308e81c660adaf95ff9d1efd699d0ad94b41.tar.bz2 |
Merge tag 'v3.0.84' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable into HEAD
This is the 3.0.84 stable release
Diffstat (limited to 'sound')
-rw-r--r-- | sound/usb/card.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index ce29d87..b3c7e19 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -148,14 +148,32 @@ static int snd_usb_create_stream(struct snd_usb_audio *chip, int ctrlif, int int return -EINVAL; } + alts = &iface->altsetting[0]; + altsd = get_iface_desc(alts); + + /* + * Android with both accessory and audio interfaces enabled gets the + * interface numbers wrong. + */ + if ((chip->usb_id == USB_ID(0x18d1, 0x2d04) || + chip->usb_id == USB_ID(0x18d1, 0x2d05)) && + interface == 0 && + altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC && + altsd->bInterfaceSubClass == USB_SUBCLASS_VENDOR_SPEC) { + interface = 2; + iface = usb_ifnum_to_if(dev, interface); + if (!iface) + return -EINVAL; + alts = &iface->altsetting[0]; + altsd = get_iface_desc(alts); + } + if (usb_interface_claimed(iface)) { snd_printdd(KERN_INFO "%d:%d:%d: skipping, already claimed\n", dev->devnum, ctrlif, interface); return -EINVAL; } - alts = &iface->altsetting[0]; - altsd = get_iface_desc(alts); if ((altsd->bInterfaceClass == USB_CLASS_AUDIO || altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC) && altsd->bInterfaceSubClass == USB_SUBCLASS_MIDISTREAMING) { |