Merge commit '9276b3991ba20d5a5660887ba81b0bc7bed25a0c'
[unleashed.git] / share / man / man9f / usba_hubdi_bind_root_hub.9f
blobb9106cbb416131f28e988db3c51c750172136811
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 USBA_HCDI_BIND_ROOT_HUB 9F
16 .Os
17 .Sh NAME
18 .Nm usba_hubdi_bind_root_hub ,
19 .Nm usba_hubdi_unbind_root_hub
20 .Nd bind and unbind the root USB hub
21 .Sh SYNOPSIS
22 .In sys/usb/usba/hubdi.h
23 .Ft int
24 .Fo usba_hubdi_bind_root_hub
25 .Fa "dev_info_t *dip"
26 .Fa "uchar_t *hub_descr"
27 .Fa "size_t descr_len"
28 .Fa "usb_dev_descr_t *dev_descr"
29 .Fc
30 .Ft int
31 .Fo usba_hubdi_unbind_root_hub
32 .Fa "dev_info_t *dip"
33 .Fc
34 .Sh INTERFACE LEVEL
35 .Sy Volatile -
36 illumos USB HCD private function
37 .Pp
38 This is a private function that is not part of the stable DDI.
39 It may be removed or changed at any time.
40 .Sh PARAMETERS
41 .Bl -tag -width Fa
42 .It Fa dip
43 Pointer to the device's
44 .Sy dev_info
45 structure.
46 .It Fa hub_descr
47 Pointer to a byte array that contains the standard descriptors for a USB
48 Hub device.
49 .It Fa descr_len
50 The length in bytes of the
51 .Fa hub_descr
52 byte array.
53 .It Fa dev_descr
54 A filled in standard USB device descriptor.
55 .El
56 .Sh DESCRIPTION
57 The
58 .Fn usba_hubdi_bind_root_hub
59 and
60 .Fn usba_hubdi_unbind_root_hub
61 functions are used to bind and unbind the root USB hub that is a part of
62 every HCD driver.
63 See
64 .Xr usba_hcdi 9E
65 for more information on this relationship.
66 .Pp
67 The
68 .Fn usba_hubdi_root_bind_driver
69 is used after calling the
70 .Xr usba_hcdi_register 9F
71 function during a device's
72 .Xr attach 9E
73 entry point.
74 .Pp
75 Because the root hub is generally a virtual hub, the HCD driver is
76 responsible for making it appear to the system as a normal USB hub.
77 .Pp
78 The contents of the
79 .Fa hub_descr
80 should be the standard USB Hub class-specific descriptor.
81 This hub descriptor should match a hub of a similar class of speed.
82 For example, with the xhci controller, a USB 3.x Hub class-specific descriptor
83 is used, where as for the ehci controller, a USB 2.x Hub class-specific
84 descriptor is used.
85 For more information, see the USB 3.1 specification, section 10.15.2
86 .Em Class-specific Descriptors .
87 .Pp
88 Similarly, the contents of the
89 .Fa dev_descr
90 need to be a filled in USB device descriptor that indicates that the
91 root hub corresponds to the appropriate USB generation.
92 For more information on the contents, see
93 .Xr usb_dev_descr 9S
94 and the USB 3.1 specification, section 10.15.1
95 .Em Standard Descriptors for Hub Class .
96 .Pp
97 The
98 .Fn usba_hubdi_unbind_root_hub
99 function is used to detach the root hub associated with the HCD driver.
100 This should be called during a device's
101 .Xr detach 9E
102 routine before calling
103 .Xr usba_hcdi_unregister 9F .
105 If a call to the
106 .Fn usba_hubdi_unbind_root_hub
107 function fails during a device's
108 .Xr detach 9E
109 function, then it should fail the call to
110 .Xr detach 9E .
111 .Sh CONTEXT
113 .Fn usba_hubdi_bind_root_hub
114 function should only be called during a device's
115 .Xr attach 9E
116 entry point.
119 .Fn usba_hubdi_unbind_root_hub
120 function should only be called during a device's
121 .Xr detach 9E entry point.
122 .Sh RETURN VALUES
123 Upon successful completion, the
124 .Fn usba_hubdi_bind_root_hub
126 .Fn usba_hubdi_unbind_root_hub
127 functions return
128 .Sy USB_SUCCESS .
129 Otherwise, they return
130 .Sy USB_FAILURE
131 to indicate that they could not proceed.
132 .Sh SEE ALSO
133 .Xr attach 9E ,
134 .Xr detach 9E ,
135 .Xr usba_hcdi 9E ,
136 .Xr usba_hcdi_register 9F ,
137 .Xr usba_hcdi_unregister 9F ,
138 .Xr usb_dev_Descr 9S