summaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/composite.c
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2012-09-10 15:01:56 +0200
committerFelipe Balbi <balbi@ti.com>2012-09-10 15:13:01 +0200
commit2d35ee47aaafac152bc4bc5020660ffa1753ab02 (patch)
treeea95206a5e772602b3e46de8e486d2c6a934db40 /drivers/usb/gadget/composite.c
parentusb: gadget: push iManufacturer into gadgets (diff)
downloadlinux-2d35ee47aaafac152bc4bc5020660ffa1753ab02.tar.xz
linux-2d35ee47aaafac152bc4bc5020660ffa1753ab02.zip
usb: gadget: push iProduct into gadgets
This patch pushes the iProduct module argument from composite into each gadget. Acked-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/composite.c')
-rw-r--r--drivers/usb/gadget/composite.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 482cf8cf301d..47b9130968bc 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -28,14 +28,6 @@
* with the relevant device-wide data.
*/
-/* Some systems will need runtime overrides for the product identifiers
- * 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 *iProduct;
-module_param(iProduct, charp, S_IRUGO);
-MODULE_PARM_DESC(iProduct, "USB Product string");
-
static char composite_manufacturer[50];
/*-------------------------------------------------------------------------*/
@@ -914,7 +906,7 @@ static int get_string(struct usb_composite_dev *cdev,
if (cdev->manufacturer_override == id)
str = composite->iManufacturer ?: composite_manufacturer;
else if (cdev->product_override == id)
- str = iProduct ?: composite->iProduct;
+ str = composite->iProduct;
else if (cdev->serial_override == id)
str = composite->iSerialNumber;
else
@@ -1404,6 +1396,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
__le16 bcdDevice;
u8 iSerialNumber;
u8 iManufacturer;
+ u8 iProduct;
/*
* these variables may have been set in
@@ -1414,6 +1407,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
bcdDevice = new->bcdDevice;
iSerialNumber = new->iSerialNumber;
iManufacturer = new->iManufacturer;
+ iProduct = new->iProduct;
*new = *old;
if (idVendor)
@@ -1426,6 +1420,8 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
new->iSerialNumber = iSerialNumber;
if (iManufacturer)
new->iManufacturer = iManufacturer;
+ if (iProduct)
+ new->iProduct = iProduct;
}
static struct usb_composite_driver *to_cdriver(struct usb_gadget_driver *gdrv)
@@ -1499,7 +1495,7 @@ static int composite_bind(struct usb_gadget *gadget,
override_id(cdev, &cdev->desc.iManufacturer);
}
- if (iProduct || (!cdev->desc.iProduct && composite->iProduct))
+ if (!cdev->desc.iProduct && composite->iProduct)
cdev->product_override =
override_id(cdev, &cdev->desc.iProduct);
@@ -1708,4 +1704,9 @@ void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
desc->iManufacturer = dev_str[USB_GADGET_MANUFACTURER_IDX].id;
dev_str[USB_GADGET_MANUFACTURER_IDX].s = covr->manufacturer;
}
+
+ if (covr->product) {
+ desc->iProduct = dev_str[USB_GADGET_PRODUCT_IDX].id;
+ dev_str[USB_GADGET_PRODUCT_IDX].s = covr->product;
+ }
}