diff options
author | Andrzej Pietrasiewicz <andrzej.p@samsung.com> | 2015-12-11 16:06:21 +0100 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-12-20 19:40:34 -0800 |
commit | dc8c46a5ae770d3d763353e786990bc415bc5560 (patch) | |
tree | 43e25f84abad80011899ab00935bd748c2155da7 /drivers/usb/gadget/function/u_tcm.h | |
parent | 08a1cb0f65fde6f0da1db77b847ea78dc3c102cb (diff) | |
download | talos-op-linux-dc8c46a5ae770d3d763353e786990bc415bc5560.tar.gz talos-op-linux-dc8c46a5ae770d3d763353e786990bc415bc5560.zip |
usb: gadget: f_tcm: convert to new function interface with backward compatibility
Converting tcm to the new function interface requires converting
USB tcm's function code and its users.
This patch converts the f_tcm.c to the new function interface.
The file can be now compiled into a separate module usb_f_tcm.ko.
The old function interface is provided by means of preprocessor conditional
directives. After all users are converted, the old interface can be
removed.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/usb/gadget/function/u_tcm.h')
-rw-r--r-- | drivers/usb/gadget/function/u_tcm.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/usb/gadget/function/u_tcm.h b/drivers/usb/gadget/function/u_tcm.h new file mode 100644 index 000000000000..0bd751e0483f --- /dev/null +++ b/drivers/usb/gadget/function/u_tcm.h @@ -0,0 +1,50 @@ +/* + * u_tcm.h + * + * Utility definitions for the tcm function + * + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * Author: Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef U_TCM_H +#define U_TCM_H + +#include <linux/usb/composite.h> + +/** + * @dependent: optional dependent module. Meant for legacy gadget. + * If non-null its refcount will be increased when a tpg is created and + * decreased when tpg is dropped. + * @dep_lock: lock for dependent module operations. + * @ready: true if the dependent module information is set. + * @can_attach: true a function can be bound to gadget + * @has_dep: true if there is a dependent module + * + */ +struct f_tcm_opts { + struct usb_function_instance func_inst; + struct module *dependent; + struct mutex dep_lock; + bool ready; + bool can_attach; + bool has_dep; + + /* + * Callbacks to be removed when legacy tcm gadget disappears. + * + * If you use the new function registration interface + * programmatically, you MUST set these callbacks to + * something sensible (e.g. probe/remove the composite). + */ + int (*tcm_register_callback)(struct usb_function_instance *); + void (*tcm_unregister_callback)(struct usb_function_instance *); +}; + +#endif /* U_TCM_H */ |