Commit 2d35ee47 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Felipe Balbi

usb: gadget: push iProduct into gadgets

This patch pushes the iProduct module argument from composite
into each gadget.
Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 03de9bf6
...@@ -28,14 +28,6 @@ ...@@ -28,14 +28,6 @@
* with the relevant device-wide data. * 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]; static char composite_manufacturer[50];
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
...@@ -914,7 +906,7 @@ static int get_string(struct usb_composite_dev *cdev, ...@@ -914,7 +906,7 @@ static int get_string(struct usb_composite_dev *cdev,
if (cdev->manufacturer_override == id) if (cdev->manufacturer_override == id)
str = composite->iManufacturer ?: composite_manufacturer; str = composite->iManufacturer ?: composite_manufacturer;
else if (cdev->product_override == id) else if (cdev->product_override == id)
str = iProduct ?: composite->iProduct; str = composite->iProduct;
else if (cdev->serial_override == id) else if (cdev->serial_override == id)
str = composite->iSerialNumber; str = composite->iSerialNumber;
else else
...@@ -1404,6 +1396,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new, ...@@ -1404,6 +1396,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
__le16 bcdDevice; __le16 bcdDevice;
u8 iSerialNumber; u8 iSerialNumber;
u8 iManufacturer; u8 iManufacturer;
u8 iProduct;
/* /*
* these variables may have been set in * these variables may have been set in
...@@ -1414,6 +1407,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new, ...@@ -1414,6 +1407,7 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
bcdDevice = new->bcdDevice; bcdDevice = new->bcdDevice;
iSerialNumber = new->iSerialNumber; iSerialNumber = new->iSerialNumber;
iManufacturer = new->iManufacturer; iManufacturer = new->iManufacturer;
iProduct = new->iProduct;
*new = *old; *new = *old;
if (idVendor) if (idVendor)
...@@ -1426,6 +1420,8 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new, ...@@ -1426,6 +1420,8 @@ static void update_unchanged_dev_desc(struct usb_device_descriptor *new,
new->iSerialNumber = iSerialNumber; new->iSerialNumber = iSerialNumber;
if (iManufacturer) if (iManufacturer)
new->iManufacturer = iManufacturer; new->iManufacturer = iManufacturer;
if (iProduct)
new->iProduct = iProduct;
} }
static struct usb_composite_driver *to_cdriver(struct usb_gadget_driver *gdrv) static struct usb_composite_driver *to_cdriver(struct usb_gadget_driver *gdrv)
...@@ -1499,7 +1495,7 @@ static int composite_bind(struct usb_gadget *gadget, ...@@ -1499,7 +1495,7 @@ static int composite_bind(struct usb_gadget *gadget,
override_id(cdev, &cdev->desc.iManufacturer); override_id(cdev, &cdev->desc.iManufacturer);
} }
if (iProduct || (!cdev->desc.iProduct && composite->iProduct)) if (!cdev->desc.iProduct && composite->iProduct)
cdev->product_override = cdev->product_override =
override_id(cdev, &cdev->desc.iProduct); override_id(cdev, &cdev->desc.iProduct);
...@@ -1708,4 +1704,9 @@ void usb_composite_overwrite_options(struct usb_composite_dev *cdev, ...@@ -1708,4 +1704,9 @@ void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
desc->iManufacturer = dev_str[USB_GADGET_MANUFACTURER_IDX].id; desc->iManufacturer = dev_str[USB_GADGET_MANUFACTURER_IDX].id;
dev_str[USB_GADGET_MANUFACTURER_IDX].s = covr->manufacturer; 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;
}
} }
...@@ -402,6 +402,7 @@ struct usb_composite_overwrite { ...@@ -402,6 +402,7 @@ struct usb_composite_overwrite {
u16 bcdDevice; u16 bcdDevice;
char *serial_number; char *serial_number;
char *manufacturer; char *manufacturer;
char *product;
}; };
#define USB_GADGET_COMPOSITE_OPTIONS() \ #define USB_GADGET_COMPOSITE_OPTIONS() \
static struct usb_composite_overwrite coverwrite; \ static struct usb_composite_overwrite coverwrite; \
...@@ -421,7 +422,10 @@ struct usb_composite_overwrite { ...@@ -421,7 +422,10 @@ struct usb_composite_overwrite {
\ \
module_param_named(iManufacturer, coverwrite.manufacturer, charp, \ module_param_named(iManufacturer, coverwrite.manufacturer, charp, \
S_IRUGO); \ 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, void usb_composite_overwrite_options(struct usb_composite_dev *cdev,
struct usb_composite_overwrite *covr); struct usb_composite_overwrite *covr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment