aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/gadget/composite.c5
-rw-r--r--include/linux/usb/composite.h3
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index df2749052e2c..390749bbb0c3 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -938,7 +938,7 @@ static int get_string(struct usb_composite_dev *cdev,
938 else if (cdev->product_override == id) 938 else if (cdev->product_override == id)
939 str = iProduct ?: composite->iProduct; 939 str = iProduct ?: composite->iProduct;
940 else if (cdev->serial_override == id) 940 else if (cdev->serial_override == id)
941 str = iSerialNumber; 941 str = iSerialNumber ?: composite->iSerialNumber;
942 else 942 else
943 str = NULL; 943 str = NULL;
944 if (str) { 944 if (str) {
@@ -1503,7 +1503,8 @@ static int composite_bind(struct usb_gadget *gadget)
1503 cdev->product_override = 1503 cdev->product_override =
1504 override_id(cdev, &cdev->desc.iProduct); 1504 override_id(cdev, &cdev->desc.iProduct);
1505 1505
1506 if (iSerialNumber) 1506 if (iSerialNumber ||
1507 (!cdev->desc.iSerialNumber && composite->iSerialNumber))
1507 cdev->serial_override = 1508 cdev->serial_override =
1508 override_id(cdev, &cdev->desc.iSerialNumber); 1509 override_id(cdev, &cdev->desc.iSerialNumber);
1509 1510
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index 5d27a1fe5ce9..9d8c3b634493 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -253,6 +253,8 @@ void usb_remove_config(struct usb_composite_dev *,
253 * @iManufacturer: Used as iManufacturer override if @dev->iManufacturer is 253 * @iManufacturer: Used as iManufacturer override if @dev->iManufacturer is
254 * not set. If NULL a default "<system> <release> with <udc>" value 254 * not set. If NULL a default "<system> <release> with <udc>" value
255 * will be used. 255 * will be used.
256 * @iSerialNumber: Used as iSerialNumber override if @dev->iSerialNumber is
257 * not set.
256 * @dev: Template descriptor for the device, including default device 258 * @dev: Template descriptor for the device, including default device
257 * identifiers. 259 * identifiers.
258 * @strings: tables of strings, keyed by identifiers assigned during bind() 260 * @strings: tables of strings, keyed by identifiers assigned during bind()
@@ -283,6 +285,7 @@ struct usb_composite_driver {
283 const char *name; 285 const char *name;
284 const char *iProduct; 286 const char *iProduct;
285 const char *iManufacturer; 287 const char *iManufacturer;
288 const char *iSerialNumber;
286 const struct usb_device_descriptor *dev; 289 const struct usb_device_descriptor *dev;
287 struct usb_gadget_strings **strings; 290 struct usb_gadget_strings **strings;
288 enum usb_device_speed max_speed; 291 enum usb_device_speed max_speed;