USB: gadget: composite: Don't increment interface number for alt settings.
authorMike Lockwood <lockwood@android.com>
Fri, 26 Feb 2010 14:34:19 +0000 (09:34 -0500)
committerColin Cross <ccross@android.com>
Thu, 30 Sep 2010 00:49:30 +0000 (17:49 -0700)
Signed-off-by: Mike Lockwood <lockwood@android.com>
drivers/usb/gadget/composite.c

index 61dcd0cc9d10526d5d21babee9f8e049ce2ebf86..320da923fe091c5c42e0d1c002640072dfd61f98 100644 (file)
@@ -322,8 +322,13 @@ static int config_buf(struct usb_configuration *config,
                dest = next;
                while ((descriptor = *descriptors++) != NULL) {
                        intf = (struct usb_interface_descriptor *)dest;
-                       if (intf->bDescriptorType == USB_DT_INTERFACE)
-                               intf->bInterfaceNumber = interfaceCount++;
+                       if (intf->bDescriptorType == USB_DT_INTERFACE) {
+                               /* don't increment bInterfaceNumber for alternate settings */
+                               if (intf->bAlternateSetting == 0)
+                                       intf->bInterfaceNumber = interfaceCount++;
+                               else
+                                       intf->bInterfaceNumber = interfaceCount - 1;
+                       }
                        dest += intf->bLength;
                }