linux/include/linux/usb/quirks.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * This file holds the definitions of quirks found in USB devices.
   4 * Only quirks that affect the whole device, not an interface,
   5 * belong here.
   6 */
   7
   8#ifndef __LINUX_USB_QUIRKS_H
   9#define __LINUX_USB_QUIRKS_H
  10
  11/* string descriptors must not be fetched using a 255-byte read */
  12#define USB_QUIRK_STRING_FETCH_255              BIT(0)
  13
  14/* device can't resume correctly so reset it instead */
  15#define USB_QUIRK_RESET_RESUME                  BIT(1)
  16
  17/* device can't handle Set-Interface requests */
  18#define USB_QUIRK_NO_SET_INTF                   BIT(2)
  19
  20/* device can't handle its Configuration or Interface strings */
  21#define USB_QUIRK_CONFIG_INTF_STRINGS           BIT(3)
  22
  23/* device can't be reset(e.g morph devices), don't use reset */
  24#define USB_QUIRK_RESET                         BIT(4)
  25
  26/* device has more interface descriptions than the bNumInterfaces count,
  27   and can't handle talking to these interfaces */
  28#define USB_QUIRK_HONOR_BNUMINTERFACES          BIT(5)
  29
  30/* device needs a pause during initialization, after we read the device
  31   descriptor */
  32#define USB_QUIRK_DELAY_INIT                    BIT(6)
  33
  34/*
  35 * For high speed and super speed interrupt endpoints, the USB 2.0 and
  36 * USB 3.0 spec require the interval in microframes
  37 * (1 microframe = 125 microseconds) to be calculated as
  38 * interval = 2 ^ (bInterval-1).
  39 *
  40 * Devices with this quirk report their bInterval as the result of this
  41 * calculation instead of the exponent variable used in the calculation.
  42 */
  43#define USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL  BIT(7)
  44
  45/* device can't handle device_qualifier descriptor requests */
  46#define USB_QUIRK_DEVICE_QUALIFIER              BIT(8)
  47
  48/* device generates spurious wakeup, ignore remote wakeup capability */
  49#define USB_QUIRK_IGNORE_REMOTE_WAKEUP          BIT(9)
  50
  51/* device can't handle Link Power Management */
  52#define USB_QUIRK_NO_LPM                        BIT(10)
  53
  54/*
  55 * Device reports its bInterval as linear frames instead of the
  56 * USB 2.0 calculation.
  57 */
  58#define USB_QUIRK_LINEAR_FRAME_INTR_BINTERVAL   BIT(11)
  59
  60/*
  61 * Device needs to be disconnected before suspend to prevent spurious
  62 * wakeup.
  63 */
  64#define USB_QUIRK_DISCONNECT_SUSPEND            BIT(12)
  65
  66/* Device needs a pause after every control message. */
  67#define USB_QUIRK_DELAY_CTRL_MSG                BIT(13)
  68
  69/* Hub needs extra delay after resetting its port. */
  70#define USB_QUIRK_HUB_SLOW_RESET                BIT(14)
  71
  72/* device has endpoints that should be ignored */
  73#define USB_QUIRK_ENDPOINT_IGNORE               BIT(15)
  74
  75#endif /* __LINUX_USB_QUIRKS_H */
  76