19#ifndef ZEPHYR_INCLUDE_USB_CH9_H_ 
   20#define ZEPHYR_INCLUDE_USB_CH9_H_ 
   27#ifdef CONFIG_LITTLE_ENDIAN 
   51#define USB_REQTYPE_DIR_TO_DEVICE       0 
   52#define USB_REQTYPE_DIR_TO_HOST         1 
   55#define USB_REQTYPE_TYPE_STANDARD       0 
   56#define USB_REQTYPE_TYPE_CLASS          1 
   57#define USB_REQTYPE_TYPE_VENDOR         2 
   58#define USB_REQTYPE_TYPE_RESERVED       3 
   61#define USB_REQTYPE_RECIPIENT_DEVICE    0 
   62#define USB_REQTYPE_RECIPIENT_INTERFACE 1 
   63#define USB_REQTYPE_RECIPIENT_ENDPOINT  2 
   64#define USB_REQTYPE_RECIPIENT_OTHER     3 
   67#define USB_REQTYPE_GET_DIR(bmRequestType) (((bmRequestType) >> 7) & 0x01U) 
   69#define USB_REQTYPE_GET_TYPE(bmRequestType) (((bmRequestType) >> 5) & 0x03U) 
   71#define USB_REQTYPE_GET_RECIPIENT(bmRequestType) ((bmRequestType) & 0x1FU) 
   96#define USB_SREQ_GET_STATUS             0x00 
   97#define USB_SREQ_CLEAR_FEATURE          0x01 
   98#define USB_SREQ_SET_FEATURE            0x03 
   99#define USB_SREQ_SET_ADDRESS            0x05 
  100#define USB_SREQ_GET_DESCRIPTOR         0x06 
  101#define USB_SREQ_SET_DESCRIPTOR         0x07 
  102#define USB_SREQ_GET_CONFIGURATION      0x08 
  103#define USB_SREQ_SET_CONFIGURATION      0x09 
  104#define USB_SREQ_GET_INTERFACE          0x0A 
  105#define USB_SREQ_SET_INTERFACE          0x0B 
  106#define USB_SREQ_SYNCH_FRAME            0x0C 
  109#define USB_DESC_DEVICE                 1 
  110#define USB_DESC_CONFIGURATION          2 
  111#define USB_DESC_STRING                 3 
  112#define USB_DESC_INTERFACE              4 
  113#define USB_DESC_ENDPOINT               5 
  114#define USB_DESC_DEVICE_QUALIFIER       6 
  115#define USB_DESC_OTHER_SPEED            7 
  116#define USB_DESC_INTERFACE_POWER        8 
  118#define USB_DESC_OTG                    9 
  119#define USB_DESC_DEBUG                  10 
  120#define USB_DESC_INTERFACE_ASSOC        11 
  121#define USB_DESC_BOS                    15 
  122#define USB_DESC_DEVICE_CAPABILITY      16 
  127#define USB_DESC_CS_DEVICE              0x21 
  128#define USB_DESC_CS_CONFIGURATION       0x22 
  129#define USB_DESC_CS_STRING              0x23 
  130#define USB_DESC_CS_INTERFACE           0x24 
  131#define USB_DESC_CS_ENDPOINT            0x25 
  134#define USB_SFS_ENDPOINT_HALT           0x00 
  135#define USB_SFS_REMOTE_WAKEUP           0x01 
  136#define USB_SFS_TEST_MODE               0x02 
  139#define USB_GET_STATUS_SELF_POWERED     BIT(0) 
  140#define USB_GET_STATUS_REMOTE_WAKEUP    BIT(1) 
  192#ifdef CONFIG_LITTLE_ENDIAN 
  238#define USB_SCD_RESERVED        BIT(7) 
  239#define USB_SCD_SELF_POWERED    BIT(6) 
  240#define USB_SCD_REMOTE_WAKEUP   BIT(5) 
  243#define USB_BCC_AUDIO                   0x01 
  244#define USB_BCC_CDC_CONTROL             0x02 
  245#define USB_BCC_HID                     0x03 
  246#define USB_BCC_MASS_STORAGE            0x08 
  247#define USB_BCC_CDC_DATA                0x0A 
  248#define USB_BCC_VIDEO                   0x0E 
  249#define USB_BCC_WIRELESS_CONTROLLER     0xE0 
  250#define USB_BCC_MISCELLANEOUS           0xEF 
  251#define USB_BCC_APPLICATION             0xFE 
  252#define USB_BCC_VENDOR                  0xFF 
  255#define USB_SRN_1_1                     0x0110 
  256#define USB_SRN_2_0                     0x0200 
  257#define USB_SRN_2_1                     0x0210 
  259#define USB_DEC_TO_BCD(dec)     ((((dec) / 10) << 4) | ((dec) % 10)) 
  262#define USB_BCD_DRN             (USB_DEC_TO_BCD(KERNEL_VERSION_MAJOR) << 8 | \ 
  263                                 USB_DEC_TO_BCD(KERNEL_VERSION_MINOR)) 
  266#define USB_GET_DESCRIPTOR_TYPE(wValue)         ((uint8_t)((wValue) >> 8)) 
  269#define USB_GET_DESCRIPTOR_INDEX(wValue)        ((uint8_t)(wValue)) 
  272#define USB_CONTROL_EP_MPS              64U 
  275#define USB_EP_DIR_MASK                 (uint8_t)BIT(7) 
  278#define USB_EP_DIR_IN                   (uint8_t)BIT(7) 
  281#define USB_EP_DIR_OUT                  0U 
  289#define USB_EP_GET_IDX(ep)              ((ep) & ~USB_EP_DIR_MASK) 
  292#define USB_EP_GET_DIR(ep)              ((ep) & USB_EP_DIR_MASK) 
  295#define USB_EP_GET_ADDR(idx, dir)       ((idx) | ((dir) & USB_EP_DIR_MASK)) 
  298#define USB_EP_DIR_IS_IN(ep)            (USB_EP_GET_DIR(ep) == USB_EP_DIR_IN) 
  301#define USB_EP_DIR_IS_OUT(ep)           (USB_EP_GET_DIR(ep) == USB_EP_DIR_OUT) 
  304#define USB_CONTROL_EP_OUT              (USB_EP_DIR_OUT | 0U) 
  307#define USB_CONTROL_EP_IN               (USB_EP_DIR_IN | 0U) 
  310#define USB_EP_TRANSFER_TYPE_MASK       0x3U 
  313#define USB_EP_TYPE_CONTROL             0U 
  316#define USB_EP_TYPE_ISO                 1U 
  319#define USB_EP_TYPE_BULK                2U 
  322#define USB_EP_TYPE_INTERRUPT           3U 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
 
Definition: usb_ch9.h:226
 
uint8_t bLength
Definition: usb_ch9.h:227
 
uint8_t bFunctionClass
Definition: usb_ch9.h:231
 
uint8_t bFunctionSubClass
Definition: usb_ch9.h:232
 
uint8_t iFunction
Definition: usb_ch9.h:234
 
uint8_t bFunctionProtocol
Definition: usb_ch9.h:233
 
uint8_t bInterfaceCount
Definition: usb_ch9.h:230
 
uint8_t bFirstInterface
Definition: usb_ch9.h:229
 
uint8_t bDescriptorType
Definition: usb_ch9.h:228
 
Definition: usb_ch9.h:167
 
uint8_t bLength
Definition: usb_ch9.h:168
 
uint8_t bmAttributes
Definition: usb_ch9.h:174
 
uint8_t bMaxPower
Definition: usb_ch9.h:175
 
uint8_t bConfigurationValue
Definition: usb_ch9.h:172
 
uint8_t bDescriptorType
Definition: usb_ch9.h:169
 
uint8_t iConfiguration
Definition: usb_ch9.h:173
 
uint8_t bNumInterfaces
Definition: usb_ch9.h:171
 
uint16_t wTotalLength
Definition: usb_ch9.h:170
 
Definition: usb_ch9.h:149
 
uint16_t idVendor
Definition: usb_ch9.h:157
 
uint8_t iSerialNumber
Definition: usb_ch9.h:162
 
uint16_t bcdDevice
Definition: usb_ch9.h:159
 
uint8_t bDeviceProtocol
Definition: usb_ch9.h:155
 
uint8_t bNumConfigurations
Definition: usb_ch9.h:163
 
uint16_t idProduct
Definition: usb_ch9.h:158
 
uint16_t bcdUSB
Definition: usb_ch9.h:152
 
uint8_t bDeviceClass
Definition: usb_ch9.h:153
 
uint8_t bMaxPacketSize0
Definition: usb_ch9.h:156
 
uint8_t iProduct
Definition: usb_ch9.h:161
 
uint8_t iManufacturer
Definition: usb_ch9.h:160
 
uint8_t bDescriptorType
Definition: usb_ch9.h:151
 
uint8_t bDeviceSubClass
Definition: usb_ch9.h:154
 
uint8_t bLength
Definition: usb_ch9.h:150
 
Definition: usb_ch9.h:191
 
uint8_t transfer
Definition: usb_ch9.h:201
 
uint8_t synch
Definition: usb_ch9.h:200
 
uint8_t reserved
Definition: usb_ch9.h:198
 
uint8_t usage
Definition: usb_ch9.h:199
 
Definition: usb_ch9.h:206
 
uint8_t bDescriptorType
Definition: usb_ch9.h:208
 
uint8_t bEndpointAddress
Definition: usb_ch9.h:209
 
struct usb_ep_desc_bmattr Attributes
Definition: usb_ch9.h:212
 
uint8_t bInterval
Definition: usb_ch9.h:215
 
uint16_t wMaxPacketSize
Definition: usb_ch9.h:214
 
uint8_t bmAttributes
Definition: usb_ch9.h:211
 
uint8_t bLength
Definition: usb_ch9.h:207
 
Definition: usb_ch9.h:179
 
uint8_t bAlternateSetting
Definition: usb_ch9.h:183
 
uint8_t bInterfaceSubClass
Definition: usb_ch9.h:186
 
uint8_t bInterfaceProtocol
Definition: usb_ch9.h:187
 
uint8_t bNumEndpoints
Definition: usb_ch9.h:184
 
uint8_t bInterfaceClass
Definition: usb_ch9.h:185
 
uint8_t iInterface
Definition: usb_ch9.h:188
 
uint8_t bDescriptorType
Definition: usb_ch9.h:181
 
uint8_t bLength
Definition: usb_ch9.h:180
 
uint8_t bInterfaceNumber
Definition: usb_ch9.h:182
 
uint8_t recipient
Definition: usb_ch9.h:34
 
uint8_t type
Definition: usb_ch9.h:33
 
uint8_t direction
Definition: usb_ch9.h:32
 
uint8_t bmRequestType
Definition: usb_ch9.h:41
 
uint16_t wLength
Definition: usb_ch9.h:47
 
uint16_t wValue
Definition: usb_ch9.h:45
 
uint16_t wIndex
Definition: usb_ch9.h:46
 
uint8_t bRequest
Definition: usb_ch9.h:44
 
struct usb_req_type_field RequestType
Definition: usb_ch9.h:42
 
Definition: usb_ch9.h:219
 
uint8_t bDescriptorType
Definition: usb_ch9.h:221
 
uint8_t bLength
Definition: usb_ch9.h:220
 
uint16_t bString
Definition: usb_ch9.h:222
 
#define USB_REQTYPE_DIR_TO_DEVICE
Definition: usb_ch9.h:51
 
static bool usb_reqtype_is_to_device(const struct usb_setup_packet *setup)
Check if request transfer direction is to device.
Definition: usb_ch9.h:90
 
static bool usb_reqtype_is_to_host(const struct usb_setup_packet *setup)
Check if request transfer direction is to host.
Definition: usb_ch9.h:79
 
#define USB_REQTYPE_DIR_TO_HOST
Definition: usb_ch9.h:52
 
USB Hub Class device API header.