fsg_common_init is a lengthy function. Factor portions of it out.
Signed-off-by: Andrzej Pietrasiewicz <[email protected]>
Signed-off-by: Kyungmin Park <[email protected]>
---
drivers/usb/gadget/f_mass_storage.c | 16 ++++++++++++++--
drivers/usb/gadget/f_mass_storage.h | 5 +++++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/f_mass_storage.c
b/drivers/usb/gadget/f_mass_storage.c
index 16a44e1..39f7f1f 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -2789,6 +2789,17 @@ int fsg_common_set_nluns(struct fsg_common *common, int
nluns)
return 0;
}
+void fsg_common_set_ops(struct fsg_common *common,
+ const struct fsg_operations *ops)
+{
+ common->ops = ops;
+}
+
+void fsg_common_set_private_data(struct fsg_common *common, void *priv)
+{
+ common->private_data = priv;
+}
+
#define MAX_LUN_NAME_LEN 80
struct fsg_common *fsg_common_init(struct fsg_common *common,
@@ -2815,8 +2826,9 @@ struct fsg_common *fsg_common_init(struct fsg_common
*common,
kfree(common);
return ERR_PTR(rc);
}
- common->ops = cfg->ops;
- common->private_data = cfg->private_data;
+
+ fsg_common_set_ops(common, cfg->ops);
+ fsg_common_set_private_data(common, cfg->private_data);
common->gadget = gadget;
common->ep0 = gadget->ep0;
diff --git a/drivers/usb/gadget/f_mass_storage.h
b/drivers/usb/gadget/f_mass_storage.h
index f98c792..3be09a1 100644
--- a/drivers/usb/gadget/f_mass_storage.h
+++ b/drivers/usb/gadget/f_mass_storage.h
@@ -106,6 +106,11 @@ void fsg_common_set_sysfs(struct fsg_common *common, bool
sysfs);
int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n);
+void fsg_common_set_ops(struct fsg_common *common,
+ const struct fsg_operations *ops);
+
+void fsg_common_set_private_data(struct fsg_common *common, void *priv);
+
void fsg_common_remove_lun(struct fsg_lun *lun, bool sysfs);
void fsg_common_remove_luns(struct fsg_common *common);
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html