Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18786da4 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Felipe Balbi
Browse files

usb: gadget: initialize the strings in tcm_usb_gadget properly



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.

Cc: stable@vger.kernel.org # v3.5
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 5a175bb8
Loading
Loading
Loading
Loading
+20 −13
Original line number Diff line number Diff line
@@ -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;
+8 −6
Original line number Diff line number Diff line
@@ -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