diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/f_mass_storage.c | 150 | ||||
-rw-r--r-- | drivers/usb/gadget/f_mass_storage.h | 21 |
2 files changed, 19 insertions, 152 deletions
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c index 00d3687..6e5a6da 100644 --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c @@ -228,13 +228,6 @@ #define FSG_DRIVER_DESC "Mass Storage Function" #define FSG_DRIVER_VERSION "2009/09/11" -/* to avoid a lot of #ifndef-#endif in the temporary compatibility layer */ -#ifndef USB_FMS_INCLUDED -#define EXPORT_SYMBOL_GPL_IF_MODULE(m) EXPORT_SYMBOL_GPL(m); -#else -#define EXPORT_SYMBOL_GPL_IF_MODULE(m) -#endif - static const char fsg_string_interface[] = "Mass Storage"; #include "storage_common.h" @@ -2651,13 +2644,13 @@ void fsg_common_get(struct fsg_common *common) { kref_get(&common->ref); } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_get); +EXPORT_SYMBOL_GPL(fsg_common_get); void fsg_common_put(struct fsg_common *common) { kref_put(&common->ref, fsg_common_release); } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_put); +EXPORT_SYMBOL_GPL(fsg_common_put); /* check if fsg_num_buffers is within a valid range */ static inline int fsg_num_buffers_validate(unsigned int fsg_num_buffers) @@ -2669,7 +2662,7 @@ static inline int fsg_num_buffers_validate(unsigned int fsg_num_buffers) return -EINVAL; } -static struct fsg_common *fsg_common_setup(struct fsg_common *common, bool zero) +static struct fsg_common *fsg_common_setup(struct fsg_common *common) { if (!common) { common = kzalloc(sizeof(*common), GFP_KERNEL); @@ -2677,8 +2670,6 @@ static struct fsg_common *fsg_common_setup(struct fsg_common *common, bool zero) return ERR_PTR(-ENOMEM); common->free_storage_on_release = 1; } else { - if (zero) - memset(common, 0, sizeof(*common)); common->free_storage_on_release = 0; } init_rwsem(&common->filesem); @@ -2695,7 +2686,7 @@ void fsg_common_set_sysfs(struct fsg_common *common, bool sysfs) { common->sysfs = sysfs; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_sysfs); +EXPORT_SYMBOL_GPL(fsg_common_set_sysfs); static void _fsg_common_free_buffers(struct fsg_buffhd *buffhds, unsigned n) { @@ -2751,7 +2742,7 @@ error_release: return -ENOMEM; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_num_buffers); +EXPORT_SYMBOL_GPL(fsg_common_set_num_buffers); static inline void fsg_common_remove_sysfs(struct fsg_lun *lun) { @@ -2790,7 +2781,7 @@ void fsg_common_remove_lun(struct fsg_lun *lun, bool sysfs) fsg_lun_close(lun); kfree(lun); } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_remove_lun); +EXPORT_SYMBOL_GPL(fsg_common_remove_lun); static void _fsg_common_remove_luns(struct fsg_common *common, int n) { @@ -2802,7 +2793,7 @@ static void _fsg_common_remove_luns(struct fsg_common *common, int n) common->luns[i] = NULL; } } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_remove_luns); +EXPORT_SYMBOL_GPL(fsg_common_remove_luns); void fsg_common_remove_luns(struct fsg_common *common) { @@ -2815,7 +2806,7 @@ void fsg_common_free_luns(struct fsg_common *common) kfree(common->luns); common->luns = NULL; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_free_luns); +EXPORT_SYMBOL_GPL(fsg_common_free_luns); int fsg_common_set_nluns(struct fsg_common *common, int nluns) { @@ -2841,21 +2832,21 @@ int fsg_common_set_nluns(struct fsg_common *common, int nluns) return 0; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_nluns); +EXPORT_SYMBOL_GPL(fsg_common_set_nluns); void fsg_common_set_ops(struct fsg_common *common, const struct fsg_operations *ops) { common->ops = ops; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_ops); +EXPORT_SYMBOL_GPL(fsg_common_set_ops); void fsg_common_free_buffers(struct fsg_common *common) { _fsg_common_free_buffers(common->buffhds, common->fsg_num_buffers); common->buffhds = NULL; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_free_buffers); +EXPORT_SYMBOL_GPL(fsg_common_free_buffers); int fsg_common_set_cdev(struct fsg_common *common, struct usb_composite_dev *cdev, bool can_stall) @@ -2883,7 +2874,7 @@ int fsg_common_set_cdev(struct fsg_common *common, return 0; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_cdev); +EXPORT_SYMBOL_GPL(fsg_common_set_cdev); static inline int fsg_common_add_sysfs(struct fsg_common *common, struct fsg_lun *lun) @@ -3006,7 +2997,7 @@ error_sysfs: kfree(lun); return rc; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_create_lun); +EXPORT_SYMBOL_GPL(fsg_common_create_lun); int fsg_common_create_luns(struct fsg_common *common, struct fsg_config *cfg) { @@ -3028,7 +3019,7 @@ fail: _fsg_common_remove_luns(common, i); return rc; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_create_luns); +EXPORT_SYMBOL_GPL(fsg_common_create_luns); void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn, const char *pn) @@ -3045,7 +3036,7 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn, : "File-Stor Gadget"), i); } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_set_inquiry_string); +EXPORT_SYMBOL_GPL(fsg_common_set_inquiry_string); int fsg_common_run_thread(struct fsg_common *common) { @@ -3064,61 +3055,7 @@ int fsg_common_run_thread(struct fsg_common *common) return 0; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_run_thread); - -struct fsg_common *fsg_common_init(struct fsg_common *common, - struct usb_composite_dev *cdev, - struct fsg_config *cfg) -{ - int rc; - - common = fsg_common_setup(common, !!common); - if (IS_ERR(common)) - return common; - fsg_common_set_sysfs(common, true); - common->state = FSG_STATE_IDLE; - - rc = fsg_common_set_num_buffers(common, cfg->fsg_num_buffers); - if (rc) { - if (common->free_storage_on_release) - kfree(common); - return ERR_PTR(rc); - } - common->ops = cfg->ops; - common->private_data = cfg->private_data; - - rc = fsg_common_set_cdev(common, cdev, cfg->can_stall); - if (rc) - goto error_release; - - rc = fsg_common_set_nluns(common, cfg->nluns); - if (rc) - goto error_release; - - rc = fsg_common_create_luns(common, cfg); - if (rc) - goto error_release; - - - fsg_common_set_inquiry_string(common, cfg->vendor_name, - cfg->product_name); - - /* Information */ - INFO(common, FSG_DRIVER_DESC ", version: " FSG_DRIVER_VERSION "\n"); - - rc = fsg_common_run_thread(common); - if (rc) - goto error_release; - - return common; - -error_release: - common->state = FSG_STATE_TERMINATED; /* The thread is dead */ - /* Call fsg_common_release() directly, ref might be not initialised. */ - fsg_common_release(&common->ref); - return ERR_PTR(rc); -} -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_common_init); +EXPORT_SYMBOL_GPL(fsg_common_run_thread); static void fsg_common_release(struct kref *ref) { @@ -3166,9 +3103,8 @@ static int fsg_bind(struct usb_configuration *c, struct usb_function *f) struct usb_ep *ep; unsigned max_burst; int ret; - -#ifndef USB_FMS_INCLUDED struct fsg_opts *opts; + opts = fsg_opts_from_func_inst(f->fi); if (!opts->no_configfs) { ret = fsg_common_set_cdev(fsg->common, c->cdev, @@ -3180,7 +3116,6 @@ static int fsg_bind(struct usb_configuration *c, struct usb_function *f) if (ret) return ret; } -#endif fsg->gadget = gadget; @@ -3248,54 +3183,9 @@ static void fsg_unbind(struct usb_configuration *c, struct usb_function *f) wait_event(common->fsg_wait, common->fsg != fsg); } -#ifdef USB_FMS_INCLUDED - fsg_common_put(common); -#endif usb_free_all_descriptors(&fsg->function); -#ifdef USB_FMS_INCLUDED - kfree(fsg); -#endif -} - -#ifdef USB_FMS_INCLUDED - -static int fsg_bind_config(struct usb_composite_dev *cdev, - struct usb_configuration *c, - struct fsg_common *common) -{ - struct fsg_dev *fsg; - int rc; - - fsg = kzalloc(sizeof *fsg, GFP_KERNEL); - if (unlikely(!fsg)) - return -ENOMEM; - - fsg->function.name = FSG_DRIVER_DESC; - fsg->function.bind = fsg_bind; - fsg->function.unbind = fsg_unbind; - fsg->function.setup = fsg_setup; - fsg->function.set_alt = fsg_set_alt; - fsg->function.disable = fsg_disable; - - fsg->common = common; - /* - * Our caller holds a reference to common structure so we - * don't have to be worry about it being freed until we return - * from this function. So instead of incrementing counter now - * and decrement in error recovery we increment it only when - * call to usb_add_function() was successful. - */ - - rc = usb_add_function(c, &fsg->function); - if (unlikely(rc)) - kfree(fsg); - else - fsg_common_get(fsg->common); - return rc; } -#else - static inline struct fsg_lun_opts *to_fsg_lun_opts(struct config_item *item) { return container_of(to_config_group(item), struct fsg_lun_opts, group); @@ -3652,7 +3542,7 @@ static struct usb_function_instance *fsg_alloc_inst(void) return ERR_PTR(-ENOMEM); mutex_init(&opts->lock); opts->func_inst.free_func_inst = fsg_free_inst; - opts->common = fsg_common_setup(opts->common, false); + opts->common = fsg_common_setup(opts->common); if (IS_ERR(opts->common)) { rc = PTR_ERR(opts->common); goto release_opts; @@ -3734,8 +3624,6 @@ DECLARE_USB_FUNCTION_INIT(mass_storage, fsg_alloc_inst, fsg_alloc); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Michal Nazarewicz"); -#endif - /************************* Module parameters *************************/ @@ -3771,5 +3659,5 @@ void fsg_config_from_params(struct fsg_config *cfg, cfg->can_stall = params->stall; cfg->fsg_num_buffers = fsg_num_buffers; } -EXPORT_SYMBOL_GPL_IF_MODULE(fsg_config_from_params); +EXPORT_SYMBOL_GPL(fsg_config_from_params); diff --git a/drivers/usb/gadget/f_mass_storage.h b/drivers/usb/gadget/f_mass_storage.h index 7d421d2..b4866fc 100644 --- a/drivers/usb/gadget/f_mass_storage.h +++ b/drivers/usb/gadget/f_mass_storage.h @@ -128,10 +128,6 @@ void fsg_common_get(struct fsg_common *common); void fsg_common_put(struct fsg_common *common); -struct fsg_common *fsg_common_init(struct fsg_common *common, - struct usb_composite_dev *cdev, - struct fsg_config *cfg); - void fsg_common_set_sysfs(struct fsg_common *common, bool sysfs); int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n); @@ -167,21 +163,4 @@ void fsg_config_from_params(struct fsg_config *cfg, const struct fsg_module_parameters *params, unsigned int fsg_num_buffers); -static inline struct fsg_common * -fsg_common_from_params(struct fsg_common *common, - struct usb_composite_dev *cdev, - const struct fsg_module_parameters *params, - unsigned int fsg_num_buffers) - __attribute__((unused)); -static inline struct fsg_common * -fsg_common_from_params(struct fsg_common *common, - struct usb_composite_dev *cdev, - const struct fsg_module_parameters *params, - unsigned int fsg_num_buffers) -{ - struct fsg_config cfg; - fsg_config_from_params(&cfg, params, fsg_num_buffers); - return fsg_common_init(common, cdev, &cfg); -} - #endif /* USB_F_MASS_STORAGE_H */ |