#include <linux/module.h>
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/ioport.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/list.h>
#include <linux/interrupt.h>
#include <linux/moduleparam.h>
#include <linux/device.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
#include <linux/usb/otg.h>
#include <linux/pm.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/unaligned.h>
#include <linux/platform_device.h>
#include "bdc.h"
#include "bdc_ep.h"
#include "bdc_cmd.h"
#include "bdc_dbg.h"
static const struct usb_gadget_ops bdc_gadget_ops;
static const char * const conn_speed_str[] = …;
static struct usb_endpoint_descriptor bdc_gadget_ep0_desc = …;
static void srr_dqp_index_advc(struct bdc *bdc, u32 srr_num)
{ … }
static void bdc_uspc_connected(struct bdc *bdc)
{ … }
static void bdc_uspc_disconnected(struct bdc *bdc, bool reinit)
{ … }
static void bdc_func_wake_timer(struct work_struct *work)
{ … }
static void handle_link_state_change(struct bdc *bdc, u32 uspc)
{ … }
void bdc_sr_uspc(struct bdc *bdc, struct bdc_sr *sreport)
{ … }
static irqreturn_t bdc_udc_interrupt(int irq, void *_bdc)
{ … }
static int bdc_udc_start(struct usb_gadget *gadget,
struct usb_gadget_driver *driver)
{ … }
static int bdc_udc_stop(struct usb_gadget *gadget)
{ … }
static int bdc_udc_pullup(struct usb_gadget *gadget, int is_on)
{ … }
static int bdc_udc_set_selfpowered(struct usb_gadget *gadget,
int is_self)
{ … }
static int bdc_udc_wakeup(struct usb_gadget *gadget)
{ … }
static const struct usb_gadget_ops bdc_gadget_ops = …;
int bdc_udc_init(struct bdc *bdc)
{ … }
void bdc_udc_exit(struct bdc *bdc)
{ … }