From: Steve Kondik Date: Wed, 17 Feb 2010 17:59:29 +0000 (-0500) Subject: Add USB_ANDROID_RNDIS_WCEIS option. X-Git-Tag: firefly_0821_release~9833^2~5^2~236 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=565e9273ae1ed5c194300822e21c95b7b70f2c8c;p=firefly-linux-kernel-4.4.55.git Add USB_ANDROID_RNDIS_WCEIS option. Change-Id: I85973ebfcbfae6b401fb8b402842309c72655149 Signed-off-by: Mike Lockwood --- diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 977fe76de6e7..7fe4a5690633 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -869,6 +869,16 @@ config USB_ANDROID_RNDIS help Provides RNDIS ethernet function for android gadget driver. +config USB_ANDROID_RNDIS_WCEIS + boolean "Use Windows Internet Sharing Class/SubClass/Protocol" + depends on USB_ANDROID_RNDIS + help + Causes the driver to look like a Windows-compatible Internet + Sharing device, so Windows auto-detects it. + + If you enable this option, the device is no longer CDC ethernet + compatible. + config USB_CDC_COMPOSITE tristate "CDC Composite Device (Ethernet and ACM)" depends on NET diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c index 77ff19eebbfa..e1ea22fe0e61 100644 --- a/drivers/usb/gadget/android.c +++ b/drivers/usb/gadget/android.c @@ -336,7 +336,11 @@ void android_enable_function(struct usb_function *f, int enable) */ if (!strcmp(f->name, "rndis")) { if (enable) +#ifdef CONFIG_USB_ANDROID_RNDIS_WCEIS + dev->cdev->desc.bDeviceClass = USB_CLASS_WIRELESS_CONTROLLER; +#else dev->cdev->desc.bDeviceClass = USB_CLASS_COMM; +#endif else dev->cdev->desc.bDeviceClass = USB_CLASS_PER_INTERFACE; } diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c index 89e2b7fb4f31..20a25ff1f2ae 100644 --- a/drivers/usb/gadget/f_rndis.c +++ b/drivers/usb/gadget/f_rndis.c @@ -130,9 +130,16 @@ static struct usb_interface_descriptor rndis_control_intf = { /* .bInterfaceNumber = DYNAMIC */ /* status endpoint is optional; this could be patched later */ .bNumEndpoints = 1, +#ifdef CONFIG_USB_ANDROID_RNDIS_WCEIS + /* "Wireless" RNDIS; auto-detected by Windows */ + .bInterfaceClass = USB_CLASS_WIRELESS_CONTROLLER, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 3, +#else .bInterfaceClass = USB_CLASS_COMM, .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM, .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR, +#endif /* .iInterface = DYNAMIC */ };