Go to main content

man pages section 9: DDI and DKI Properties and Data Structures

Exit Print View

Updated: Friday, August 13, 2021



usb_ep_descr - USB endpoint descriptor


#include <sys/usb/usba.h>

Interface Level

Solaris DDI specific (Solaris DDI)


The usb_ep_descr_t endpoint descriptor defines endpoint attributes. An endpoint is a uniquely addressable portion of a USB device that is a source or sink of data.

Please refer to Section 9.6.6 of the USB 2.0 specification. The USB 2.0 specification is available at https://www.usb.org/ .

One or more endpoint descriptors are retrieved from a USB device during device enumeration. They can be accessed via usb_get_dev_data(9F).

A endpoint descriptor has the following fields:

uint8_t    bLength                 Size of this descriptor
                                   in bytes.

uint8_t    bDescriptorType         Set to USB_DESCR_TYPE_EP.

uint8_t    bEndpointAddress        Endpoint address.

uint8_t    bmAttributes            Endpoint attrib. (see below.)

uint16_t   wMaxPacketSize          Maximum pkt size.

uint8_t    bInterval               Polling interval for interrupt
                                   and isochro. endpoints.
                                   NAK rate for high-speed control
                                   and bulk endpoints.

Endpoint descriptor bEndpointAddress bitmasks contain address number
and direction fields as follows:
    USB_EP_NUM_MASK        Address bits
    USB_EP_DIR_MASK        Direction bit
    USB_EP_DIR_OUT         OUT toward device
    USB_EP_DIR_IN          IN toward host

Endpoint descriptor transfer type bmAttributes values and mask:
    USB_EP_ATTR_CONTROL    Endpoint supports control transfers
    USB_EP_ATTR_ISOCH      Endpoint supports isochronous xfers
    USB_EP_ATTR_BULK       Endpoint supports bulk transfers
    USB_EP_ATTR_INTR       Endpoint supports interrupt transfers
    USB_EP_ATTR_MASK       bmAttributes transfer-type bit field

Endpoint descriptor synchronization type bmAttributes values and mask
for isochronous endpoints:
    USB_EP_SYNC_NONE       Endpoint supports no synchronization
    USB_EP_SYNC_ASYNC      Endpoint supports asynchronous sync
    USB_EP_SYNC_ADPT       Endpoint supports adaptive sync
    USB_EP_SYNC_SYNC       Endpoint supports synchronous sync
    USB_EP_SYNC_MASK       bmAttributes sync type bit field

Endpoint descriptor feedback type bmAttributes values and mask for
isochronous endpoints:
    USB_EP_USAGE_DATA                 Data endpoint
    USB_EP_USAGE_FEED                 Feedback endpoint
    USB_EP_USAGE_IMPL                 Implicit feedback data endpoint
    USB_EP_USAGE_MASK                 bmAttributes feedback type bit fld

Endpoint descriptor additional-transaction-opportunities-per-microframe
wMaxPacketSize values and mask for high speed isochronous and interrupt
    USB_EP_MAX_PKTSZ_MASK             Mask for packetsize bits
    USB_EP_MAX_XACTS_MASK             Bits for additional transfers per
    USB_EP_MAX_XACTS_SHIFT            Left-shift this number of bits to
                                      get to additional-transfers-per-
                                      microframe bitfield

Endpoint descriptor polling bInterval range values:
    USB_EP_MIN_HIGH_CONTROL_INTRVL    Min NAK rate for highspd ctrl e/p
    USB_EP_MAX_HIGH_CONTROL_INTRVL    Max NAK rate for highspd ctrl e/p

    USB_EP_MIN_HIGH_BULK_INTRVL       Min NAK rate for highspd bulk e/p
    USB_EP_MAX_HIGH_BULK_INTRVL       Max NAK rate for highspd bulk e/p

    USB_EP_MIN_LOW_INTR_INTRVL        Min poll interval, lowspd intr e/p
    USB_EP_MAX_LOW_INTR_INTRVL        Max poll interval, lowspd intr e/p

    USB_EP_MIN_FULL_INTR_INTRVL       Min poll interval, fullspd intr e/p
    USB_EP_MAX_FULL_INTR_INTRVL       Max poll interval, fullspd intr e/p

Note that for the following polling bInterval range values, the interval
is 2**(value-1). See Section 9.6.6 of the USB 2.0 specification.

    USB_EP_MIN_HIGH_INTR_INTRVL       Min poll interval, highspd intr e/p
    USB_EP_MAX_HIGH_INTR_INTRVL       Max poll interval, highspd intr e/p

    USB_EP_MIN_FULL_ISOCH_INTRVL      Min poll interval, fullspd isoc e/p
    USB_EP_MAX_FULL_ISOCH_INTRVL      Max poll interval, fullspd isoc e/p

    USB_EP_MIN_HIGH_ISOCH_INTRVL      Min poll interval, highspd isoc e/p
    USB_EP_MAX_HIGH_ISOCH_INTRVL      Max poll interval, highspd isoc e/p


See attributes(7) for descriptions of the following attributes:

PCI-based systems
Interface Stability

See Also

attributes(7), usb_get_alt_if(9F), usb_get_cfg(9F), usb_get_dev_data(9F), usb_get_string_descr(9F), usb_parse_data(9F), usb_cfg_descr(9S), usb_ctrl_request(9S), usb_dev_descr(9S), usb_dev_qlf_descr(9S), usb_if_descr(9S), usb_other_speed_cfg_descr(9S), usb_string_descr(9S)