diff options
-rw-r--r-- | drivers/usb/gadget/composite.c | 5 | ||||
-rw-r--r-- | include/linux/usb/composite.h | 3 |
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; |