diff options
author | Cliff Cai <cliff.cai@analog.com> | 2009-12-09 22:21:12 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-23 14:34:19 -0500 |
commit | d16f172622a7941c4fca09724ce16df5348af5fb (patch) | |
tree | cd219caef34ac53fc6ee1bd097951b166043f1d0 /drivers/usb | |
parent | 465f8294eea1ea206e3a008e7bfe0e8fd53991fc (diff) |
USB: audio gadget: fix wTotalLength calculation
The wTotalLength should contain the sum of the interface and unit
descriptor sizes per the Audio Device Class specification 1.0.
Reported-by: Sergey Lapin <slapin@ossfans.org>
Signed-off-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/f_audio.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/gadget/f_audio.c b/drivers/usb/gadget/f_audio.c index 0f2eee12ee9f..1ff420b7d72f 100644 --- a/drivers/usb/gadget/f_audio.c +++ b/drivers/usb/gadget/f_audio.c | |||
@@ -56,13 +56,16 @@ static struct usb_interface_descriptor ac_interface_desc __initdata = { | |||
56 | DECLARE_UAC_AC_HEADER_DESCRIPTOR(2); | 56 | DECLARE_UAC_AC_HEADER_DESCRIPTOR(2); |
57 | 57 | ||
58 | #define UAC_DT_AC_HEADER_LENGTH UAC_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES) | 58 | #define UAC_DT_AC_HEADER_LENGTH UAC_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES) |
59 | /* 1 input terminal, 1 output terminal and 1 feature unit */ | ||
60 | #define UAC_DT_TOTAL_LENGTH (UAC_DT_AC_HEADER_LENGTH + UAC_DT_INPUT_TERMINAL_SIZE \ | ||
61 | + UAC_DT_OUTPUT_TERMINAL_SIZE + UAC_DT_FEATURE_UNIT_SIZE(0)) | ||
59 | /* B.3.2 Class-Specific AC Interface Descriptor */ | 62 | /* B.3.2 Class-Specific AC Interface Descriptor */ |
60 | static struct uac_ac_header_descriptor_2 ac_header_desc = { | 63 | static struct uac_ac_header_descriptor_2 ac_header_desc = { |
61 | .bLength = UAC_DT_AC_HEADER_LENGTH, | 64 | .bLength = UAC_DT_AC_HEADER_LENGTH, |
62 | .bDescriptorType = USB_DT_CS_INTERFACE, | 65 | .bDescriptorType = USB_DT_CS_INTERFACE, |
63 | .bDescriptorSubtype = UAC_HEADER, | 66 | .bDescriptorSubtype = UAC_HEADER, |
64 | .bcdADC = __constant_cpu_to_le16(0x0100), | 67 | .bcdADC = __constant_cpu_to_le16(0x0100), |
65 | .wTotalLength = __constant_cpu_to_le16(UAC_DT_AC_HEADER_LENGTH), | 68 | .wTotalLength = __constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH), |
66 | .bInCollection = F_AUDIO_NUM_INTERFACES, | 69 | .bInCollection = F_AUDIO_NUM_INTERFACES, |
67 | .baInterfaceNr = { | 70 | .baInterfaceNr = { |
68 | [0] = F_AUDIO_AC_INTERFACE, | 71 | [0] = F_AUDIO_AC_INTERFACE, |