usb: gadget: push iManufacturer into gadgets

This patch pushes the iManufacturer module argument from composite into
each gadget. Once the user uses the module paramter, the string is
overwritten with the final value.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 5642b21..482cf8c 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -32,10 +32,6 @@
  * published in the device descriptor, either numbers or strings or both.
  * String parameters are in UTF-8 (superset of ASCII's 7 bit characters).
  */
-static char *iManufacturer;
-module_param(iManufacturer, charp, S_IRUGO);
-MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string");
-
 static char *iProduct;
 module_param(iProduct, charp, S_IRUGO);
 MODULE_PARM_DESC(iProduct, "USB Product string");
@@ -916,8 +912,7 @@
 	 * check if the string has not been overridden.
 	 */
 	if (cdev->manufacturer_override == id)
-		str = iManufacturer ?: composite->iManufacturer ?:
-			composite_manufacturer;
+		str = composite->iManufacturer ?: composite_manufacturer;
 	else if (cdev->product_override == id)
 		str = iProduct ?: composite->iProduct;
 	else if (cdev->serial_override == id)
@@ -1408,6 +1403,7 @@
 	__le16 idProduct;
 	__le16 bcdDevice;
 	u8 iSerialNumber;
+	u8 iManufacturer;
 
 	/*
 	 * these variables may have been set in
@@ -1417,6 +1413,7 @@
 	idProduct = new->idProduct;
 	bcdDevice = new->bcdDevice;
 	iSerialNumber = new->iSerialNumber;
+	iManufacturer = new->iManufacturer;
 
 	*new = *old;
 	if (idVendor)
@@ -1427,6 +1424,8 @@
 		new->bcdDevice = bcdDevice;
 	if (iSerialNumber)
 		new->iSerialNumber = iSerialNumber;
+	if (iManufacturer)
+		new->iManufacturer = iManufacturer;
 }
 
 static struct usb_composite_driver *to_cdriver(struct usb_gadget_driver *gdrv)
@@ -1487,9 +1486,8 @@
 	update_unchanged_dev_desc(&cdev->desc, composite->dev);
 
 	/* string overrides */
-	if (iManufacturer || !cdev->desc.iManufacturer) {
-		if (!iManufacturer && !composite->iManufacturer &&
-		    !*composite_manufacturer)
+	if (!cdev->desc.iManufacturer) {
+		if (!composite->iManufacturer)
 			snprintf(composite_manufacturer,
 				 sizeof composite_manufacturer,
 				 "%s %s with %s",
@@ -1706,4 +1704,8 @@
 		desc->iSerialNumber = dev_str[USB_GADGET_SERIAL_IDX].id;
 		dev_str[USB_GADGET_SERIAL_IDX].s = covr->serial_number;
 	}
+	if (covr->manufacturer) {
+		desc->iManufacturer = dev_str[USB_GADGET_MANUFACTURER_IDX].id;
+		dev_str[USB_GADGET_MANUFACTURER_IDX].s = covr->manufacturer;
+	}
 }