xref: /illumos-gate/usr/src/man/man9s/usb_ep_xdescr.9s (revision 66582b606a8194f7f3ba5b3a3a6dca5b0d346361)
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_fill 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