#ifndef __LINUX_USB_H#define __LINUX_USB_H#include <linux/mod_devicetable.h>#include <linux/usb/ch9.h>#define USB_MAJOR 180#define USB_DEVICE_MAJOR 189#ifdef __KERNEL__#include <linux/errno.h>/* for -ENODEV */#include <linux/delay.h>/* for mdelay() */#include <linux/interrupt.h>/* for in_interrupt() */#include <linux/list.h>/* for struct list_head */#include <linux/kref.h>/* for struct kref */#include <linux/device.h>/* for struct device */#include <linux/fs.h>/* for struct file_operations */#include <linux/completion.h>/* for struct completion */#include <linux/sched.h>/* for current && schedule_timeout */#include <linux/mutex.h>/* for struct mutex */struct usb_device;struct usb_driver;struct wusb_dev;/*-------------------------------------------------------------------------*//* * Host-side wrappers for standard USB descriptors ... these are parsed * from the data provided by devices. Parsing turns them from a flat * sequence of descriptors into a hierarchy: * * - devices have one (usually) or more configs; * - configs have one (often) or more interfaces; * - interfaces have one (usually) or more settings; * - each interface setting has zero or (usually) more endpoints. * - a SuperSpeed endpoint has a companion descriptor * * And there might be other descriptors mixed in with those. * * Devices may also have class-specific or vendor-specific descriptors. */struct ep_device;/* For SS devices *//** * struct usb_host_ss_ep_comp - Valid for SuperSpeed devices only * @desc: endpoint companion descriptor, wMaxPacketSize in native byteorder * @extra: descriptors following this endpoint companion descriptor * @extralen: how many bytes of "extra" are valid */struct usb_host_ss_ep_comp {struct usb_ss_ep_comp_descriptor desc;unsigned char*extra;/* Extra descriptors */int extralen;};/** * struct usb_host_endpoint - host-side endpoint descriptor and queue * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder * @urb_list: urbs queued to this endpoint; maintained by usbcore * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) * with one or more transfer descriptors (TDs) per urb * @ep_dev: ep_device for sysfs info * @ss_ep_comp: companion descriptor information for this endpoint * @extra: descriptors following this endpoint in the configuration * @extralen: how many bytes of "extra" are valid * @enabled: URBs may be submitted to this endpoint * * USB requests are always queued to a given endpoint, identified by a * descriptor