#include <linux/moduleparam.h>
#include <linux/usb.h>
#include <linux/usb/quirks.h>
#include <linux/usb/hcd.h>
#include "usb.h"
struct quirk_entry { … };
static DEFINE_MUTEX(quirk_mutex);
static struct quirk_entry *quirk_list;
static unsigned int quirk_count;
static char quirks_param[128];
static int quirks_param_set(const char *value, const struct kernel_param *kp)
{ … }
static const struct kernel_param_ops quirks_param_ops = …;
static struct kparam_string quirks_param_string = …;
device_param_cb(…);
MODULE_PARM_DESC(…) …;
static const struct usb_device_id usb_quirk_list[] = …;
static const struct usb_device_id usb_interface_quirk_list[] = …;
static const struct usb_device_id usb_amd_resume_quirk_list[] = …;
static const struct usb_device_id usb_endpoint_ignore[] = …;
bool usb_endpoint_is_ignored(struct usb_device *udev,
struct usb_host_interface *intf,
struct usb_endpoint_descriptor *epd)
{ … }
static bool usb_match_any_interface(struct usb_device *udev,
const struct usb_device_id *id)
{ … }
static int usb_amd_resume_quirk(struct usb_device *udev)
{ … }
static u32 usb_detect_static_quirks(struct usb_device *udev,
const struct usb_device_id *id)
{ … }
static u32 usb_detect_dynamic_quirks(struct usb_device *udev)
{ … }
void usb_detect_quirks(struct usb_device *udev)
{ … }
void usb_detect_interface_quirks(struct usb_device *udev)
{ … }
void usb_release_quirk_list(void)
{ … }