#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/configfs.h>
#include <linux/ctype.h>
#include <linux/usb/ch9.h>
#include <linux/usb/composite.h>
#include <linux/usb/gadget.h>
#include <linux/usb/storage.h>
#include <scsi/scsi_tcq.h>
#include <target/target_core_base.h>
#include <target/target_core_fabric.h>
#include <linux/unaligned.h>
#include "u_tcm.h"
USB_GADGET_COMPOSITE_OPTIONS(…);
#define UAS_VENDOR_ID …
#define UAS_PRODUCT_ID …
static struct usb_device_descriptor usbg_device_desc = …;
#define USB_G_STR_CONFIG …
static struct usb_string usbg_us_strings[] = …;
static struct usb_gadget_strings usbg_stringtab = …;
static struct usb_gadget_strings *usbg_strings[] = …;
static struct usb_function_instance *fi_tcm;
static struct usb_function *f_tcm;
static int guas_unbind(struct usb_composite_dev *cdev)
{ … }
static int tcm_do_config(struct usb_configuration *c)
{ … }
static struct usb_configuration usbg_config_driver = …;
static int usbg_attach(struct usb_function_instance *f);
static void usbg_detach(struct usb_function_instance *f);
static int usb_target_bind(struct usb_composite_dev *cdev)
{ … }
static struct usb_composite_driver usbg_driver = …;
static int usbg_attach(struct usb_function_instance *f)
{ … }
static void usbg_detach(struct usb_function_instance *f)
{ … }
static int __init usb_target_gadget_init(void)
{ … }
module_init(…) …;
static void __exit usb_target_gadget_exit(void)
{ … }
module_exit(usb_target_gadget_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;