USB_EP_SS_COMP_DESCR(9S) Data Structures for Drivers USB_EP_SS_COMP_DESCR(9S)

usb_ep_ss_comp_descr, usb_ep_ss_comp_descr_t
USB endpoint SuperSpeed Companion Descriptor

#include <sys/usb/usba.h>

illumos DDI Specific

The usb_ep_ss_comp_descr_t structure defines additional endpoint attributes for USB 3.0 and newer devices. This structure is considered a companion descriptor. On its own, it does not uniquely define an endpoint. A standard USB descriptor is still required. See usb_ep_descr(9S) for the definition of the standard descriptor.

If available, the SuperSpeed companion descriptor can be accessed by getting the endpoint data through a call to usb_lookup_ep_data(9F). These descriptors are required to open pipes for USB 3.0 and newer devices. They can be assembled into the proper format for usb_pipe_xopen(9F) by calling usb_ep_xdescr_fill(9F).

This structure is formally defined in section 9.6.7 of the USB 3.1 specification.

uint8_t		bLength;
uint8_t		bDescriptorType;
uint8_t		bMaxBurst;
uint8_t		bmAttributes;
uint16_t	wBytesPerInterval;

The bLength member is always set to the size of this descriptor, which is usually six.

The bDescriptorType member should be set to the macro USB_DESCR_TYPE_SS_EP_COMP whose value is 0x30.

The bMaxBurst member indicates the maximum number of packets that the endpoint can send in one 'burst'. Valid values range from 0 to 15 and the values are one less than the number of packets. A value of 0 indicates that 1 packet can be sent in a burst. A value of 15 indicates that 16 packets can be sent in a burst.

The bmAttributes member indicates different attributes of the endpoint. This member is reserved and should be zero for control and interrupt endpoints.

For a bulk endpoint, the bmAttributes member is used to indicate the maximum number of streams that the device supports. The first five bits (4:0) are used, the remaining 3 bits are reserved and should be zero. Values range from 0 to 16. A value of zero indicates that streams are not supported. Otherwise, it indicates that the device supports 2 raised to the value number of streams. A value of 3, indicates 2^3 streams are supported.

For an isochronous endpoint, the bmAttributes member is used to indicate the value of the Mult property, a value used to calculate the maximum number of packets the device and receive in a service interval. The first two bits (1:0) are used to determine the mult. The remaining 6 bits (7:2) are reserved and should be set to zero.

The wBytesPerInterval member is used to indicate the total number of bytes that can be transferred in one service interval. Note, this is only valid for Isochronous and Interrupt IN (periodic) endpoints.

usb_ep_xdescr_fill(9F), usb_pipe_xopen(9F), usb_ep_descr(9S), usb_ep_xdescr(9S)

Universal Serial Bus 3.1 Specification, www.usb.org.

August 10, 2016 OmniOS