xref: /onnv-gate/usr/src/uts/common/io/usb/usba/README (revision 7425:e4dbffd35ebc)
10Sstevel@tonic-gate#
20Sstevel@tonic-gate# CDDL HEADER START
30Sstevel@tonic-gate#
40Sstevel@tonic-gate# The contents of this file are subject to the terms of the
5*7425SGongtian.Zhao@Sun.COM# Common Development and Distribution License (the "License").
6*7425SGongtian.Zhao@Sun.COM# You may not use this file except in compliance with the License.
70Sstevel@tonic-gate#
80Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate# See the License for the specific language governing permissions
110Sstevel@tonic-gate# and limitations under the License.
120Sstevel@tonic-gate#
130Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate#
190Sstevel@tonic-gate# CDDL HEADER END
200Sstevel@tonic-gate#
210Sstevel@tonic-gate/*
22*7425SGongtian.Zhao@Sun.COM * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
230Sstevel@tonic-gate * Use is subject to license terms.
240Sstevel@tonic-gate */
250Sstevel@tonic-gate
260Sstevel@tonic-gate
270Sstevel@tonic-gate				USBA PIPE STATE TRANSITIONS INFORMATION
280Sstevel@tonic-gate				---------------------------------------
290Sstevel@tonic-gate
300Sstevel@tonic-gate1. Control pipe state transitions:-
310Sstevel@tonic-gate
320Sstevel@tonic-gate   o Default control pipe (endpoint number 0):
330Sstevel@tonic-gate
340Sstevel@tonic-gate     NOTE:- Queuing of control requests are allowed at USBA level.
350Sstevel@tonic-gate
360Sstevel@tonic-gate     Calls			Current state		additional condition		Action			Next state
370Sstevel@tonic-gate     -----			-------------		--------------------		------			-----------
380Sstevel@tonic-gate     usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
390Sstevel@tonic-gate
400Sstevel@tonic-gate     usb_pipe_ctrl_xfer		USB_PIPE_STATE_IDLE	No outstanding request		send req to hcd		USB_PIPE_STATE_ACTIVE
410Sstevel@tonic-gate   							Outstanding reqs pending	queue the requests	USB_PIPE_STATE_IDLE
420Sstevel@tonic-gate 											(cb() will send
430Sstevel@tonic-gate 											next reqs to hcd)
440Sstevel@tonic-gate
450Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				queue the requests	USB_PIPE_STATE_ACTIVE
460Sstevel@tonic-gate 											(cb() will send
470Sstevel@tonic-gate 											next reqs to hcd)
480Sstevel@tonic-gate
490Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				queue the requests	USB_PIPE_STATE_ERROR
500Sstevel@tonic-gate 											(cb() will send
510Sstevel@tonic-gate 											next reqs to hcd)
520Sstevel@tonic-gate
530Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				return failure		USB_PIPE_STATE_CLOSING
540Sstevel@tonic-gate
550Sstevel@tonic-gate
560Sstevel@tonic-gate     usba_hcdi_cb		USB_PIPE_STATE_ACTIVE	-				Before doing callback	USB_PIPE_STATE_IDLE
570Sstevel@tonic-gate     (Normal callback)					No outstanding request		-			USB_PIPE_STATE_IDLE
580Sstevel@tonic-gate  							Outstanding reqs pending	Send next req to hcd	USB_PIPE_STATE_ACTIVE
590Sstevel@tonic-gate
600Sstevel@tonic-gate
610Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				Don't send any more req	USB_PIPE_STATE_ERROR
620Sstevel@tonic-gate
630Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				Don't send any more req	USB_PIPE_STATE_CLOSING
640Sstevel@tonic-gate
650Sstevel@tonic-gate
660Sstevel@tonic-gate     usba_hcdi_cb
670Sstevel@tonic-gate     (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
680Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
690Sstevel@tonic-gate											(Don't remove
700Sstevel@tonic-gate											outstanding requests)
710Sstevel@tonic-gate							No outstanding request		-			USB_PIPE_STATE_IDLE
720Sstevel@tonic-gate							Outstanding reqs pending	Send next req to hcd	USB_PIPE_STATE_ACTIVE
730Sstevel@tonic-gate
740Sstevel@tonic-gate     usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Return failure		USB_PIPE_STATE_XXXX
750Sstevel@tonic-gate  											(Not allowed)
760Sstevel@tonic-gate
770Sstevel@tonic-gate
780Sstevel@tonic-gate     usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
790Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
800Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
810Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
820Sstevel@tonic-gate
830Sstevel@tonic-gate
840Sstevel@tonic-gate   o Normal control pipe (endpoint number > 0):
850Sstevel@tonic-gate
860Sstevel@tonic-gate     NOTE:- Queuing of control requests are allowed at USBA level.
870Sstevel@tonic-gate
880Sstevel@tonic-gate     Calls			Current state		additional condition		Action			Next state
890Sstevel@tonic-gate     -----			-------------		--------------------		------			-----------
900Sstevel@tonic-gate     usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
910Sstevel@tonic-gate
920Sstevel@tonic-gate     usb_pipe_ctrl_xfer		USB_PIPE_STATE_IDLE	No outstanding request		send req to hcd		USB_PIPE_STATE_ACTIVE
930Sstevel@tonic-gate   							Outstanding reqs pending	queue the requests	USB_PIPE_STATE_IDLE
940Sstevel@tonic-gate 											(cb() will send
950Sstevel@tonic-gate 											next reqs to hcd)
960Sstevel@tonic-gate
970Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				queue the requests	USB_PIPE_STATE_ACTIVE
980Sstevel@tonic-gate 											(cb() will send
990Sstevel@tonic-gate 											next reqs to hcd)
1000Sstevel@tonic-gate
1010Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				return failure		USB_PIPE_STATE_ERROR
1020Sstevel@tonic-gate
1030Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				return failure		USB_PIPE_STATE_CLOSING
1040Sstevel@tonic-gate
1050Sstevel@tonic-gate
1060Sstevel@tonic-gate     usba_hcdi_cb		USB_PIPE_STATE_ACTIVE	-				Before doing callback	USB_PIPE_STATE_IDLE
1070Sstevel@tonic-gate     (Normal callback)					No outstanding request		-			USB_PIPE_STATE_IDLE
1080Sstevel@tonic-gate  							Outstanding reqs pending	Send next req to hcd	USB_PIPE_STATE_ACTIVE
1090Sstevel@tonic-gate
1100Sstevel@tonic-gate
1110Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				Don't send any more req	USB_PIPE_STATE_ERROR
1120Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING
1130Sstevel@tonic-gate
1140Sstevel@tonic-gate
1150Sstevel@tonic-gate     usba_hcdi_cb
1160Sstevel@tonic-gate     (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
1170Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
1180Sstevel@tonic-gate											(Remove all outstanding
1190Sstevel@tonic-gate											requests)
1200Sstevel@tonic-gate
1210Sstevel@tonic-gate     usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
1220Sstevel@tonic-gate  											requests
1230Sstevel@tonic-gate
1240Sstevel@tonic-gate
1250Sstevel@tonic-gate     usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
1260Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
1270Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
1280Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
1290Sstevel@tonic-gate
1300Sstevel@tonic-gate2. Bulk pipe state transitions (endpoint number > 1, both IN and OUT):-
1310Sstevel@tonic-gate
1320Sstevel@tonic-gate   NOTE:- Queuing of bulk requests are allowed at USBA level.
1330Sstevel@tonic-gate
1340Sstevel@tonic-gate   Calls			Current state		additional condition		Action			Next state
1350Sstevel@tonic-gate   -----			-------------		--------------------		------			-----------
1360Sstevel@tonic-gate   usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
1370Sstevel@tonic-gate
1380Sstevel@tonic-gate   usb_pipe_bulk_xfer		USB_PIPE_STATE_IDLE	No outstanding request		send req to hcd		USB_PIPE_STATE_ACTIVE
1390Sstevel@tonic-gate
1400Sstevel@tonic-gate
1410Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
1420Sstevel@tonic-gate
1430Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				return failure		USB_PIPE_STATE_ERROR
1440Sstevel@tonic-gate
1450Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				return failure		USB_PIPE_STATE_CLOSING
1460Sstevel@tonic-gate
1470Sstevel@tonic-gate   usba_hcdi_cb			USB_PIPE_STATE_ACTIVE	if no requests are pending	Before doing callback	USB_PIPE_STATE_IDLE
1480Sstevel@tonic-gate  							else outstanding reqs pending	Before doing callback	USB_PIPE_STATE_ACTIVE
1490Sstevel@tonic-gate
1500Sstevel@tonic-gate
1510Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				-			USB_PIPE_STATE_ERROR
1520Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				-			USB_PIPE_STATE_CLOSING
1530Sstevel@tonic-gate
1540Sstevel@tonic-gate
1550Sstevel@tonic-gate   usba_hcdi_cb
1560Sstevel@tonic-gate   (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
1570Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
1580Sstevel@tonic-gate											(Remove all outstanding
1590Sstevel@tonic-gate											requests)
1600Sstevel@tonic-gate
1610Sstevel@tonic-gate   usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
1620Sstevel@tonic-gate  											requests
1630Sstevel@tonic-gate
1640Sstevel@tonic-gate
1650Sstevel@tonic-gate   usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
1660Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
1670Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
1680Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
1690Sstevel@tonic-gate
1700Sstevel@tonic-gate3. Interrupt pipe state transitions (endpoint number > 1, both IN and OUT) :-
1710Sstevel@tonic-gate
1720Sstevel@tonic-gate   Interrupt IN:
1730Sstevel@tonic-gate
1740Sstevel@tonic-gate   Calls			Current state		additional condition		Action			Next state
1750Sstevel@tonic-gate   -----			-------------		--------------------		------			-----------
1760Sstevel@tonic-gate   usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
1770Sstevel@tonic-gate
1780Sstevel@tonic-gate   usb_pipe_intr_xfer		USB_PIPE_STATE_IDLE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
1790Sstevel@tonic-gate
1800Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				return failure		USB_PIPE_STATE_ACTIVE
1810Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR
1820Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING
1830Sstevel@tonic-gate
1840Sstevel@tonic-gate   usba_hcdi_cb			USB_PIPE_STATE_ACTIVE	One time xfer			Before doing callback	USB_PIPE_STATE_IDLE
1850Sstevel@tonic-gate							USB_CR_STOPPED_POLLING
1860Sstevel@tonic-gate							USB_CR_PIPE_RESET
1870Sstevel@tonic-gate
1880Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				-			USB_PIPE_STATE_ERROR
1890Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				-			USB_PIPE_STATE_CLOSING
1900Sstevel@tonic-gate
1910Sstevel@tonic-gate
1920Sstevel@tonic-gate   usba_hcdi_cb
1930Sstevel@tonic-gate   (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
1940Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
1950Sstevel@tonic-gate											(Remove all outstanding
1960Sstevel@tonic-gate											requests)
1970Sstevel@tonic-gate
1980Sstevel@tonic-gate   usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
1990Sstevel@tonic-gate  											requests
2000Sstevel@tonic-gate
2010Sstevel@tonic-gate
2020Sstevel@tonic-gate   usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
2030Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
2040Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
2050Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
2060Sstevel@tonic-gate
2070Sstevel@tonic-gate   Interrupt OUT:
2080Sstevel@tonic-gate
2090Sstevel@tonic-gate   NOTE: Send all interrupt OUT requests to HCD and no queuing at USBA level.
2100Sstevel@tonic-gate
2110Sstevel@tonic-gate   Calls			Current state		additional condition		Action			Next state
2120Sstevel@tonic-gate   -----			-------------		--------------------		------			-----------
2130Sstevel@tonic-gate   usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
2140Sstevel@tonic-gate
2150Sstevel@tonic-gate   usb_pipe_intr_xfer		USB_PIPE_STATE_IDLE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
2160Sstevel@tonic-gate
2170Sstevel@tonic-gate
2180Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
2190Sstevel@tonic-gate
2200Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				return failure		USB_PIPE_STATE_ERROR
2210Sstevel@tonic-gate
2220Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				return failure		USB_PIPE_STATE_CLOSING
2230Sstevel@tonic-gate
2240Sstevel@tonic-gate   usba_hcdi_cb			USB_PIPE_STATE_ACTIVE	if no requests are pending	Before doing callback	USB_PIPE_STATE_IDLE
2250Sstevel@tonic-gate  							else outstanding reqs pending	Before doing callback	USB_PIPE_STATE_ACTIVE
2260Sstevel@tonic-gate
2270Sstevel@tonic-gate
2280Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				-			USB_PIPE_STATE_ERROR
2290Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				-			USB_PIPE_STATE_CLOSING
2300Sstevel@tonic-gate
2310Sstevel@tonic-gate
2320Sstevel@tonic-gate   usba_hcdi_cb
2330Sstevel@tonic-gate   (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
2340Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
2350Sstevel@tonic-gate											(Remove all outstanding
2360Sstevel@tonic-gate											requests)
2370Sstevel@tonic-gate
2380Sstevel@tonic-gate   usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
2390Sstevel@tonic-gate  											requests
2400Sstevel@tonic-gate
2410Sstevel@tonic-gate
2420Sstevel@tonic-gate   usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
2430Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
2440Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
2450Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
2460Sstevel@tonic-gate
2470Sstevel@tonic-gate4. Isochronous pipe state transitions (endpoint number > 1, both IN and OUT):-
2480Sstevel@tonic-gate
2490Sstevel@tonic-gate   Isochronous IN:
2500Sstevel@tonic-gate
2510Sstevel@tonic-gate   Calls			Current state		additional condition		Action			Next state
2520Sstevel@tonic-gate   -----			-------------		--------------------		------			-----------
2530Sstevel@tonic-gate   usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
2540Sstevel@tonic-gate
2550Sstevel@tonic-gate   usb_pipe_isoch_xfer		USB_PIPE_STATE_IDLE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
2560Sstevel@tonic-gate
2570Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				return failure		USB_PIPE_STATE_ACTIVE
2580Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR
2590Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING
2600Sstevel@tonic-gate
2610Sstevel@tonic-gate   usba_hcdi_cb			USB_PIPE_STATE_ACTIVE	One time xfer			Before doing callback	USB_PIPE_STATE_IDLE
2620Sstevel@tonic-gate							USB_CR_STOPPED_POLLING
2630Sstevel@tonic-gate							USB_CR_PIPE_RESET
2640Sstevel@tonic-gate
2650Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				-			USB_PIPE_STATE_ERROR
2660Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				-			USB_PIPE_STATE_CLOSING
2670Sstevel@tonic-gate
2680Sstevel@tonic-gate
2690Sstevel@tonic-gate   usba_hcdi_cb
2700Sstevel@tonic-gate   (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
2710Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
2720Sstevel@tonic-gate											(Remove all outstanding
2730Sstevel@tonic-gate											requests)
2740Sstevel@tonic-gate
2750Sstevel@tonic-gate   usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
2760Sstevel@tonic-gate  											requests
2770Sstevel@tonic-gate
2780Sstevel@tonic-gate
2790Sstevel@tonic-gate   usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
2800Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
2810Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
2820Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
2830Sstevel@tonic-gate
2840Sstevel@tonic-gate   Isochronous OUT:-
2850Sstevel@tonic-gate
2860Sstevel@tonic-gate   NOTE: Send all isochronous OUT requests to HCD and no queuing at USBA level.
2870Sstevel@tonic-gate
2880Sstevel@tonic-gate   Calls			Current state		additional condition		Action			Next state
2890Sstevel@tonic-gate   -----			-------------		--------------------		------			-----------
2900Sstevel@tonic-gate   usb_pipe_open		USB_PIPE_STATE_CLOSED	-				Initialize pipe		USB_PIPE_STATE_IDLE
2910Sstevel@tonic-gate
2920Sstevel@tonic-gate   usb_pipe_intr_xfer		USB_PIPE_STATE_IDLE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
2930Sstevel@tonic-gate
2940Sstevel@tonic-gate
2950Sstevel@tonic-gate 				USB_PIPE_STATE_ACTIVE	-				send req to hcd		USB_PIPE_STATE_ACTIVE
2960Sstevel@tonic-gate
2970Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				return failure		USB_PIPE_STATE_ERROR
2980Sstevel@tonic-gate
2990Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				return failure		USB_PIPE_STATE_CLOSING
3000Sstevel@tonic-gate
3010Sstevel@tonic-gate   usba_hcdi_cb			USB_PIPE_STATE_ACTIVE	if no requests are pending	Before doing callback	USB_PIPE_STATE_IDLE
3020Sstevel@tonic-gate  							else outstanding reqs pending	Before doing callback	USB_PIPE_STATE_ACTIVE
3030Sstevel@tonic-gate
3040Sstevel@tonic-gate
3050Sstevel@tonic-gate 				USB_PIPE_STATE_ERROR	-				-			USB_PIPE_STATE_ERROR
3060Sstevel@tonic-gate 				USB_PIPE_STATE_CLOSING	-				-			USB_PIPE_STATE_CLOSING
3070Sstevel@tonic-gate
3080Sstevel@tonic-gate
3090Sstevel@tonic-gate   usba_hcdi_cb
3100Sstevel@tonic-gate   (exceptional callback)	USB_PIPE_STATE_ACTIVE	-				Before auto clear	USB_PIPE_STATE_ERROR
3110Sstevel@tonic-gate							-				On auto clear		USB_PIPE_STATE_IDLE
3120Sstevel@tonic-gate											(Remove all outstanding
3130Sstevel@tonic-gate											requests)
3140Sstevel@tonic-gate
3150Sstevel@tonic-gate   usb_pipe_reset		USB_PIPE_STATE_XXXX	-				Remove all outstanding	USB_PIPE_STATE_IDLE
3160Sstevel@tonic-gate  											requests
3170Sstevel@tonic-gate
3180Sstevel@tonic-gate
3190Sstevel@tonic-gate   usb_pipe_close		USB_PIPE_STATE_IDLE	-				-			USB_PIPE_STATE_CLOSING
3200Sstevel@tonic-gate				USB_PIPE_STATE_ACTIVE
3210Sstevel@tonic-gate				USB_PIPE_STATE_ERROR
3220Sstevel@tonic-gate							Once pipe is closed		-			USB_PIPE_STATE_CLOSED
3230Sstevel@tonic-gate
324