16 #include <linux/kernel.h>
17 #include <linux/module.h>
19 #if defined USB_ETH_RNDIS
22 #ifdef CONFIG_USB_G_MULTI_RNDIS
23 # define USB_ETH_RNDIS y
27 #define DRIVER_DESC "Multifunction Composite Gadget"
60 #define MULTI_VENDOR_NUM 0x1d6b
61 #define MULTI_PRODUCT_NUM 0x0104
66 #ifdef CONFIG_USB_G_MULTI_RNDIS
67 MULTI_RNDIS_CONFIG_NUM,
69 #ifdef CONFIG_USB_G_MULTI_CDC
76 .bLength =
sizeof device_desc,
123 .strings = strings_dev,
149 if (gadget_is_otg(c->
cdev->gadget)) {
154 ret = rndis_bind_config(c, hostaddr);
172 .bConfigurationValue = MULTI_RNDIS_CONFIG_NUM,
194 #ifdef CONFIG_USB_G_MULTI_CDC
200 if (gadget_is_otg(c->
cdev->gadget)) {
223 .bConfigurationValue = MULTI_CDC_CONFIG_NUM,
252 if (!can_support_ecm(cdev->
gadget)) {
253 dev_err(&gadget->
dev,
"controller '%s' not usable\n",
271 retp = fsg_common_from_params(&
fsg_common, cdev, &fsg_mod_data);
273 status = PTR_ERR(retp);
285 status = rndis_config_register(cdev);
289 status = cdc_config_register(cdev);
324 .strings = dev_strings,
332 static int __init multi_init(
void)
338 static void __exit multi_exit(
void)