usb: gadget: f_audio_source: Fixed USB Audio Class Interface Descriptor
authorAnson Jacob <ansonkuzhumbil@gmail.com>
Mon, 23 Jun 2014 11:14:01 +0000 (19:14 +0800)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:52:01 +0000 (13:52 -0800)
Fixed Android Issue #56549.

When both Vendor Class and Audio Class are activated for AOA 2.0,
the baInterfaceNr of the AudioControl Interface Descriptor points
to wrong interface numbers. They should be pointing to
Audio Control Device and Audio Streaming interfaces.

Replaced baInterfaceNr with the correct value.

Change-Id: Iaa083f3d97c1f0fc9481bf87852b2b51278a6351
Signed-off-by: Anson Jacob <ansonkuzhumbil@gmail.com>
drivers/usb/gadget/f_audio_source.c

index 65760c42d422ea2066f8cc252cfd8598150a4ced..21ced13c83d801b39c3bbb564bb5005706d3f42c 100644 (file)
@@ -580,12 +580,18 @@ audio_bind(struct usb_configuration *c, struct usb_function *f)
                goto fail;
        ac_interface_desc.bInterfaceNumber = status;
 
+       /* AUDIO_AC_INTERFACE */
+       ac_header_desc.baInterfaceNr[0] = status;
+
        status = usb_interface_id(c, f);
        if (status < 0)
                goto fail;
        as_interface_alt_0_desc.bInterfaceNumber = status;
        as_interface_alt_1_desc.bInterfaceNumber = status;
 
+       /* AUDIO_AS_INTERFACE */
+       ac_header_desc.baInterfaceNr[1] = status;
+
        status = -ENODEV;
 
        /* allocate our endpoint */