throbber

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`After completion of the reset sequence, a hub is in the following state:
`
`• Hub Controller default address is 0.
`
`• Hub status change bits are set to zero.
`
`• Hub Repeater is in the WFSOPFU state.
`
`•
`
`Transmitter is in the Inactive state.
`
`• Downstream facing ports are in the Not Configured state and SEO driven on all downstream facing
`ports.
`
`11.11 Hub Port Power Control
`Self-powered hubs may have power switches that control delivery of power downstream facing ports but it
`is not required. Bus-powered hubs are required to have power switches. A hub with power switches can
`switch power to all ports as a group/gang, to each port individually, or have an arbitrary number of gangs of
`one or more ports.
`
`A hub indicates whether or not it supports power switching by the setting of the Logical Power Switching
`Mode field in wHubCharacteristics. If a hub supports per-port power switching, then the power to a port is
`turned on when a SetPortFeature(PORT _POWER) request is received for the port. Port power is turned off
`when the port is in the Powered-off or Not Configured states. If a hub supports ganged power switching,
`then the power to all ports in a gang is turned on when any port in a gang receives a
`SetPortFeature(PORT_POWER) request. The power to a gang is not turned off unless all ports in a gang
`are in the Powered-off or Not Configured states. Note, the power to a port is not turned on by a
`SetPortFeature(PORT _POWER) if both C _HUB_ LOCAL _POWER and Local Power Status (in
`wHubStatus) are set to 1B at the time when the request is executed and the PORT_POWER feature would
`be turned on.
`
`Although a self-powered hub is not required to implement power switching, the hub must support the
`Powered-off state for all ports. Additionally, the hub must implement the PortPwrCtr!Mask (all bits set to
`IB) even though the hub has no power switches that can be controlled by the USB System Software.
`
`Note: To ensure compatibility with previous versions ofUSB Software, hubs must implement the Logical
`Power Switching Mode field in wHubCharacteristics. This is because some versions of SW will not use the
`SetPortFeature() request if the hub indicates in wHubCharacteristics that the port does not support port
`power switching. Otherwise, the Logical Power Switching Mode field in wHubCharacteristics would have
`become redundant as of this version of the specification.
`
`The setting of the Logical Power Switching Mode for hubs with no power switches should reflect the
`manner in which over-current is reported. For example, if the hub reports over-current conditions on a per(cid:173)
`port basis, then the Logical Power Switching Mode should be set to indicate that power switching is
`controlled on a per-port basis.
`
`For a hub with no power switches, bPwrOn2PwrGood must be set to zero.
`
`11.11.1 Multiple Gangs
`A hub may implement any number of power and/or over-current gangs. A hub that implements more than
`one over-cLment and/or power switching gang must set both the Logical Power Switching Mode and the
`Over-current Reporting Mode to indicate that power switching and over-current reporting are on a per port
`basis (these fields are in wHubCharacteristics). Also, all bits in PortPwrCtr!Mask must be set to IB.
`
`When an over-current condition occurs on an over-current protection device, the over-current is signaled on
`all ports that are protected by that device. When the over-current is signaled, all the p01is in the group are
`placed in the Powered-off state, and the C _PORT_ OVER-CURRENT field is set to 1B on all the ports.
`When port status is read from any port in the group, the PORT_OVER-CURRENT field will be set to 1B as
`
`335
`
`PA_0001545
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`long as the over-current condition exists. The C_PORT_OVER-CURRENT field must be cleared in each
`port individually.
`
`When multiple ports share a power switch, setting PORT_POWER on any port in the group will cause the
`power to all ports in the group to tum on. IL will not, however, cause the other ports in that group to leave
`the Powered-off state. When all the ports in a group are in the Powered-off state or the hub is not
`configured, the power to the ports is turned off.
`
`lf a hub implements both power switching and over-current, it is not necessary for the over-current groups
`to be the same as the power switching groups.
`
`If an over-current condition occurs and power switches are present, then all power switches associated with
`an over-current protection circuit must be turned off. If multiple over-current protection devices are
`associated with a single power switch then that switch will be turned off when any of the over-cLment
`protection circuits indicates an over-current condition.
`
`11.12 Hub Controller
`The Hub Controller is logically organized as shown in Figure 11-19.
`
`UPSTREAM ONNECTION
`
`Status Change
`Endpoint
`
`ENDPOINT 0:
`Configuration
`lnfonnation
`
`Port 1
`
`Port N
`
`Port 3
`Port 2
`Figure 11-19. Example Hub Controller Organization
`
`11.12.1 Endpoint Organization
`The Hub Class defines one additional endpoint beyond Default Control Pipe, which is required for all hubs:
`the Status Change endpoint. The host system receives port and hub status change notifications through the
`Status Change endpoint. The Status Change endpoint is an interrupt endpoint. If no hub or port status
`change bits are set, then the hub returns an NAK when the Status Change endpoint is polled. When a status
`change bit is set, the hub responds with data, as shown in Section 11.12.4, indicating the entity (hub or port)
`with a change bit set. The USB System Software can use this data to determine which status registers to
`access in order to determine the exact cause of the status change interrupt.
`
`336
`
`PA_0001546
`
`

`

`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`cause the power on another port to fall below specified minimums. In this case, the affected port is placed
`in the Powered-off state and C _PORT_ OVER_ CURRENT is set for the port, but
`PORT_OVER_CURRENT is not set. If the hub has over-cun-ent detection on a hub basis, then an over(cid:173)
`cun-ent condition on the hub will cause all ports to enter the Powered-off state. However, in this case,
`neither C_PORT_OVER_CURRENT nor PORT_OVER_CURRENT is set for the affected ports.
`
`Host recovery actions for an over-cUil"ent event should include the following:
`
`1. Host gets change notification from hub with over-cun-ent event.
`
`2. Host extracts appropriate hub or port change information (depending on the information in the
`change bitmap).
`
`3. Host waits for over-cun-ent status bit to be cleared to 0.
`
`4. Host cycles power on to all of the necessary ports (e.g., issues a SetPortFeature(PORT_POWER)
`request for each port).
`
`5. Host re-enumerates all affected ports.
`
`11.12.6 Enumeration Handling
`The hub device class commands are used to manipulate its downstream facing port state. When a device is
`attached, the device attach event is detected by the hub and reported on the status change inten-upt. The host
`will accept the status change report and request a SetPortFeature(PORT_RESET) on the port. As part of the
`bus reset sequence, a speed detect is performed by the hub's port hardware.
`
`The Gel_Status(PORT) request invoked by the host will return a "nol PORT_LOW _SPEED and
`PORT_HIGH_SPEED" indication for a downstream facing port operating at high-speed. The
`Get_Status(PORT) will report "PORT_LOW _SPEED" for a downstream facing port operating at low(cid:173)
`speed. The Get_Status(PORT) will report "not PORT_LOW _SPEED and not PORT_HIGH_SPEED" for a
`downstream facing port operating at full-speed.
`
`When the device is detached from the port, the port reports the status change through the status change
`endpoint and the port will be reconnected to the high-speed repeater. Then the process is ready to be
`repeated on the next device attach detect.
`
`11.13 Hub Configuration
`Hubs are configured through the standard USB device configuration commands. A hub that is not
`configured behaves like any other device that is not configured with respect to power requirements and
`addressing. If a hub implements power switching, no power is provided to the downstream facing ports
`while the hub is not configured. Configuring a hub enables the Status Change endpoint. The USB System
`Software may then issue commands to the hub to switch port power on and off at appropriate times.
`
`The USB System Software examines hub descriptor infonnation to determine the hub's characteristics. By
`examining the hub's characteristics, the USB System Software ensures that illegal power topologies are not
`allowed by not powering on the hub's ports if doing so would violate the USB power topology. The device
`status and configuration info1mation can be used to determine whether the hub should be used as a bus or
`self-powered device. Table 11-12 summarizes the information and how it can be used to determine the
`cun-ent power requirements of the hub.
`
`340
`
`PA_0001550
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Table 11-12. Hub Power Operating Mode Summary
`
`Configuration Descriptor
`
`MaxPower
`
`bmAttributes
`(Self Powered)
`
`Hub
`Device Status
`(Self Power)
`
`Explanation
`
`0
`
`0
`
`0
`
`>0
`
`>0
`
`>0
`
`0
`
`1
`
`1
`
`0
`
`1
`
`1
`
`N/A
`
`N/A
`This is an illegal set of information.
`
`0
`
`1
`
`N/A
`
`0
`
`1
`
`N/A
`A device which is only self-powered, but does
`not have local power cannot connect to the bus
`and communicate.
`
`Self-powered only hub and local power supply is
`good. Hub status also indicates local power
`good, see Section 11.16.2.5. Hub functionality is
`valid anywhere depth restriction is not violated.
`
`Bus-powered only hub. Downstream facing
`ports may not be powered unless allowed in
`current topology. Hub device status reporting
`Self Powered is meaningless in combination of a
`zeroed bmAttributes. Self-Powered.
`
`This hub is capable of both self- and bus-
`powered operating modes. It is currently only
`available as a bus-powered hub.
`
`This hub is capable of both self- and bus-
`powered operating modes. It is currently
`available as a self-powered hub.
`
`A self-powered hub has a local power supply, but may optionally draw one unit load from its upstream
`connection. This allows the interface to function when local power is not available (see Section 7.2.1.2).
`When local power is removed ( either a hub-wide over-current condition or local supply is off), a hub of this
`type remains in the Configured state but transitions all ports (whether removable or non-removable) to the
`Powered-off state. While local power is off, all port status and change information read as zero and all
`SetPortFeature() requests are ignored (request is treated as a no-operation). The hub will use the Status
`Change endpoint to notify the USB System Software of the hub event (see Section 11.24.2.6 for details on
`hub status).
`
`The MaxPower field in the configuration descriptor is used to report to the system the maximum power the
`hub will draw from VBUS when the configuration is selected. For bus-powered hubs, the reported value
`must not include the power for any of external downstream facing ports. The external devices attaching to
`the hub will report their individual power requirements.
`
`A compound device may power both the hub electronics and the permanently attached devices from VBUS .
`The entire load may be reported in the hubs' configuration descriptor with the permanently attached devices
`each reporting self-powered, with zero MaxPower in their respective configuration descriptors.
`
`341
`
`PA_0001551
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`11.14 Transaction Translator
`A hub has a special responsibility when it is operating in high-speed and has full-/low-speed devices
`connected on downstream facing ports. In this case, the hub must isolate the high-speed signaling
`environment from the full-/low-speed signaling environment. This function is performed by the Transaction
`Translator (TT) portion of the hub.
`
`This section defines the required behavior of the transaction translator.
`
`11.14.1 Overview
`Figure 11-24 shows an overview of the Transaction Translator. The TT is responsible for pmiicipating in
`high-speed split transactions on the high-speed bus via its upstTeam facing port and issuing corresponding
`full-/low-speed transactions on its downstream facing ports that are operating at full-/low-speed. The TT
`acts as a high-speed function on the high-speed bus and performs the role of a host controller for its
`downstream facing ports that are operating at full-/low-speed. The TT includes a high-speed handler to deal
`with high-speed transactions. The TT also includes a full-/low-speed handler that performs the role of a
`host controller on the downstream facing ports that are operating at full-/low-speed.
`
`Full/Low Speed Bus
`
`Figure 11-24. Transaction Translator Overview
`
`The TT has buffers (shown in gray in the figure) to hold transactions that are in progress and tracks the state
`of each buffered transaction as it is processed by the TT. The buffers provide the connection between the
`high-speed and full-/low-speed handlers. The state tracking the TT does for each transaction depends on the
`specific USB transfer type of the transaction (i.e., bulk, control, interrupt, isochrnnous). The high-speed
`handler accepts high-speed start-split transactions or responds to high-speed complete-split transactions.
`The high-speed handler places the start-split transactions in local buffers for the full-/low-speed handler's
`use.
`
`The buffered start-split transactions provide the full-/low-speed handler with the infonnation that allows it
`to issue corresponding full-/low-speed transactions to full-/low-speed devices attached on downstream
`facing ports. The full-/low-speed handler buffers the results of these full-/low-speed transactions so that
`they can be returned with a corresponding complete-split transaction on the high-speed bus.
`
`The general conversion between full-/low-speed transactions and the corresponding high-speed split
`transaction protocol is described in Section 8.4.2. More details about the specific transfer types for split
`transactions are described later in this chapter.
`
`342
`
`PA_0001552
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`The high-speed handler of the TT operates independently of the full-/low-speed handler. Both handlers use
`the local transaction buffers to exchange information where required.
`
`ransact10n Trans ator
`
`Bulk&
`Control
`
`Interrupt &
`Isochronous
`
`Figure 11-25. Periodic and Non-periodic Buffer Sections of TT
`
`The TT has two buffer and state tracking sections (shown in gray in Figure 11-24 and Figure 11-25):
`periodic (for isochronous/intenupt full-/low-speed transactions) and non-periodic (for bulk/control full(cid:173)
`/low-speed transactions). The requirements on the TT for these two buffer and state tracking sections are
`different. Each will be described in turn later in this chapter.
`
`11.14.1.1 Data Handling Between High-speed and Full-flow-speed
`The host converts transfer requests involving a full-/low-speed device into conesponding high-speed split
`transactions to the TT to which the device is attached.
`
`Low-speed Preamble(PRE) packets are never used on the high-speed bus to indicate a low-speed
`transaction. Instead, a low-speed transaction is encoded in the split transaction token.
`
`The host can have a single schedule of the transactions that need to be issued to devices. This single
`schedule can be used to hold both high-speed transactions and high-speed split transactions used for
`communicating with full-/low-speed devices.
`
`11.14.1.2 Host Controller and TT Split Transactions
`The host controller uses the split transaction protocol for initiating full-/low-speed transactions via the TT
`and then determining the completion status of the full-/low-speed transaction. This approach allows the
`host controller to start a full-/low-speed transaction and then continue with other high-speed transactions
`while avoiding having to wait for the slower transaction to proceed/complete at its speed. A high-speed
`split transaction has two parts: a start-split and a complete-split. Split transactions are only used between
`the host controller and a hub. No other high-/full-/low-speed devices ever participate in split transactions.
`
`When the host controller sends a start-split transaction at high-speed, the split transaction is addressed to the
`TT for that device. That TT will accept the transaction and buffer it locally. The high-speed handler
`responds with an appropriate handshake to inform the host controller that the transaction has been accepted.
`Not all split transactions have a handshake phase to the start-split. The start-split transactions are kept
`temporarily in a TT transaction buffer.
`
`The full-/low-speed handler processes start-split periodic transactions stored in the periodic transaction
`buffer (in order) as the downstream full-/low-speed bus is ready for the "next" transaction. The full-/low(cid:173)
`speed handler accepts any result information from the downstream bus (in response to the full-/low-speed
`transaction) and accumulates it in a local buffer for later transmission to the host controller.
`
`At an appropriate future time, the host controller sends a high-speed complete-split transaction to retrieve
`the status/data/result for appropriate full-/low-speed transactions. The high-speed handler checks this high(cid:173)
`speed complete-split transaction with the response at the head of the appropriate local transaction buffer and
`responds accordingly. The specific split transaction sequences are defined for each USB transfer type in
`later sections.
`
`343
`
`PA_0001553
`
`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`While (1) loop
`While (not end of microframe) loop
`-- process next start-split transaction
`If available periodic start-split transaction then
`Process next full-/low-speed periodic transaction
`Else if (available bulk/control transaction) and
`(fits in full-/low-speed 1 ms frame) then
`Process one transaction
`End if
`End loop
`
`Advance~Pipeline();
`End loop
`
`-- see description in Figure 11-67(below)
`
`Figure 11-28. Example Full-flow-speed Handler Scheduling for Start-splits
`
`As described earlier in this chapter, the TT derives the downstream bus's 1 ms SOF timer from the high(cid:173)
`speed 125 µs microframe. This means that the host and the TT have the same 1 ms frame time for all TTs.
`Given the strict relationship between frames and the zeroth microframe, there is no need to have any
`explicit timing information carried in the periodic split transactions sent to the TT. See Section 11.18 for
`more information.
`
`11.15 Split Transaction Notation Information
`The following sections describe the details of the transaction phases and flow sequences of split transactions
`for the different USB transfer types: bulk/control, interrupt, and isochronous. Each description also shows
`detailed example host and TT state machines to achieve the required transaction definitions. The diagrams
`should not be taken as a required implementation, but to specify the required behavior. Appendix A
`includes example high-speed and full-speed transaction sequences with different results to clarify the
`relationships between the host controller, the TT, and a full-speed endpoint.
`
`Low-speed is not discussed in detail since beyond the handling of the PRE packet (which is defined in
`Chapter 8), there are no packet sequencing differences between low- and full-speed.
`
`For each data transfer direction, reference figures also show the possible flow sequences for the start-split
`and the complete-split portion of each split transaction transfer type.
`
`The transitions on the flow sequence figures have labels that correspond to the transitions in the host and TT
`state machines. These labels are also included in the examples in Appendix A. The three character labels
`are of the form: <SI C ><TI DI HIE ><number>. S indicates that this is a start-split label. C indicates
`that this is a complete-split label. T indicates token phase; D indicates data phase; H indicates handshake
`phase; E indicates an error case. The number simply distinguishes different labels of the same case/phase in
`the same split transaction part.
`
`The flow sequence figures fwiher identify the visibility of transitions according to the legend in
`Figure 11-29. The flow sequences also include some indication of states required in the host or TT or
`actions taken. The legend shown in Figure 11-29 indicates how these are identified.
`
`Bold indicates host action
`Italics indicate <hub status> or <hub action>
`Both visible
`Hub visible
`Host visible
`
`Figure 11-29. Flow Sequence Legend
`
`Figure 11-30 shows the legend for the state machine diagrams . A circle with a three line border indicates a
`reference to another (hierarchical) state machine. A circle with a two line border indicates an initial state.
`A circle with a single line border is a simple state.
`
`346
`
`PA_0001556
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`A diamond Uoint) is used to join several transitions to a common point. A joint allows a single input
`transition with multiple output transitions or multiple input transitions and a single output transition. All
`conditions on the transitions of a path involving a joint must be true for the path to be taken. A path is
`simply a sequence of transitions involving one or more joints.
`
`A transition is labeled with a block with a line in the middle separating the ( upper) condition and the (lower)
`actions. The condition is required to be true to take the transition. The actions are performed if the
`transition is taken. The syntax for actions and conditions is VHDL. A circle includes a name in bold and
`optionally one or more actions that are performed upon entry to the state.
`
`- Contains other state machines
`
`- Initial state of a state machine
`
`- State in a state machine
`
`- Entry and exit of state machine
`
`- Joint used to connect transitions
`
`8
`
`I
`
`Condition
`-i~====A=c_t-io:n:s==~~~ - Transition: taken when condition
`is true and perf arms actions
`
`I
`
`Figure 11-30. Legend for State Machines
`
`The descriptions of the split transactions for the four transfer types refer to the status of the full-flow-speed
`transaction on the bus downstream of the TT. This status is used by the high-speed handler to determine its
`response to a complete-split transaction. The status is only visible within a TT implementation and is used
`in the specification purely for ease of explanation. The defined status values are:
`
`• Ready - The transaction has completed on the downstream facing full-flow-speed bus with the result
`as follows:
`
`• Ready/NAK -A NAK handshake was received.
`
`• Ready /trans_err -The full-flow-speed transaction experienced a error in the transaction.
`Possible errors are: PID to PID _invert bits check failure, CRC5 check failure, incorrect PID,
`timeout, CRC16 check failure, incorrect packet length, bitstuffing error, false EOP.
`
`• Ready /ACK-An ACK handshake was received.
`
`• Ready /Stall - A ST ALL handshake was received.
`
`• Ready /Data -A data packet was received and the CRC check passed. (bulk/control IN).
`
`347
`
`PA_0001557
`
`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`11.16 Common Split Transaction State Machines
`There are several state machines common to all the specific split transaction types. These state machines
`are used in the host controller and transaction translator to determine the specific split transaction type (e.g.,
`interrupt OUT start-split vs. bulk IN complete-split). An overview of the host controller state machine
`hierarchy is shown in Figure 11-32. The overview of the transaction translator state machine hierarchy is
`shown in Figure 11-33. Each of the labeled boxes in the figures show an individual state machine. Boxes
`contained in another box indicate a state machine contained within another state machine. All the state
`machines except the lowest level ones are shown in the remaining figures in this section. The lowest level
`state machines are shown in later sections describing the specific split transaction type.
`
`HC Do start
`
`RC_ Do_ complete
`
`HC Do IsochISS
`
`I HC_Do_IsochICS
`
`HC Do IntISS
`
`HC Do BISS
`
`HC Do IntICS
`I HC _Data_ or_ timeout I
`
`HC Do IsochOSS
`
`I HC_Do_BICS
`
`HC Do IntOSS
`
`I HC_Do_IntOCS
`
`HC Do BOSS
`
`I HC_Do_BOCS
`
`Figure 11-32. Host Controller Split Transaction State Machine Hierarchy Overview
`
`349
`
`PA_0001559
`
`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`Universal Serial Bus Specification Revision 2.0
`
`11.17 Bulk/Control Transaction Translation Overview
`Each TT must have at least two bulk/control transaction buffers. Each buffer holds the information for a
`start- or complete-split transaction and represents a single full-flow-speed transaction that is awaiting ( or has
`completed) transfer on the downstream bus. The buffer is used to hold the transaction information from the
`staii-split (and data for an OUT) and then the handshake/result of the full-flow-speed transaction (and data
`for an IN). This buffer is filled and emptied by split transactions from the high-speed bus via the high-speed
`handler. The buffer is also updated by the full-flow-speed handler while the transaction is in progress on the
`downstream bus.
`
`The high-speed handler must accept a start-split transaction from the host controller for a bulk/control
`endpoint whenever the high-speed handler has appropriate space in a bulk/control buffer.
`
`The host controller attempts a start-split transaction according to its bulk/control high-speed transaction
`schedule. As soon as the high-speed handler responds to a complete-split transaction with the results from
`the corresponding buffer, the next staii-split for some (possibly other) full-flow-speed endpoint can be saved
`in the buffer.
`
`There is no method to control the start-split transaction accepted next by the high-speed handler.
`Sequencing of start-split transactions is simply determined by available TT buffer space and the current
`state of the host controller schedule ( e.g., which start-split transaction is next that the host controller tries as
`a normal part of processing high-speed transactions).
`
`The host controller does not need to segregate split transaction bulk (or control) transactions from high(cid:173)
`speed bulk ( control) transactions when building its schedule. The host controller is required to track
`whether a transaction is a normal high-speed transaction or a high-speed split transaction.
`
`The following sections describe the details of the transaction phases, flow sequences, and state machines for
`split transactions used to support full-flow-speed bulk and control OUT and IN transactions. There are only
`minor differences between bulk and control split transactions. In the figures, some areas are shaded to
`indicate that they do not apply for control transactions.
`
`11.17.1 Bulk/Control Split Transaction Sequences
`The state machine figures show the transitions required for high-speed split transactions for full-flow-speed
`bulk/control transfer types for a single endpoint. These figures must not be interpreted as showing any
`particular specific timing. They define the required sequencing behavior of different packets of a
`bulk/control split transaction. In particular, other high-speed or split transactions for other endpoints occur
`before or after these split transaction sequences.
`
`Figure 11-4 7 shows a sample code algorithm that describes the behavior of the transitions labeled with
`Js_new _SS, Js_old_SS and Is_no _space shown in the figures for both bulk/control IN and OUT start-split
`transactions buffered in the TT for any endpoint. This algorithm ensures that the TT only buffers a single
`bulk/control split transaction for any endpoint. The complete-split protocol definition requires an endpoint
`has only a single result buffered in the TT at any time. Note that the "buffer match" test is different for bulk
`and control endpoints. A buffer match test for a bulk transaction must include the direction of the
`transaction in the test since bulk endpoints are unidirectional. A control transaction must not use direction
`as part of the match test.
`
`360
`
`PA_0001570
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`procedure Compare buffs IS
`variable match:boolean:=FALSE;
`
`begin
`
`Is new SS is true when BC buff.status== NEW SS
`Is old SS is true when BC buff.status== OLD SS
`Is=no_space is true when BC_buff.status == NO_SPACE
`
`-
`
`-
`
`-- Assume nospace and intialize index to 0.
`BC buff.status .- NO SPACE;
`BC buff.index
`.- O·
`
`IN Oto num buffs-1 LOOP
`FOR i
`IF NOT match THEN
`Re-use buffer with same Device Address/End point.
`IF (token.endpt = cam(i) .store.endpt AND
`token.dev addr = cam(i) .store.dev addr AND
`((token.direction= cam(i) .store.direction AND
`split.ep type/= CONTROL) OR
`split.ep type= CONTROL)) THEN
`
`If The buffer is already pending/ready this must be a retry.
`IF (cam(i) .match.state= READY OR cam(i) .match.state= PENDING) THEN
`BC_buff.status .- OLD SS;
`ELSE
`BC buff . status .- NEW_SS;
`END IF;
`BC buff.index:= i;
`match:= TRUE;
`
`-- Otherwise use the buffer if it's old.
`ELSIF (cam(i) .match.state= OLD) THEN
`BC buff.status := NEW SS;
`BC-buff.index
`i;
`-
`END IF;
`END IF;
`END LOOP;
`
`end Compare buffs;
`
`Figure 11-47. Sample Algorithm for Compare_buffs
`
`Figure 11-48 shows the sequence of packets for a start-split transaction for the full-/low-speed bulk OUT
`transfer type. The block labeled SSPLIT represents a split transaction token packet as described in
`Chapter 8. It is followed by an OUT token packet (or SETUP token packet for a control setup transaction).
`If the high-speed handler times out after the SSPLIT or OUT token packets, and does not receive the
`following OUT/SETUP or DATA0/1 packets, it will not respond with a handshake as indicated by the
`dotted line transitions labeled "se 1" or "se2". This causes the host to subsequently see a transaction error
`(timeout) (labeled "se2" and indicated with a dashed line). If the high-speed handler receives the DATA0/1
`packet and it fails the CRC check, it takes the transition "se2" which causes the host to timeout and follow
`the "se2" transition.
`
`361
`
`PA_0001571
`
`

`

`Universal Serial Bus Specification Revision 2.0
`
`Start split
`
`stl
`
`SSPLIT
`st2
`OUT/SETUP
`
`Trans err
`
`Trans err
`..................................................... ........................................................
`
`sdl
`DATA0/1
`
`set
`
`······················································ ··· ·····T
`
`Comppre _ buffs
`..........................................
`
`Is old SS
`
`Is new: SS
`Accept: data
`sh!!
`y
`
`sh2!
`y
`
`]
`[
`ACK
`~1 ______,
`i
`
`i •
`
`Goto
`comp. split
`
`, i
`Tr.ans err
`I
`se2!
`I
`i
`Inc ,rr
`couqt
`
`Is no : space
`
`sh3!
`
`[N~K]
`i •
`
`i
`
`,--···-·-·-·-·1
`..
`se4i
`ses!
`...
`if err count >= 3
`if err_ count < 3
`Retry
`start split retry start split endpoint halt
`I Host I 0
`
`Figure 11-48. Bulk/Control OlJT Start-split Transaction Sequence
`
`The host must keep retrying the start-split for this endpoint until the err_ count reaches three for this
`endpoint before continuing on to some other start-split for this endpoint However, the host can issue other
`start-splits for other endpoints before it retries the start-split for this endpoint. The err_ count is used to
`count how many errors have been experienced during attempts to issue a particular transaction for a
`particular endpoint
`
`If there is no space in the transaction buffers to hold the start-split, the high-speed handler responds with a
`NAK via transition "sh3". This will cause the host to retry this start-split at some future time based on its
`normal schedule. The host does not increase its err_ count for a NAK handshake response. Once the host
`has received a NAK response to a start-split, it can skip other start-splits for this TT for bulk/control
`endpoints until it finishes a bulk/control complete-split
`
`If there is buffer space for the start-split, the high-speed handler takes transition "shl " and responds with an
`ACK. This tells the host it must try a complete-split the next time it attempts to process a transaction for
`this full-/low-speed endpoint After receiving an ACK handshake, the host must not issue a further start(cid:173)
`split for this endpoint until the corresponding complete-split

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket