diff options
author | Steve Kondik <shade@discord.hmsinc.com> | 2010-02-17 12:59:29 -0500 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2010-09-29 17:49:28 -0700 |
commit | 565e9273ae1ed5c194300822e21c95b7b70f2c8c (patch) | |
tree | 1036274866a65d214801998d9b9eef74029d1e6d | |
parent | f14c2ef5f111c1711f58d0e05ef0b177731743db (diff) |
Add USB_ANDROID_RNDIS_WCEIS option.
Change-Id: I85973ebfcbfae6b401fb8b402842309c72655149
Signed-off-by: Mike Lockwood <lockwood@android.com>
-rw-r--r-- | drivers/usb/gadget/Kconfig | 10 | ||||
-rw-r--r-- | drivers/usb/gadget/android.c | 4 | ||||
-rw-r--r-- | drivers/usb/gadget/f_rndis.c | 7 |
3 files changed, 21 insertions, 0 deletions
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 */ }; |