I have no idea what I've been thinking while I was doing this in the first
place. Now the strings are initialized properly and reported by lsusb.

Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
---
 drivers/usb/gadget/tcm_usb_gadget.c |   33 ++++++++++++++++++++-------------
 drivers/usb/gadget/tcm_usb_gadget.h |   14 ++++++++------
 2 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/drivers/usb/gadget/tcm_usb_gadget.c 
b/drivers/usb/gadget/tcm_usb_gadget.c
index 5641ea1..82608dc 100644
--- a/drivers/usb/gadget/tcm_usb_gadget.c
+++ b/drivers/usb/gadget/tcm_usb_gadget.c
@@ -1976,7 +1976,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 = {
@@ -1987,7 +1986,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 = {
@@ -2208,20 +2206,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",
        { },
 };
 
@@ -2243,7 +2237,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,
 };
 
@@ -2416,6 +2409,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;
@@ -2430,6 +2426,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);
        if (ret)
diff --git a/drivers/usb/gadget/tcm_usb_gadget.h 
b/drivers/usb/gadget/tcm_usb_gadget.h
index bb18999..9d32ec3 100644
--- a/drivers/usb/gadget/tcm_usb_gadget.h
+++ b/drivers/usb/gadget/tcm_usb_gadget.h
@@ -16,12 +16,14 @@
 #define UASP_SS_EP_COMP_LOG_STREAMS 4
 #define UASP_SS_EP_COMP_NUM_STREAMS (1 << UASP_SS_EP_COMP_LOG_STREAMS)
 
-#define USB_G_STR_MANUFACTOR    1
-#define USB_G_STR_PRODUCT       2
-#define USB_G_STR_SERIAL        3
-#define USB_G_STR_CONFIG        4
-#define USB_G_STR_INT_UAS       5
-#define USB_G_STR_INT_BBB       6
+enum {
+       USB_G_STR_MANUFACTOR,
+       USB_G_STR_PRODUCT,
+       USB_G_STR_SERIAL,
+       USB_G_STR_CONFIG,
+       USB_G_STR_INT_UAS,
+       USB_G_STR_INT_BBB,
+};
 
 #define USB_G_ALT_INT_BBB       0
 #define USB_G_ALT_INT_UAS       1
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to