usb: gadget: Provide a default implementation of default manufacturer string
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / usb / gadget / ncm.c
index 89530034dff18bbfcf0223b200c0f75b43d0cfb7..343f3d364ef8543c4f660ca4b3876cb0bbcb8d01 100644 (file)
@@ -20,8 +20,6 @@
 /* #define VERBOSE_DEBUG */
 
 #include <linux/kernel.h>
-#include <linux/utsname.h>
-
 
 #include "u_ether.h"
 
@@ -37,9 +35,6 @@
  * a "gcc --combine ... part1.c part2.c part3.c ... " build would.
  */
 #include "composite.c"
-#include "usbstring.c"
-#include "config.c"
-#include "epautoconf.c"
 
 #include "f_ncm.c"
 #include "u_ether.c"
@@ -57,6 +52,7 @@
 #define CDC_PRODUCT_NUM                0xa4a1  /* Linux-USB Ethernet Gadget */
 
 /*-------------------------------------------------------------------------*/
+USB_GADGET_COMPOSITE_OPTIONS();
 
 static struct usb_device_descriptor device_desc = {
        .bLength =              sizeof device_desc,
@@ -97,17 +93,11 @@ static const struct usb_descriptor_header *otg_desc[] = {
        NULL,
 };
 
-
 /* string IDs are assigned dynamically */
-
-#define STRING_MANUFACTURER_IDX                0
-#define STRING_PRODUCT_IDX             1
-
-static char manufacturer[50];
-
 static struct usb_string strings_dev[] = {
-       [STRING_MANUFACTURER_IDX].s = manufacturer,
-       [STRING_PRODUCT_IDX].s = DRIVER_DESC,
+       [USB_GADGET_MANUFACTURER_IDX].s = "",
+       [USB_GADGET_PRODUCT_IDX].s = DRIVER_DESC,
+       [USB_GADGET_SERIAL_IDX].s = "",
        {  } /* end of list */
 };
 
@@ -174,32 +164,22 @@ static int __init gncm_bind(struct usb_composite_dev *cdev)
                        cpu_to_le16(0x0300 | 0x0099);
        }
 
-
        /* Allocate string descriptor numbers ... note that string
         * contents can be overridden by the composite_dev glue.
         */
 
-       /* device descriptor strings: manufacturer, product */
-       snprintf(manufacturer, sizeof manufacturer, "%s %s with %s",
-               init_utsname()->sysname, init_utsname()->release,
-               gadget->name);
-       status = usb_string_id(cdev);
-       if (status < 0)
-               goto fail;
-       strings_dev[STRING_MANUFACTURER_IDX].id = status;
-       device_desc.iManufacturer = status;
-
-       status = usb_string_id(cdev);
+       status = usb_string_ids_tab(cdev, strings_dev);
        if (status < 0)
                goto fail;
-       strings_dev[STRING_PRODUCT_IDX].id = status;
-       device_desc.iProduct = status;
+       device_desc.iManufacturer = strings_dev[USB_GADGET_MANUFACTURER_IDX].id;
+       device_desc.iProduct = strings_dev[USB_GADGET_PRODUCT_IDX].id;
 
        status = usb_add_config(cdev, &ncm_config_driver,
                                ncm_do_config);
        if (status < 0)
                goto fail;
 
+       usb_composite_overwrite_options(cdev, &coverwrite);
        dev_info(&gadget->dev, "%s\n", DRIVER_DESC);
 
        return 0;
@@ -215,11 +195,12 @@ static int __exit gncm_unbind(struct usb_composite_dev *cdev)
        return 0;
 }
 
-static struct usb_composite_driver ncm_driver = {
+static __refdata struct usb_composite_driver ncm_driver = {
        .name           = "g_ncm",
        .dev            = &device_desc,
        .strings        = dev_strings,
        .max_speed      = USB_SPEED_HIGH,
+       .bind           = gncm_bind,
        .unbind         = __exit_p(gncm_unbind),
 };
 
@@ -229,7 +210,7 @@ MODULE_LICENSE("GPL");
 
 static int __init init(void)
 {
-       return usb_composite_probe(&ncm_driver, gncm_bind);
+       return usb_composite_probe(&ncm_driver);
 }
 module_init(init);