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

Commit 7a93d040 authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Felipe Balbi
Browse files

usb: gadget: f_mass_storage: remove compatibility layer



There are no more old interface users left. Remove it.

Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 1bcce939
Loading
Loading
Loading
Loading
+19 −131
Original line number Diff line number Diff line
@@ -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 @@ int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n)

	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 @@ int fsg_common_create_lun(struct fsg_common *common, struct fsg_lun_config *cfg,
	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 @@ int fsg_common_create_luns(struct fsg_common *common, struct fsg_config *cfg)
	_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);
+0 −21
Original line number Diff line number Diff line
@@ -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 */