70 different path than normal.
71
72 Pipe open specifics
73 A given endpoint on a device can only be opened once. If there's a
74 request to open an already open endpoint, then the request to open the
75 pipe should be failed.
76
77 By the time the call to open a pipe returns, the driver should expect
78 that any of the pipe transfer or reset entry points will be called on the
79 pipe.
80
81 A driver can establish private data on an endpoint. During pipe open it
82 may set the p_hcd_private member to any value. Generally this points to
83 an allocated structure that contains data specific to the host
84 controller. This value will remain on the pipe handle. It is the
85 responsibility of the driver to clear the data when the pipe is closed.
86
87 Pipe close specifics
88 When a pipe is closed, the driver must clean up all of the resources that
89 it allocated when opening the pipe. For non-periodic transfers, the host
90 controller driver may assueme that there are no outstanding transfers
91 that need to be cleaned up. However, the same is not true for periodic
92 pipes.
93
94 For pipes that have outstanding periodic transfers, the host controller
95 driver needs to clean them up and quiesce them as though a call to either
96 usba_hcdi_pipe_stop_intr_polling(9E) or
97 usba_hcdi_pipe_stop_isoc_polling(9E) had been called.
98
99 Just as with opening the pipe, the driver should pay attention to the
100 address of the USB device, as it may be the root hub, which may be a
101 synthetic pipe.
102
103 When a call to usba_hcdi_pipe_close() completes, the device should be in
104 a state that the pipe can be opened again.
105
106 RETURN VALUES
107 Upon successful completion, the usba_hcdi_pipe_open() and
108 uba_hcdi_pipe_close() functions should return USB_SUCCESS. Otherwise, it
109 should return the appropriate USB error. If uncertain, use USB_FAILURE.
110
111 SEE ALSO
112 usba_hcdi(9E), usba_hcdi_pipe_stop_intr_polling(9E),
113 usba_hcdi_pipe_stop_isoc_polling(9E), usb_ep_descr(9S),
114 usb_ep_xdescr(9S), usba_pipe_handle_data(9S)
115
116 illumos November 26, 2017 illumos
|
70 different path than normal.
71
72 Pipe open specifics
73 A given endpoint on a device can only be opened once. If there's a
74 request to open an already open endpoint, then the request to open the
75 pipe should be failed.
76
77 By the time the call to open a pipe returns, the driver should expect
78 that any of the pipe transfer or reset entry points will be called on the
79 pipe.
80
81 A driver can establish private data on an endpoint. During pipe open it
82 may set the p_hcd_private member to any value. Generally this points to
83 an allocated structure that contains data specific to the host
84 controller. This value will remain on the pipe handle. It is the
85 responsibility of the driver to clear the data when the pipe is closed.
86
87 Pipe close specifics
88 When a pipe is closed, the driver must clean up all of the resources that
89 it allocated when opening the pipe. For non-periodic transfers, the host
90 controller driver may assume that there are no outstanding transfers that
91 need to be cleaned up. However, the same is not true for periodic pipes.
92
93 For pipes that have outstanding periodic transfers, the host controller
94 driver needs to clean them up and quiesce them as though a call to either
95 usba_hcdi_pipe_stop_intr_polling(9E) or
96 usba_hcdi_pipe_stop_isoc_polling(9E) had been called.
97
98 Just as with opening the pipe, the driver should pay attention to the
99 address of the USB device, as it may be the root hub, which may be a
100 synthetic pipe.
101
102 When a call to usba_hcdi_pipe_close() completes, the device should be in
103 a state that the pipe can be opened again.
104
105 RETURN VALUES
106 Upon successful completion, the usba_hcdi_pipe_open() and
107 uba_hcdi_pipe_close() functions should return USB_SUCCESS. Otherwise, it
108 should return the appropriate USB error. If uncertain, use USB_FAILURE.
109
110 SEE ALSO
111 usba_hcdi(9E), usba_hcdi_pipe_stop_intr_polling(9E),
112 usba_hcdi_pipe_stop_isoc_polling(9E), usb_ep_descr(9S),
113 usb_ep_xdescr(9S), usba_pipe_handle_data(9S)
114
115 illumos February 15, 2020 illumos
|