|
@@ -1974,7 +1974,6 @@ static struct usb_interface_descriptor bot_intf_desc = {
|
|
|
.bInterfaceClass = USB_CLASS_MASS_STORAGE,
|
|
|
.bInterfaceSubClass = USB_SC_SCSI,
|
|
|
.bInterfaceProtocol = USB_PR_BULK,
|
|
|
- .iInterface = USB_G_STR_INT_UAS,
|
|
|
};
|
|
|
|
|
|
static struct usb_interface_descriptor uasp_intf_desc = {
|
|
@@ -1985,7 +1984,6 @@ static struct usb_interface_descriptor uasp_intf_desc = {
|
|
|
.bInterfaceClass = USB_CLASS_MASS_STORAGE,
|
|
|
.bInterfaceSubClass = USB_SC_SCSI,
|
|
|
.bInterfaceProtocol = USB_PR_UAS,
|
|
|
- .iInterface = USB_G_STR_INT_BBB,
|
|
|
};
|
|
|
|
|
|
static struct usb_endpoint_descriptor uasp_bi_desc = {
|
|
@@ -2206,20 +2204,16 @@ static struct usb_device_descriptor usbg_device_desc = {
|
|
|
.bDeviceClass = USB_CLASS_PER_INTERFACE,
|
|
|
.idVendor = cpu_to_le16(UAS_VENDOR_ID),
|
|
|
.idProduct = cpu_to_le16(UAS_PRODUCT_ID),
|
|
|
- .iManufacturer = USB_G_STR_MANUFACTOR,
|
|
|
- .iProduct = USB_G_STR_PRODUCT,
|
|
|
- .iSerialNumber = USB_G_STR_SERIAL,
|
|
|
-
|
|
|
.bNumConfigurations = 1,
|
|
|
};
|
|
|
|
|
|
static struct usb_string usbg_us_strings[] = {
|
|
|
- { USB_G_STR_MANUFACTOR, "Target Manufactor"},
|
|
|
- { USB_G_STR_PRODUCT, "Target Product"},
|
|
|
- { USB_G_STR_SERIAL, "000000000001"},
|
|
|
- { USB_G_STR_CONFIG, "default config"},
|
|
|
- { USB_G_STR_INT_UAS, "USB Attached SCSI"},
|
|
|
- { USB_G_STR_INT_BBB, "Bulk Only Transport"},
|
|
|
+ [USB_G_STR_MANUFACTOR].s = "Target Manufactor",
|
|
|
+ [USB_G_STR_PRODUCT].s = "Target Product",
|
|
|
+ [USB_G_STR_SERIAL].s = "000000000001",
|
|
|
+ [USB_G_STR_CONFIG].s = "default config",
|
|
|
+ [USB_G_STR_INT_UAS].s = "USB Attached SCSI",
|
|
|
+ [USB_G_STR_INT_BBB].s = "Bulk Only Transport",
|
|
|
{ },
|
|
|
};
|
|
|
|
|
@@ -2241,7 +2235,6 @@ static int guas_unbind(struct usb_composite_dev *cdev)
|
|
|
static struct usb_configuration usbg_config_driver = {
|
|
|
.label = "Linux Target",
|
|
|
.bConfigurationValue = 1,
|
|
|
- .iConfiguration = USB_G_STR_CONFIG,
|
|
|
.bmAttributes = USB_CONFIG_ATT_SELFPOWER,
|
|
|
};
|
|
|
|
|
@@ -2414,6 +2407,9 @@ static int usbg_cfg_bind(struct usb_configuration *c)
|
|
|
fu->function.disable = usbg_disable;
|
|
|
fu->tpg = the_only_tpg_I_currently_have;
|
|
|
|
|
|
+ bot_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_BBB].id;
|
|
|
+ uasp_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_UAS].id;
|
|
|
+
|
|
|
ret = usb_add_function(c, &fu->function);
|
|
|
if (ret)
|
|
|
goto err;
|
|
@@ -2428,6 +2424,17 @@ static int usb_target_bind(struct usb_composite_dev *cdev)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
+ ret = usb_string_ids_tab(cdev, usbg_us_strings);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ usbg_device_desc.iManufacturer =
|
|
|
+ usbg_us_strings[USB_G_STR_MANUFACTOR].id;
|
|
|
+ usbg_device_desc.iProduct = usbg_us_strings[USB_G_STR_PRODUCT].id;
|
|
|
+ usbg_device_desc.iSerialNumber = usbg_us_strings[USB_G_STR_SERIAL].id;
|
|
|
+ usbg_config_driver.iConfiguration =
|
|
|
+ usbg_us_strings[USB_G_STR_CONFIG].id;
|
|
|
+
|
|
|
ret = usb_add_config(cdev, &usbg_config_driver,
|
|
|
usbg_cfg_bind);
|
|
|
return 0;
|