#include <linux/usb.h>
#include <linux/usb/ch9.h>
#include <linux/usb/hcd.h>
#include <linux/usb/quirks.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <asm/byteorder.h>
#include "usb.h"
#define USB_MAXALTSETTING …
#define USB_MAXCONFIG …
static inline const char *plural(int n)
{ … }
static int find_next_descriptor(unsigned char *buffer, int size,
int dt1, int dt2, int *num_skipped)
{ … }
static void usb_parse_ssp_isoc_endpoint_companion(struct device *ddev,
int cfgno, int inum, int asnum, struct usb_host_endpoint *ep,
unsigned char *buffer, int size)
{ … }
static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
int inum, int asnum, struct usb_host_endpoint *ep,
unsigned char *buffer, int size)
{ … }
static const unsigned short low_speed_maxpacket_maxes[4] = …;
static const unsigned short full_speed_maxpacket_maxes[4] = …;
static const unsigned short high_speed_maxpacket_maxes[4] = …;
static const unsigned short super_speed_maxpacket_maxes[4] = …;
static bool endpoint_is_duplicate(struct usb_endpoint_descriptor *e1,
struct usb_endpoint_descriptor *e2)
{ … }
static bool config_endpoint_is_duplicate(struct usb_host_config *config,
int inum, int asnum, struct usb_endpoint_descriptor *d)
{ … }
static int usb_parse_endpoint(struct device *ddev, int cfgno,
struct usb_host_config *config, int inum, int asnum,
struct usb_host_interface *ifp, int num_ep,
unsigned char *buffer, int size)
{ … }
void usb_release_interface_cache(struct kref *ref)
{ … }
static int usb_parse_interface(struct device *ddev, int cfgno,
struct usb_host_config *config, unsigned char *buffer, int size,
u8 inums[], u8 nalts[])
{ … }
static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
struct usb_host_config *config, unsigned char *buffer, int size)
{ … }
void usb_destroy_configuration(struct usb_device *dev)
{ … }
int usb_get_configuration(struct usb_device *dev)
{ … }
void usb_release_bos_descriptor(struct usb_device *dev)
{ … }
static const __u8 bos_desc_len[256] = …;
int usb_get_bos_descriptor(struct usb_device *dev)
{ … }