Name Date Size

.. 2016-08-15 16:19:42 12

genconsole.c 2008-08-28 04:35:46 10.8 KiB

hcdi.c 2013-02-09 22:08:03 27.4 KiB

hubdi.c 2015-04-13 04:12:39 229.6 KiB

parser.c 2015-04-13 04:12:39 13.2 KiB

README 2008-08-28 04:35:46 11.7 KiB

usba.c 2016-08-15 16:19:42 81.8 KiB

usba10_calls.c 2008-08-28 04:35:46 12.8 KiB

usba_devdb.c 2008-09-18 21:50:09 15.1 KiB

usba_ugen.c 2015-10-16 20:59:14 118.6 KiB

usbai.c 2010-07-14 07:55:12 29.7 KiB

usbai_pipe_mgmt.c 2015-04-13 04:12:39 44.1 KiB

usbai_register.c 2015-04-13 04:12:39 56.8 KiB

usbai_req.c 2008-09-05 04:44:48 65.5 KiB

usbai_util.c 2009-03-02 02:43:36 60.3 KiB

README

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
USBA PIPE STATE TRANSITIONS INFORMATION
---------------------------------------
1. Control pipe state transitions:-
o Default control pipe (endpoint number 0):
NOTE:- Queuing of control requests are allowed at USBA level.
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_ctrl_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE
Outstanding reqs pending queue the requests USB_PIPE_STATE_IDLE
(cb() will send
next reqs to hcd)
USB_PIPE_STATE_ACTIVE - queue the requests USB_PIPE_STATE_ACTIVE
(cb() will send
next reqs to hcd)
USB_PIPE_STATE_ERROR - queue the requests USB_PIPE_STATE_ERROR
(cb() will send
next reqs to hcd)
USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE - Before doing callback USB_PIPE_STATE_IDLE
(Normal callback) No outstanding request - USB_PIPE_STATE_IDLE
Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - Don't send any more req USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - Don't send any more req USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Don't remove
outstanding requests)
No outstanding request - USB_PIPE_STATE_IDLE
Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE
usb_pipe_reset USB_PIPE_STATE_XXXX - Return failure USB_PIPE_STATE_XXXX
(Not allowed)
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
o Normal control pipe (endpoint number > 0):
NOTE:- Queuing of control requests are allowed at USBA level.
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_ctrl_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE
Outstanding reqs pending queue the requests USB_PIPE_STATE_IDLE
(cb() will send
next reqs to hcd)
USB_PIPE_STATE_ACTIVE - queue the requests USB_PIPE_STATE_ACTIVE
(cb() will send
next reqs to hcd)
USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE - Before doing callback USB_PIPE_STATE_IDLE
(Normal callback) No outstanding request - USB_PIPE_STATE_IDLE
Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - Don't send any more req USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
2. Bulk pipe state transitions (endpoint number > 1, both IN and OUT):-
NOTE:- Queuing of bulk requests are allowed at USBA level.
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_bulk_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE
else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
3. Interrupt pipe state transitions (endpoint number > 1, both IN and OUT) :-
Interrupt IN:
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ACTIVE - return failure USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE One time xfer Before doing callback USB_PIPE_STATE_IDLE
USB_CR_STOPPED_POLLING
USB_CR_PIPE_RESET
USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
Interrupt OUT:
NOTE: Send all interrupt OUT requests to HCD and no queuing at USBA level.
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE
else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
4. Isochronous pipe state transitions (endpoint number > 1, both IN and OUT):-
Isochronous IN:
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_isoch_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ACTIVE - return failure USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE One time xfer Before doing callback USB_PIPE_STATE_IDLE
USB_CR_STOPPED_POLLING
USB_CR_PIPE_RESET
USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED
Isochronous OUT:-
NOTE: Send all isochronous OUT requests to HCD and no queuing at USBA level.
Calls Current state additional condition Action Next state
----- ------------- -------------------- ------ -----------
usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE
usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING
usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE
else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR
USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING
usba_hcdi_cb
(exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR
- On auto clear USB_PIPE_STATE_IDLE
(Remove all outstanding
requests)
usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE
requests
usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING
USB_PIPE_STATE_ACTIVE
USB_PIPE_STATE_ERROR
Once pipe is closed - USB_PIPE_STATE_CLOSED