⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_ch9.h

📁 基于TI DSP/BIOS的usb网卡的实现
💻 H
📖 第 1 页 / 共 2 页
字号:
    u8  bAlternateSetting;
    u8  bNumEndpoints;
    u8  bInterfaceClass;
    u8  bInterfaceSubClass;
    u8  bInterfaceProtocol;
    u8  iInterface;
} /* __attribute__ (( packed ))*/;

#define USB_DT_INTERFACE_SIZE       9

/*-------------------------------------------------------------------------*/

/* USB_DT_ENDPOINT: Endpoint descriptor */
struct usb_endpoint_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  bEndpointAddress;
    u8  bmAttributes;
    le16 wMaxPacketSize;
    u8  bInterval;

    /* NOTE:  these two are _only_ in audio endpoints. */
    /* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */
    u8  bRefresh;
    u8  bSynchAddress;
} /* __attribute__ (( packed ))*/;

#define USB_DT_ENDPOINT_SIZE        7
#define USB_DT_ENDPOINT_AUDIO_SIZE  9   /* Audio extension */

/*
 * Endpoints
 */
#define USB_ENDPOINT_NUMBER_MASK    0x0f    /* in bEndpointAddress */
#define USB_ENDPOINT_DIR_MASK       0x80

#define USB_ENDPOINT_XFERTYPE_MASK  0x03    /* in bmAttributes */
#define USB_ENDPOINT_XFER_CONTROL   0
#define USB_ENDPOINT_XFER_ISOC      1
#define USB_ENDPOINT_XFER_BULK      2
#define USB_ENDPOINT_XFER_INT       3
#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80

/*-------------------------------------------------------------------------*/

/* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */
struct usb_qualifier_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    le16 bcdUSB;
    u8  bDeviceClass;
    u8  bDeviceSubClass;
    u8  bDeviceProtocol;
    u8  bMaxPacketSize0;
    u8  bNumConfigurations;
    u8  bRESERVED;
} /*__attribute__ (( packed ))*/;

/*-------------------------------------------------------------------------*/

/* USB_DT_OTG (from OTG 1.0a supplement) */
struct usb_otg_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  bmAttributes; /* support for HNP, SRP, etc */
} /*__attribute__ (( packed ))*/;

/* from usb_otg_descriptor.bmAttributes */
#define USB_OTG_SRP     (1 << 0)
#define USB_OTG_HNP     (1 << 1)    /* swap host/device roles */

/*-------------------------------------------------------------------------*/

/* USB_DT_DEBUG:  for special highspeed devices, replacing serial console */
struct usb_debug_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    /* bulk endpoints with 8 byte maxpacket */
    u8  bDebugInEndpoint;
    u8  bDebugOutEndpoint;
};

/*-------------------------------------------------------------------------*/

/* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */
struct usb_interface_assoc_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  bFirstInterface;
    u8  bInterfaceCount;
    u8  bFunctionClass;
    u8  bFunctionSubClass;
    u8  bFunctionProtocol;
    u8  iFunction;
} /* __attribute__ (( packed ))*/;

/*-------------------------------------------------------------------------*/

/* USB_DT_SECURITY:  group of wireless security descriptors, including
 * encryption types available for setting up a CC/association.
 */
struct usb_security_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    le16 wTotalLength;
    u8  bNumEncryptionTypes;
};

/*-------------------------------------------------------------------------*/

/* USB_DT_KEY:  used with {GET,SET}_SECURITY_DATA; only public keys
 * may be retrieved.
 */
/*struct usb_key_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  tTKID[3];
    u8  bReserved;
    u8  bKeyData[0];
};*/

/*-------------------------------------------------------------------------*/

/* USB_DT_ENCRYPTION_TYPE:  bundled in DT_SECURITY groups */
struct usb_encryption_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  bEncryptionType;
#define USB_ENC_TYPE_UNSECURE       0
#define USB_ENC_TYPE_WIRED      1   /* non-wireless mode */
#define USB_ENC_TYPE_CCM_1      2   /* aes128/cbc session */
#define USB_ENC_TYPE_RSA_1      3   /* rsa3072/sha1 auth */
    u8  bEncryptionValue;     /* use in SET_ENCRYPTION */
    u8  bAuthKeyIndex;
};

/*-------------------------------------------------------------------------*/

/* USB_DT_BOS:  group of wireless capabilities */
struct usb_bos_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    le16 wTotalLength;
    u8  bNumDeviceCaps;
};

/*-------------------------------------------------------------------------*/

/* USB_DT_DEVICE_CAPABILITY:  grouped with BOS */
struct usb_dev_cap_header {
    u8  bLength;
    u8  bDescriptorType;
    u8  bDevCapabilityType;
};

#define USB_CAP_TYPE_WIRELESS_USB   1

struct usb_wireless_cap_descriptor {    /* Ultra Wide Band */
    u8  bLength;
    u8  bDescriptorType;
    u8  bDevCapabilityType;

    u8  bmAttributes;
#define USB_WIRELESS_P2P_DRD        (1 << 1)
#define USB_WIRELESS_BEACON_MASK    (3 << 2)
#define USB_WIRELESS_BEACON_SELF    (1 << 2)
#define USB_WIRELESS_BEACON_DIRECTED    (2 << 2)
#define USB_WIRELESS_BEACON_NONE    (3 << 2)
    le16 wPHYRates;   /* bit rates, Mbps */
#define USB_WIRELESS_PHY_53     (1 << 0)    /* always set */
#define USB_WIRELESS_PHY_80     (1 << 1)
#define USB_WIRELESS_PHY_107        (1 << 2)    /* always set */
#define USB_WIRELESS_PHY_160        (1 << 3)
#define USB_WIRELESS_PHY_200        (1 << 4)    /* always set */
#define USB_WIRELESS_PHY_320        (1 << 5)
#define USB_WIRELESS_PHY_400        (1 << 6)
#define USB_WIRELESS_PHY_480        (1 << 7)
    u8  bmTFITXPowerInfo; /* TFI power levels */
    u8  bmFFITXPowerInfo; /* FFI power levels */
    le16 bmBandGroup;
    u8  bReserved;
};

/*-------------------------------------------------------------------------*/

/* USB_DT_WIRELESS_ENDPOINT_COMP:  companion descriptor associated with
 * each endpoint descriptor for a wireless device
 */
struct usb_wireless_ep_comp_descriptor {
    u8  bLength;
    u8  bDescriptorType;

    u8  bMaxBurst;
    u8  bMaxSequence;
    le16 wMaxStreamDelay;
    le16 wOverTheAirPacketSize;
    u8  bOverTheAirInterval;
    u8  bmCompAttributes;
#define USB_ENDPOINT_SWITCH_MASK    0x03    /* in bmCompAttributes */
#define USB_ENDPOINT_SWITCH_NO      0
#define USB_ENDPOINT_SWITCH_SWITCH  1
#define USB_ENDPOINT_SWITCH_SCALE   2
};

/*-------------------------------------------------------------------------*/

/* USB_REQ_SET_HANDSHAKE is a four-way handshake used between a wireless
 * host and a device for connection set up, mutual authentication, and
 * exchanging short lived session keys.  The handshake depends on a CC.
 */
struct usb_handshake {
    u8 bMessageNumber;
    u8 bStatus;
    u8 tTKID[3];
    u8 bReserved;
    u8 CDID[16];
    u8 nonce[16];
    u8 MIC[8];
};

/*-------------------------------------------------------------------------*/

/* USB_REQ_SET_CONNECTION modifies or revokes a connection context (CC).
 * A CC may also be set up using non-wireless secure channels (including
 * wired USB!), and some devices may support CCs with multiple hosts.
 */
struct usb_connection_context {
    u8 CHID[16];      /* persistent host id */
    u8 CDID[16];      /* device id (unique w/in host context) */
    u8 CK[16];        /* connection key */
};

/*-------------------------------------------------------------------------*/

/* USB 2.0 defines three speeds, here's how Linux identifies them */

enum usb_device_speed {
    USB_SPEED_UNKNOWN = 0,          /* enumerating */
        USB_SPEED_LOW, USB_SPEED_FULL,      /* usb 1.1 */
        USB_SPEED_HIGH,             /* usb 2.0 */
        USB_SPEED_VARIABLE        /* wireless (usb 2.5) */
};

enum usb_device_state {
    /* NOTATTACHED isn't in the USB spec, and this state acts
     * the same as ATTACHED ... but it's clearer this way.
     */
    USB_STATE_NOTATTACHED = 0,

        /* the chapter 9 device states */
        USB_STATE_ATTACHED,
        USB_STATE_POWERED,
        USB_STATE_DEFAULT,          /* limited function */
        USB_STATE_ADDRESS,
        USB_STATE_CONFIGURED,           /* most functions */

        USB_STATE_SUSPENDED

        /* NOTE:  there are actually four different SUSPENDED
     * states, returning to POWERED, DEFAULT, ADDRESS, or
     * CONFIGURED respectively when SOF tokens flow again.
     */
};

#endif  /* __LINUX_USB_CH9_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -