提交 e5587ea1 编写于 作者: A Andrzej Pietrasiewicz 提交者: Nicholas Bellinger

usb: gadget: f_tcm: remove compatibility layer

There are no old function interface users left.
Signed-off-by: NAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Acked-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
上级 00240714
...@@ -24,8 +24,6 @@ ...@@ -24,8 +24,6 @@
#include "tcm.h" #include "tcm.h"
#include "u_tcm.h" #include "u_tcm.h"
#ifndef USBF_TCM_INCLUDED
#define TPG_INSTANCES 1 #define TPG_INSTANCES 1
struct tpg_instance { struct tpg_instance {
...@@ -36,7 +34,6 @@ struct tpg_instance { ...@@ -36,7 +34,6 @@ struct tpg_instance {
static struct tpg_instance tpg_instances[TPG_INSTANCES]; static struct tpg_instance tpg_instances[TPG_INSTANCES];
static DEFINE_MUTEX(tpg_instances_lock); static DEFINE_MUTEX(tpg_instances_lock);
#endif
static inline struct f_uas *to_f_uas(struct usb_function *f) static inline struct f_uas *to_f_uas(struct usb_function *f)
{ {
...@@ -1386,10 +1383,8 @@ static struct se_portal_group *usbg_make_tpg( ...@@ -1386,10 +1383,8 @@ static struct se_portal_group *usbg_make_tpg(
struct usbg_tpg *tpg; struct usbg_tpg *tpg;
unsigned long tpgt; unsigned long tpgt;
int ret; int ret;
#ifndef USBF_TCM_INCLUDED
struct f_tcm_opts *opts; struct f_tcm_opts *opts;
unsigned i; unsigned i;
#endif
if (strstr(name, "tpgt_") != name) if (strstr(name, "tpgt_") != name)
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
...@@ -1400,7 +1395,6 @@ static struct se_portal_group *usbg_make_tpg( ...@@ -1400,7 +1395,6 @@ static struct se_portal_group *usbg_make_tpg(
pr_err("gadgets, you can't do this here.\n"); pr_err("gadgets, you can't do this here.\n");
return ERR_PTR(-EBUSY); return ERR_PTR(-EBUSY);
} }
#ifndef USBF_TCM_INCLUDED
ret = -ENODEV; ret = -ENODEV;
mutex_lock(&tpg_instances_lock); mutex_lock(&tpg_instances_lock);
for (i = 0; i < TPG_INSTANCES; ++i) for (i = 0; i < TPG_INSTANCES; ++i)
...@@ -1417,26 +1411,16 @@ static struct se_portal_group *usbg_make_tpg( ...@@ -1417,26 +1411,16 @@ static struct se_portal_group *usbg_make_tpg(
if (opts->has_dep && !try_module_get(opts->dependent)) if (opts->has_dep && !try_module_get(opts->dependent))
goto unlock_dep; goto unlock_dep;
#endif
tpg = kzalloc(sizeof(struct usbg_tpg), GFP_KERNEL); tpg = kzalloc(sizeof(struct usbg_tpg), GFP_KERNEL);
ret = -ENOMEM; ret = -ENOMEM;
if (!tpg) if (!tpg)
#ifdef USBF_TCM_INCLUDED
return ERR_PTR(-ENOMEM);
#else
goto unref_dep; goto unref_dep;
#endif
mutex_init(&tpg->tpg_mutex); mutex_init(&tpg->tpg_mutex);
atomic_set(&tpg->tpg_port_count, 0); atomic_set(&tpg->tpg_port_count, 0);
tpg->workqueue = alloc_workqueue("tcm_usb_gadget", 0, 1); tpg->workqueue = alloc_workqueue("tcm_usb_gadget", 0, 1);
if (!tpg->workqueue) { if (!tpg->workqueue)
#ifndef USBF_TCM_INCLUDED
goto free_tpg; goto free_tpg;
#endif
kfree(tpg);
return NULL;
}
tpg->tport = tport; tpg->tport = tport;
tpg->tport_tpgt = tpgt; tpg->tport_tpgt = tpgt;
...@@ -1446,23 +1430,16 @@ static struct se_portal_group *usbg_make_tpg( ...@@ -1446,23 +1430,16 @@ static struct se_portal_group *usbg_make_tpg(
* pretend to be SAS.. * pretend to be SAS..
*/ */
ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_SAS); ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_SAS);
if (ret < 0) { if (ret < 0)
#ifndef USBF_TCM_INCLUDED
goto free_workqueue; goto free_workqueue;
#endif
destroy_workqueue(tpg->workqueue);
kfree(tpg);
return NULL;
}
#ifndef USBF_TCM_INCLUDED
tpg_instances[i].tpg = tpg; tpg_instances[i].tpg = tpg;
tpg->fi = tpg_instances[i].func_inst; tpg->fi = tpg_instances[i].func_inst;
mutex_unlock(&opts->dep_lock); mutex_unlock(&opts->dep_lock);
mutex_unlock(&tpg_instances_lock); mutex_unlock(&tpg_instances_lock);
#endif
the_only_tpg_I_currently_have = tpg; the_only_tpg_I_currently_have = tpg;
return &tpg->se_tpg; return &tpg->se_tpg;
#ifndef USBF_TCM_INCLUDED
free_workqueue: free_workqueue:
destroy_workqueue(tpg->workqueue); destroy_workqueue(tpg->workqueue);
free_tpg: free_tpg:
...@@ -1475,7 +1452,6 @@ static struct se_portal_group *usbg_make_tpg( ...@@ -1475,7 +1452,6 @@ static struct se_portal_group *usbg_make_tpg(
mutex_unlock(&tpg_instances_lock); mutex_unlock(&tpg_instances_lock);
return ERR_PTR(ret); return ERR_PTR(ret);
#endif
} }
static int tcm_usbg_drop_nexus(struct usbg_tpg *); static int tcm_usbg_drop_nexus(struct usbg_tpg *);
...@@ -1484,16 +1460,13 @@ static void usbg_drop_tpg(struct se_portal_group *se_tpg) ...@@ -1484,16 +1460,13 @@ static void usbg_drop_tpg(struct se_portal_group *se_tpg)
{ {
struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg *tpg = container_of(se_tpg,
struct usbg_tpg, se_tpg); struct usbg_tpg, se_tpg);
#ifndef USBF_TCM_INCLUDED
unsigned i; unsigned i;
struct f_tcm_opts *opts; struct f_tcm_opts *opts;
#endif
tcm_usbg_drop_nexus(tpg); tcm_usbg_drop_nexus(tpg);
core_tpg_deregister(se_tpg); core_tpg_deregister(se_tpg);
destroy_workqueue(tpg->workqueue); destroy_workqueue(tpg->workqueue);
#ifndef USBF_TCM_INCLUDED
mutex_lock(&tpg_instances_lock); mutex_lock(&tpg_instances_lock);
for (i = 0; i < TPG_INSTANCES; ++i) for (i = 0; i < TPG_INSTANCES; ++i)
if (tpg_instances[i].tpg == tpg) if (tpg_instances[i].tpg == tpg)
...@@ -1506,7 +1479,7 @@ static void usbg_drop_tpg(struct se_portal_group *se_tpg) ...@@ -1506,7 +1479,7 @@ static void usbg_drop_tpg(struct se_portal_group *se_tpg)
module_put(opts->dependent); module_put(opts->dependent);
mutex_unlock(&opts->dep_lock); mutex_unlock(&opts->dep_lock);
mutex_unlock(&tpg_instances_lock); mutex_unlock(&tpg_instances_lock);
#endif
kfree(tpg); kfree(tpg);
the_only_tpg_I_currently_have = NULL; the_only_tpg_I_currently_have = NULL;
} }
...@@ -2066,13 +2039,10 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -2066,13 +2039,10 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f)
struct f_uas *fu = to_f_uas(f); struct f_uas *fu = to_f_uas(f);
struct usb_gadget *gadget = c->cdev->gadget; struct usb_gadget *gadget = c->cdev->gadget;
struct usb_ep *ep; struct usb_ep *ep;
#ifndef USBF_TCM_INCLUDED
struct f_tcm_opts *opts; struct f_tcm_opts *opts;
#endif
int iface; int iface;
int ret; int ret;
#ifndef USBF_TCM_INCLUDED
opts = container_of(f->fi, struct f_tcm_opts, func_inst); opts = container_of(f->fi, struct f_tcm_opts, func_inst);
mutex_lock(&opts->dep_lock); mutex_lock(&opts->dep_lock);
...@@ -2081,7 +2051,7 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -2081,7 +2051,7 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f)
return -ENODEV; return -ENODEV;
} }
mutex_unlock(&opts->dep_lock); mutex_unlock(&opts->dep_lock);
#endif
if (tcm_us_strings[0].id == 0) { if (tcm_us_strings[0].id == 0) {
ret = usb_string_ids_tab(c->cdev, tcm_us_strings); ret = usb_string_ids_tab(c->cdev, tcm_us_strings);
if (ret < 0) if (ret < 0)
...@@ -2149,18 +2119,6 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -2149,18 +2119,6 @@ static int tcm_bind(struct usb_configuration *c, struct usb_function *f)
return -ENOTSUPP; return -ENOTSUPP;
} }
#ifdef USBF_TCM_INCLUDED
static void tcm_old_unbind(struct usb_configuration *c, struct usb_function *f)
{
struct f_uas *fu = to_f_uas(f);
usb_free_all_descriptors(f);
kfree(fu);
}
#endif
struct guas_setup_wq { struct guas_setup_wq {
struct work_struct work; struct work_struct work;
struct f_uas *fu; struct f_uas *fu;
...@@ -2229,37 +2187,6 @@ static int tcm_setup(struct usb_function *f, ...@@ -2229,37 +2187,6 @@ static int tcm_setup(struct usb_function *f,
return usbg_bot_setup(f, ctrl); return usbg_bot_setup(f, ctrl);
} }
#ifdef USBF_TCM_INCLUDED
static int tcm_bind_config(struct usb_configuration *c)
{
struct f_uas *fu;
int ret;
fu = kzalloc(sizeof(*fu), GFP_KERNEL);
if (!fu)
return -ENOMEM;
fu->function.name = "Target Function";
fu->function.bind = tcm_bind;
fu->function.unbind = tcm_old_unbind;
fu->function.set_alt = tcm_set_alt;
fu->function.setup = tcm_setup;
fu->function.disable = tcm_disable;
fu->function.strings = tcm_strings;
fu->tpg = the_only_tpg_I_currently_have;
ret = usb_add_function(c, &fu->function);
if (ret)
goto err;
return 0;
err:
kfree(fu);
return ret;
}
#else
static void tcm_free_inst(struct usb_function_instance *f) static void tcm_free_inst(struct usb_function_instance *f)
{ {
struct f_tcm_opts *opts; struct f_tcm_opts *opts;
...@@ -2417,5 +2344,3 @@ module_exit(tcm_exit); ...@@ -2417,5 +2344,3 @@ module_exit(tcm_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_AUTHOR("Sebastian Andrzej Siewior"); MODULE_AUTHOR("Sebastian Andrzej Siewior");
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册