Skip to content

Commit

Permalink
usb: gadget: push iProduct into gadgets
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sebastian Andrzej Siewior authored and Felipe Balbi committed Sep 10, 2012
1 parent 03de9bf commit 2d35ee4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
21 changes: 11 additions & 10 deletions drivers/usb/gadget/composite.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];

/*-------------------------------------------------------------------------*/
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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;
}
}
6 changes: 5 additions & 1 deletion include/linux/usb/composite.h
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,7 @@ struct usb_composite_overwrite {
u16 bcdDevice;
char *serial_number;
char *manufacturer;
char *product;
};
#define USB_GADGET_COMPOSITE_OPTIONS() \
static struct usb_composite_overwrite coverwrite; \
Expand All @@ -421,7 +422,10 @@ struct usb_composite_overwrite {
\
module_param_named(iManufacturer, coverwrite.manufacturer, charp, \
S_IRUGO); \
MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string")
MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string"); \
\
module_param_named(iProduct, coverwrite.product, charp, S_IRUGO); \
MODULE_PARM_DESC(iProduct, "USB Product string")

void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
struct usb_composite_overwrite *covr);
Expand Down

0 comments on commit 2d35ee4

Please sign in to comment.