mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
USB: gadget: android: Fix special case for RNDIS ethernet function
Only set device descriptor bDeviceClass field to USB_CLASS_COMM when the RNDIS function is actually enabled. Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
committed by
Colin Cross
parent
c832ca8239
commit
da574e2e1f
@@ -100,14 +100,7 @@ static struct usb_device_descriptor device_desc = {
|
||||
.bLength = sizeof(device_desc),
|
||||
.bDescriptorType = USB_DT_DEVICE,
|
||||
.bcdUSB = __constant_cpu_to_le16(0x0200),
|
||||
#ifdef CONFIG_USB_ANDROID_RNDIS
|
||||
/* we need to specify the class in the device descriptor
|
||||
* if we are using RNDIS.
|
||||
*/
|
||||
.bDeviceClass = USB_CLASS_COMM,
|
||||
#else
|
||||
.bDeviceClass = USB_CLASS_PER_INTERFACE,
|
||||
#endif
|
||||
.idVendor = __constant_cpu_to_le16(VENDOR_ID),
|
||||
.idProduct = __constant_cpu_to_le16(PRODUCT_ID),
|
||||
.bcdDevice = __constant_cpu_to_le16(0xffff),
|
||||
@@ -337,6 +330,18 @@ void android_enable_function(struct usb_function *f, int enable)
|
||||
if (dev->cdev)
|
||||
dev->cdev->desc.idProduct = device_desc.idProduct;
|
||||
|
||||
#ifdef CONFIG_USB_ANDROID_RNDIS
|
||||
/* We need to specify the COMM class in the device descriptor
|
||||
* if we are using RNDIS.
|
||||
*/
|
||||
if (!strcmp(f->name, "rndis")) {
|
||||
if (enable)
|
||||
dev->cdev->desc.bDeviceClass = USB_CLASS_COMM;
|
||||
else
|
||||
dev->cdev->desc.bDeviceClass = USB_CLASS_PER_INTERFACE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* force reenumeration */
|
||||
if (dev->cdev && dev->cdev->gadget &&
|
||||
dev->cdev->gadget->speed != USB_SPEED_UNKNOWN) {
|
||||
|
||||
Reference in New Issue
Block a user