linux/include/linux/usb
Pawel Moll e32afc122e ALSA: usb: Fix Processing Unit Descriptor parsers
commit b531f81b0d upstream.

Commit 99fc86450c "ALSA: usb-mixer:
parse descriptors with structs" introduced a set of useful parsers
for descriptors. Unfortunately the parses for the Processing Unit
Descriptor came with a very subtle bug...

Functions uac_processing_unit_iProcessing() and
uac_processing_unit_specific() were indexing the baSourceID array
forgetting the fields before the iProcessing and process-specific
descriptors.

The problem was observed with Sound Blaster Extigy mixer,
where nNrModes in Up/Down-mix Processing Unit Descriptor
was accessed at offset 10 of the descriptor (value 0)
instead of offset 15 (value 7). In result the resulting
control had interesting limit values:

Simple mixer control 'Channel Routing Mode Select',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - -1
  Mono: -1 [100%]

Fixed by starting from the bmControls, which was calculated
correctly, instead of baSourceID.

Now the mentioned control is fine:

Simple mixer control 'Channel Routing Mode Select',0
  Capabilities: volume volume-joined penum
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 6
  Mono: 0 [0%]

Signed-off-by: Pawel Moll <mail@pawelmoll.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-28 06:59:02 -08:00
..
association.h
atmel_usba_udc.h
audio-v2.h usb: uac2: Add ACHeader and FormatType descriptor 2012-02-15 10:10:11 +02:00
audio.h ALSA: usb: Fix Processing Unit Descriptor parsers 2013-02-28 06:59:02 -08:00
c67x00.h
cdc-wdm.h usb: cdc-wdm: adding usb_cdc_wdm_register subdriver support 2012-03-08 13:06:48 -08:00
cdc.h
ch9.h usb: Using correct way to clear usb3.0 device's remote wakeup feature. 2013-02-11 08:47:20 -08:00
ch11.h USB/xHCI: Enable USB 3.0 hub remote wakeup. 2012-02-14 12:12:24 -08:00
composite.h usb: gadget: add SuperSpeed support to the Gadget Framework 2011-07-01 14:27:05 -07:00
ehci_def.h USB: EHCI: Support controllers with big endian capability regs 2011-05-03 11:43:21 -07:00
ehci_pdriver.h USB: EHCI: Add a generic platform device driver 2012-03-15 12:42:07 -07:00
functionfs.h Fix common misspellings 2011-03-31 11:26:23 -03:00
g_hid.h
g_printer.h
gadget.h usb: gadget: add generic map/unmap request utilities 2012-02-28 14:48:23 +02:00
gadgetfs.h
gpio_vbus.h
hcd.h USB: add NO_D3_DURING_SLEEP flag and revert 151b612847 2012-06-22 11:37:13 -07:00
input.h
intel_mid_otg.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
iowarrior.h
irda.h
isp116x.h
isp1362.h
isp1760.h
Kbuild USB: export video.h to the includes available for userspace 2011-09-23 23:07:26 -03:00
langwell_udc.h
m66592.h usb: gadget: m66592-udc: add function for external controller 2011-07-09 01:08:39 +03:00
midi.h Fix common misspellings 2011-03-31 11:26:23 -03:00
msm_hsusb_hw.h USB: OTG: msm: Add PHY suspend support for MSM8960 2011-05-06 18:27:49 -07:00
msm_hsusb.h usb: otg: msm: Start using struct usb_otg 2012-02-13 13:35:38 +02:00
musb.h
net2280.h
ohci_pdriver.h USB: OHCI: Add a generic platform device driver 2012-03-15 12:41:58 -07:00
otg.h usb: musb: wake the device before ulpi transfers 2012-04-10 19:11:48 +03:00
quirks.h
r8a66597.h usb: gadget: r8a66597-udc: add support for SUDMAC 2011-10-13 20:38:39 +03:00
renesas_usbhs.h usb: renesas_usbhs: add support for SUDMAC 2012-01-24 11:33:04 +02:00
rndis_host.h rndis_host: Poll status before control channel where necessary 2011-04-13 14:48:55 -07:00
serial.h USB: fix bug in serial driver unregistration 2012-04-09 15:36:20 -07:00
sl811.h
storage.h usb/storage: remove Filler member from struct bulk_cs_wrap 2012-02-28 11:11:22 -08:00
tmc.h
uas.h usb/uas: add usb_pipe_usage_descriptor 2012-02-02 14:51:19 -08:00
ulpi.h usb: otg: ulpi: Start using struct usb_otg 2012-02-13 13:35:56 +02:00
usbnet.h usbnet: fix skb traversing races during unlink(v2) 2012-05-15 13:41:42 -04:00
video.h
wusb-wa.h
wusb.h Fix common misspellings 2011-03-31 11:26:23 -03:00