root/include/linux/usb/quirks.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 interupt 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 blacklisted endpoints */
  73 #define USB_QUIRK_ENDPOINT_BLACKLIST            BIT(15)
  74 
  75 #endif /* __LINUX_USB_QUIRKS_H */

/* [<][>][^][v][top][bottom][index][help] */