USB_EP_XDESCR(9S)        Data Structures for Drivers       USB_EP_XDESCR(9S)
NAME
     usb_ep_xdescr, 
usb_ep_xdescr_t - extended endpoint descriptor
SYNOPSIS
     #include <sys/usb/usba.h>INTERFACE LEVEL
     illumos DDI Specific
DESCRIPTION
     The 
usb_ep_xdescr_t structure is used to describe an endpoint
     descriptor as well account for the continuing evolutions in the USB
     specification.
     Starting with the 
USB 3.0 specification, 
USB 3.0 endpoints have an
     endpoint SuperSpeed companion descriptor.  See 
usb_ep_ss_comp_descr(9S)     for a description of the descriptor.  In the 
USB 3.1 specification,
     certain endpoints will have additional companion descriptors.
     The 
usb_ep_xdescr_t structure, combined with the 
usb_ep_xdescr_fill(9F)     and 
usb_pipe_xopen(9F) are designed to abstract away the need for USB
     client device drivers to need to be updated in the face of these newer
     endpoints, whose information is required for host controller devices to
     properly program the device.
     After looking up endpoint data, through the 
usb_lookup_ep_data(9F),
     device drivers should call the 
usb_ep_xdescr_fill(9F) function.  After
     that, the 
usb_ep_xdescr_t structure will be filled in.
STRUCTURE MEMBERS
     The 
usb_ep_xdescr_t structure has the following members:
           uint_t                  uex_version;
           usb_ep_xdescr_flags_t   uex_flags;
           usb_ep_descr_t          uex_ep;
           usb_ep_ss_comp_descr_t  uex_ep_ss;
     The 
uex_version member is used to describe the current version of this
     structure.  This member will be set to the value passed in by the
     device driver to 
usb_ep_xdescr_fill(9F).  Device drivers should ignore
     this field and should not modify the value placed there or modify it.
     The 
uex_flags member is an enumeration that defines a number of flags.
     Each flag indicates whether or not a given member is present or valid.
     Before accessing any member other than 
uex_ep, the device driver should
     check the flag here, otherwise its contents may be undefined.
     Currently the following flags are defined:           
USB_EP_XFLAGS_SS_COMP                   Indicates that a SuperSpeed endpoint companion descriptor
                   is present and has been filled in.  The member 
uex_ep_ss                   is valid.
     The 
uex_ep member contains a traditional USB endpoint descriptor.  Its
     contents are defined in 
usb_ep_descr(9S).  There is no flag for this
     member in 
uex_flags, it is always valid.
     The 
uex_ep_ss member contains a USB 3.0 SuperSpeed endpoint companion
     descriptor as defined in 
usb_ep_ss_comp_descr(9S).  This member is only
     valid if the 
USB_EP_XFLAGS_SS_COMP flag is specified in 
uex_flags.
SEE ALSO
     usb_ep_xdescr_fill(9F), 
usb_pipe_xopen(9F), 
usb_ep_descr(9S),     
usb_ep_ss_comp_descr(9S)illumos                      September 16, 2016                      illumos