USB: g_mass_storage: lun_name_format and thread_name added
A two fsg_config fields were added:
* lun_name_format which lets one specify format of a name
used when registering LUN devices. It is useful if there
would be ever need for two MSFs to be used in a single
composite gadget (as opposed to single MSF in two
configuration); and
* thread_name which lets one specify the name of a kernel
thread used by MSF. This is not required since two or more
threads can have the same name but nevertheless it's here
for consistency.
Signed-off-by: Michal Nazarewicz <m.nazarewicz@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index e7c9f0c..837aab6 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -233,7 +233,7 @@
-/*-------------------------------------------------------------------------*/
+/*------------------------------------------------------------------------*/
#define FSG_DRIVER_DESC "Mass Storage Function"
#define FSG_DRIVER_VERSION "20 November 2008"
@@ -275,6 +275,8 @@
unsigned int can_stall:1;
unsigned int free_storage_on_release:1;
+ const char *thread_name;
+
/* Vendor (8 chars), product (16 chars), release (4
* hexadecimal digits) and NUL byte */
char inquiry_string[8 + 16 + 4 + 1];
@@ -292,6 +294,9 @@
char cdrom;
} luns[FSG_MAX_LUNS];
+ const char *lun_name_format;
+ const char *thread_name;
+
const char *vendor_name; /* 8 characters or less */
const char *product_name; /* 16 characters or less */
u16 release;
@@ -2524,8 +2529,11 @@
curlun->dev.parent = &gadget->dev;
/* curlun->dev.driver = &fsg_driver.driver; XXX */
dev_set_drvdata(&curlun->dev, &common->filesem);
- dev_set_name(&curlun->dev,"%s-lun%d",
- dev_name(&gadget->dev), i);
+ dev_set_name(&curlun->dev,
+ cfg->lun_name_format
+ ? cfg->lun_name_format
+ : "lun%d",
+ i);
rc = device_register(&curlun->dev);
if (rc) {
@@ -2590,7 +2598,6 @@
? "File-Stor Gadget"
: "File-CD Gadget "),
i);
-#undef OR
/* Some peripheral controllers are known not to be able to
@@ -2601,7 +2608,10 @@
!(gadget_is_sh(fsg->gadget) || gadget_is_at91(fsg->gadget));
+ common->thread_name = OR(cfg->thread_name, "file-storage");
kref_init(&common->ref);
+#undef OR
+
/* Information */
INFO(common, FSG_DRIVER_DESC ", version: " FSG_DRIVER_VERSION "\n");
@@ -2741,7 +2751,7 @@
fsg->thread_task = kthread_create(fsg_main_thread, fsg,
- "file-storage-gadget");
+ fsg->common->thread_name);
if (IS_ERR(fsg->thread_task)) {
rc = PTR_ERR(fsg->thread_task);
goto out;
@@ -2884,6 +2894,8 @@
}
/* Let FSG use defaults */
+ cfg->lun_name_format = 0;
+ cfg->thread_name = 0;
cfg->vendor_name = 0;
cfg->product_name = 0;
cfg->release = 0xffff;