1.\" 2.\" This file and its contents are supplied under the terms of the 3.\" Common Development and Distribution License ("CDDL"), version 1.0. 4.\" You may only use this file in accordance with the terms of version 5.\" 1.0 of the CDDL. 6.\" 7.\" A full copy of the text of the CDDL should have accompanied this 8.\" source. A copy of the CDDL is also available via the Internet at 9.\" http://www.illumos.org/license/CDDL. 10.\" 11.\" 12.\" Copyright 2016 Joyent, Inc. 13.\" 14.Dd Sep 16, 2016 15.Dt USB_EP_XDESCR 9S 16.Os 17.Sh NAME 18.Nm usb_ep_xdescr , 19.Nm usb_ep_xdescr_t 20.Nd extended endpoint descriptor 21.Sh SYNOPSIS 22.In sys/usb/usba.h 23.Sh INTERFACE LEVEL 24illumos DDI Specific 25.Sh DESCRIPTION 26The 27.Sy usb_ep_xdescr_t 28structure is used to describe an endpoint descriptor as well account for 29the continuing evolutions in the USB specification. 30.Pp 31Starting with the 32.Em USB 3.0 33specification, 34.Em USB 3.0 35endpoints have an endpoint SuperSpeed companion descriptor. 36See 37.Xr usb_ep_ss_comp_descr 9S 38for a description of the descriptor. 39In the 40.Em USB 3.1 41specification, certain endpoints will have additional companion 42descriptors. 43.Pp 44The 45.Sy usb_ep_xdescr_t 46structure, combined with the 47.Xr usb_ep_xdescr_fill 9F 48and 49.Xr usb_pipe_xopen 9F 50are designed to abstract away the need for USB client device drivers to 51need to be updated in the face of these newer endpoints, whose 52information is required for host controller devices to properly program 53the device. 54.Pp 55After looking up endpoint data, through the 56.Xr usb_lookup_ep_data 9F , 57device drivers should call the 58.Xr usb_ep_xdescr_fill 9F 59function. 60After that, the 61.Sy usb_ep_xdescr_t 62structure will be filled in. 63.Sh STRUCTURE MEMBERS 64The 65.Sy usb_ep_xdescr_t 66structure has the following members: 67.Bd -literal -offset indent 68uint_t uex_version; 69usb_ep_xdescr_flags_t uex_flags; 70usb_ep_descr_t uex_ep; 71usb_ep_ss_comp_descr_t uex_ep_ss; 72.Ed 73.Pp 74The 75.Sy uex_version 76member is used to describe the current version of this structure. 77This member will be set to the value passed in by the device driver to 78.Xr usb_ep_xdescr_fil 9F . 79Device drivers should ignore this field and should not modify the value 80placed there or modify it. 81.Pp 82The 83.Sy uex_flags 84member is an enumeration that defines a number of flags. 85Each flag indicates whether or not a given member is present or valid. 86Before accessing any member other than 87.Sy uex_ep , 88the device driver should check the flag here, otherwise its contents may 89be undefined. 90Currently the following flags are defined: 91.Bl -tag -width Sy -offset indent 92.It Sy USB_EP_XFLAGS_SS_COMP 93Indicates that a SuperSpeed endpoint companion descriptor is present and 94has been filled in. 95The member 96.Sy uex_ep_ss 97is valid. 98.El 99.Pp 100The 101.Sy uex_ep 102member contains a traditional USB endpoint descriptor. 103Its contents are defined in 104.Xr usb_ep_descr 9S . 105There is no flag for this member in 106.Sy uex_flags , 107it is always valid. 108.Pp 109The 110.Sy uex_ep_ss 111member contains a USB 3.0 SuperSpeed endpoint companion descriptor as 112defined in 113.Xr usb_ep_ss_comp_descr 9S . 114This member is only valid if the 115.Sy USB_EP_XFLAGS_SS_COMP 116flag is specified in 117.Sy uex_flags . 118.Sh SEE ALSO 119.Xr usb_ep_xdescr_fill 9F , 120.Xr usb_pipe_xopen 9F , 121.Xr usb_ep_descr 9S , 122.Xr usb_ep_ss_comp_descr 9S 123