17c478bd9Sstevel@tonic-gate# 27c478bd9Sstevel@tonic-gate# CDDL HEADER START 37c478bd9Sstevel@tonic-gate# 47c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 5*77e51571Sgongtian zhao - Sun Microsystems - Beijing China# Common Development and Distribution License (the "License"). 6*77e51571Sgongtian zhao - Sun Microsystems - Beijing China# You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate# 87c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate# and limitations under the License. 127c478bd9Sstevel@tonic-gate# 137c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate# 197c478bd9Sstevel@tonic-gate# CDDL HEADER END 207c478bd9Sstevel@tonic-gate# 217c478bd9Sstevel@tonic-gate/* 22*77e51571Sgongtian zhao - Sun Microsystems - Beijing China * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate * Use is subject to license terms. 247c478bd9Sstevel@tonic-gate */ 257c478bd9Sstevel@tonic-gate 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate USBA PIPE STATE TRANSITIONS INFORMATION 287c478bd9Sstevel@tonic-gate --------------------------------------- 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate1. Control pipe state transitions:- 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate o Default control pipe (endpoint number 0): 337c478bd9Sstevel@tonic-gate 347c478bd9Sstevel@tonic-gate NOTE:- Queuing of control requests are allowed at USBA level. 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 377c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 387c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 397c478bd9Sstevel@tonic-gate 407c478bd9Sstevel@tonic-gate usb_pipe_ctrl_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE 417c478bd9Sstevel@tonic-gate Outstanding reqs pending queue the requests USB_PIPE_STATE_IDLE 427c478bd9Sstevel@tonic-gate (cb() will send 437c478bd9Sstevel@tonic-gate next reqs to hcd) 447c478bd9Sstevel@tonic-gate 457c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - queue the requests USB_PIPE_STATE_ACTIVE 467c478bd9Sstevel@tonic-gate (cb() will send 477c478bd9Sstevel@tonic-gate next reqs to hcd) 487c478bd9Sstevel@tonic-gate 497c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - queue the requests USB_PIPE_STATE_ERROR 507c478bd9Sstevel@tonic-gate (cb() will send 517c478bd9Sstevel@tonic-gate next reqs to hcd) 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING 547c478bd9Sstevel@tonic-gate 557c478bd9Sstevel@tonic-gate 567c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE - Before doing callback USB_PIPE_STATE_IDLE 577c478bd9Sstevel@tonic-gate (Normal callback) No outstanding request - USB_PIPE_STATE_IDLE 587c478bd9Sstevel@tonic-gate Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE 597c478bd9Sstevel@tonic-gate 607c478bd9Sstevel@tonic-gate 617c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - Don't send any more req USB_PIPE_STATE_ERROR 627c478bd9Sstevel@tonic-gate 637c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - Don't send any more req USB_PIPE_STATE_CLOSING 647c478bd9Sstevel@tonic-gate 657c478bd9Sstevel@tonic-gate 667c478bd9Sstevel@tonic-gate usba_hcdi_cb 677c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 687c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 697c478bd9Sstevel@tonic-gate (Don't remove 707c478bd9Sstevel@tonic-gate outstanding requests) 717c478bd9Sstevel@tonic-gate No outstanding request - USB_PIPE_STATE_IDLE 727c478bd9Sstevel@tonic-gate Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE 737c478bd9Sstevel@tonic-gate 747c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Return failure USB_PIPE_STATE_XXXX 757c478bd9Sstevel@tonic-gate (Not allowed) 767c478bd9Sstevel@tonic-gate 777c478bd9Sstevel@tonic-gate 787c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 797c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 807c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 817c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 827c478bd9Sstevel@tonic-gate 837c478bd9Sstevel@tonic-gate 847c478bd9Sstevel@tonic-gate o Normal control pipe (endpoint number > 0): 857c478bd9Sstevel@tonic-gate 867c478bd9Sstevel@tonic-gate NOTE:- Queuing of control requests are allowed at USBA level. 877c478bd9Sstevel@tonic-gate 887c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 897c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 907c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 917c478bd9Sstevel@tonic-gate 927c478bd9Sstevel@tonic-gate usb_pipe_ctrl_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE 937c478bd9Sstevel@tonic-gate Outstanding reqs pending queue the requests USB_PIPE_STATE_IDLE 947c478bd9Sstevel@tonic-gate (cb() will send 957c478bd9Sstevel@tonic-gate next reqs to hcd) 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - queue the requests USB_PIPE_STATE_ACTIVE 987c478bd9Sstevel@tonic-gate (cb() will send 997c478bd9Sstevel@tonic-gate next reqs to hcd) 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING 1047c478bd9Sstevel@tonic-gate 1057c478bd9Sstevel@tonic-gate 1067c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE - Before doing callback USB_PIPE_STATE_IDLE 1077c478bd9Sstevel@tonic-gate (Normal callback) No outstanding request - USB_PIPE_STATE_IDLE 1087c478bd9Sstevel@tonic-gate Outstanding reqs pending Send next req to hcd USB_PIPE_STATE_ACTIVE 1097c478bd9Sstevel@tonic-gate 1107c478bd9Sstevel@tonic-gate 1117c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - Don't send any more req USB_PIPE_STATE_ERROR 1127c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING 1137c478bd9Sstevel@tonic-gate 1147c478bd9Sstevel@tonic-gate 1157c478bd9Sstevel@tonic-gate usba_hcdi_cb 1167c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 1177c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 1187c478bd9Sstevel@tonic-gate (Remove all outstanding 1197c478bd9Sstevel@tonic-gate requests) 1207c478bd9Sstevel@tonic-gate 1217c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 1227c478bd9Sstevel@tonic-gate requests 1237c478bd9Sstevel@tonic-gate 1247c478bd9Sstevel@tonic-gate 1257c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 1267c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 1277c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 1287c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 1297c478bd9Sstevel@tonic-gate 1307c478bd9Sstevel@tonic-gate2. Bulk pipe state transitions (endpoint number > 1, both IN and OUT):- 1317c478bd9Sstevel@tonic-gate 1327c478bd9Sstevel@tonic-gate NOTE:- Queuing of bulk requests are allowed at USBA level. 1337c478bd9Sstevel@tonic-gate 1347c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 1357c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 1367c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 1377c478bd9Sstevel@tonic-gate 1387c478bd9Sstevel@tonic-gate usb_pipe_bulk_xfer USB_PIPE_STATE_IDLE No outstanding request send req to hcd USB_PIPE_STATE_ACTIVE 1397c478bd9Sstevel@tonic-gate 1407c478bd9Sstevel@tonic-gate 1417c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE 1427c478bd9Sstevel@tonic-gate 1437c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR 1447c478bd9Sstevel@tonic-gate 1457c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING 1467c478bd9Sstevel@tonic-gate 1477c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE 1487c478bd9Sstevel@tonic-gate else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE 1497c478bd9Sstevel@tonic-gate 1507c478bd9Sstevel@tonic-gate 1517c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR 1527c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING 1537c478bd9Sstevel@tonic-gate 1547c478bd9Sstevel@tonic-gate 1557c478bd9Sstevel@tonic-gate usba_hcdi_cb 1567c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 1577c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 1587c478bd9Sstevel@tonic-gate (Remove all outstanding 1597c478bd9Sstevel@tonic-gate requests) 1607c478bd9Sstevel@tonic-gate 1617c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 1627c478bd9Sstevel@tonic-gate requests 1637c478bd9Sstevel@tonic-gate 1647c478bd9Sstevel@tonic-gate 1657c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 1667c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 1677c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 1687c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 1697c478bd9Sstevel@tonic-gate 1707c478bd9Sstevel@tonic-gate3. Interrupt pipe state transitions (endpoint number > 1, both IN and OUT) :- 1717c478bd9Sstevel@tonic-gate 1727c478bd9Sstevel@tonic-gate Interrupt IN: 1737c478bd9Sstevel@tonic-gate 1747c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 1757c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 1767c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 1777c478bd9Sstevel@tonic-gate 1787c478bd9Sstevel@tonic-gate usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE 1797c478bd9Sstevel@tonic-gate 1807c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - return failure USB_PIPE_STATE_ACTIVE 1817c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 1827c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING 1837c478bd9Sstevel@tonic-gate 1847c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE One time xfer Before doing callback USB_PIPE_STATE_IDLE 1857c478bd9Sstevel@tonic-gate USB_CR_STOPPED_POLLING 1867c478bd9Sstevel@tonic-gate USB_CR_PIPE_RESET 1877c478bd9Sstevel@tonic-gate 1887c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR 1897c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING 1907c478bd9Sstevel@tonic-gate 1917c478bd9Sstevel@tonic-gate 1927c478bd9Sstevel@tonic-gate usba_hcdi_cb 1937c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 1947c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 1957c478bd9Sstevel@tonic-gate (Remove all outstanding 1967c478bd9Sstevel@tonic-gate requests) 1977c478bd9Sstevel@tonic-gate 1987c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 1997c478bd9Sstevel@tonic-gate requests 2007c478bd9Sstevel@tonic-gate 2017c478bd9Sstevel@tonic-gate 2027c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 2037c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 2047c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 2057c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 2067c478bd9Sstevel@tonic-gate 2077c478bd9Sstevel@tonic-gate Interrupt OUT: 2087c478bd9Sstevel@tonic-gate 2097c478bd9Sstevel@tonic-gate NOTE: Send all interrupt OUT requests to HCD and no queuing at USBA level. 2107c478bd9Sstevel@tonic-gate 2117c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 2127c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 2137c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 2147c478bd9Sstevel@tonic-gate 2157c478bd9Sstevel@tonic-gate usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE 2167c478bd9Sstevel@tonic-gate 2177c478bd9Sstevel@tonic-gate 2187c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE 2197c478bd9Sstevel@tonic-gate 2207c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR 2217c478bd9Sstevel@tonic-gate 2227c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING 2237c478bd9Sstevel@tonic-gate 2247c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE 2257c478bd9Sstevel@tonic-gate else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE 2267c478bd9Sstevel@tonic-gate 2277c478bd9Sstevel@tonic-gate 2287c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR 2297c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING 2307c478bd9Sstevel@tonic-gate 2317c478bd9Sstevel@tonic-gate 2327c478bd9Sstevel@tonic-gate usba_hcdi_cb 2337c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 2347c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 2357c478bd9Sstevel@tonic-gate (Remove all outstanding 2367c478bd9Sstevel@tonic-gate requests) 2377c478bd9Sstevel@tonic-gate 2387c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 2397c478bd9Sstevel@tonic-gate requests 2407c478bd9Sstevel@tonic-gate 2417c478bd9Sstevel@tonic-gate 2427c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 2437c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 2447c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 2457c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 2467c478bd9Sstevel@tonic-gate 2477c478bd9Sstevel@tonic-gate4. Isochronous pipe state transitions (endpoint number > 1, both IN and OUT):- 2487c478bd9Sstevel@tonic-gate 2497c478bd9Sstevel@tonic-gate Isochronous IN: 2507c478bd9Sstevel@tonic-gate 2517c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 2527c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 2537c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 2547c478bd9Sstevel@tonic-gate 2557c478bd9Sstevel@tonic-gate usb_pipe_isoch_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE 2567c478bd9Sstevel@tonic-gate 2577c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - return failure USB_PIPE_STATE_ACTIVE 2587c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 2597c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING 2607c478bd9Sstevel@tonic-gate 2617c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE One time xfer Before doing callback USB_PIPE_STATE_IDLE 2627c478bd9Sstevel@tonic-gate USB_CR_STOPPED_POLLING 2637c478bd9Sstevel@tonic-gate USB_CR_PIPE_RESET 2647c478bd9Sstevel@tonic-gate 2657c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR 2667c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING 2677c478bd9Sstevel@tonic-gate 2687c478bd9Sstevel@tonic-gate 2697c478bd9Sstevel@tonic-gate usba_hcdi_cb 2707c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 2717c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 2727c478bd9Sstevel@tonic-gate (Remove all outstanding 2737c478bd9Sstevel@tonic-gate requests) 2747c478bd9Sstevel@tonic-gate 2757c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 2767c478bd9Sstevel@tonic-gate requests 2777c478bd9Sstevel@tonic-gate 2787c478bd9Sstevel@tonic-gate 2797c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 2807c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 2817c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 2827c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 2837c478bd9Sstevel@tonic-gate 2847c478bd9Sstevel@tonic-gate Isochronous OUT:- 2857c478bd9Sstevel@tonic-gate 2867c478bd9Sstevel@tonic-gate NOTE: Send all isochronous OUT requests to HCD and no queuing at USBA level. 2877c478bd9Sstevel@tonic-gate 2887c478bd9Sstevel@tonic-gate Calls Current state additional condition Action Next state 2897c478bd9Sstevel@tonic-gate ----- ------------- -------------------- ------ ----------- 2907c478bd9Sstevel@tonic-gate usb_pipe_open USB_PIPE_STATE_CLOSED - Initialize pipe USB_PIPE_STATE_IDLE 2917c478bd9Sstevel@tonic-gate 2927c478bd9Sstevel@tonic-gate usb_pipe_intr_xfer USB_PIPE_STATE_IDLE - send req to hcd USB_PIPE_STATE_ACTIVE 2937c478bd9Sstevel@tonic-gate 2947c478bd9Sstevel@tonic-gate 2957c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE - send req to hcd USB_PIPE_STATE_ACTIVE 2967c478bd9Sstevel@tonic-gate 2977c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - return failure USB_PIPE_STATE_ERROR 2987c478bd9Sstevel@tonic-gate 2997c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - return failure USB_PIPE_STATE_CLOSING 3007c478bd9Sstevel@tonic-gate 3017c478bd9Sstevel@tonic-gate usba_hcdi_cb USB_PIPE_STATE_ACTIVE if no requests are pending Before doing callback USB_PIPE_STATE_IDLE 3027c478bd9Sstevel@tonic-gate else outstanding reqs pending Before doing callback USB_PIPE_STATE_ACTIVE 3037c478bd9Sstevel@tonic-gate 3047c478bd9Sstevel@tonic-gate 3057c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR - - USB_PIPE_STATE_ERROR 3067c478bd9Sstevel@tonic-gate USB_PIPE_STATE_CLOSING - - USB_PIPE_STATE_CLOSING 3077c478bd9Sstevel@tonic-gate 3087c478bd9Sstevel@tonic-gate 3097c478bd9Sstevel@tonic-gate usba_hcdi_cb 3107c478bd9Sstevel@tonic-gate (exceptional callback) USB_PIPE_STATE_ACTIVE - Before auto clear USB_PIPE_STATE_ERROR 3117c478bd9Sstevel@tonic-gate - On auto clear USB_PIPE_STATE_IDLE 3127c478bd9Sstevel@tonic-gate (Remove all outstanding 3137c478bd9Sstevel@tonic-gate requests) 3147c478bd9Sstevel@tonic-gate 3157c478bd9Sstevel@tonic-gate usb_pipe_reset USB_PIPE_STATE_XXXX - Remove all outstanding USB_PIPE_STATE_IDLE 3167c478bd9Sstevel@tonic-gate requests 3177c478bd9Sstevel@tonic-gate 3187c478bd9Sstevel@tonic-gate 3197c478bd9Sstevel@tonic-gate usb_pipe_close USB_PIPE_STATE_IDLE - - USB_PIPE_STATE_CLOSING 3207c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ACTIVE 3217c478bd9Sstevel@tonic-gate USB_PIPE_STATE_ERROR 3227c478bd9Sstevel@tonic-gate Once pipe is closed - USB_PIPE_STATE_CLOSED 3237c478bd9Sstevel@tonic-gate 324