Information
Universal Serial Bus Interface
MPC8308 PowerQUICC II Pro Processor Reference Manual, Rev. 1
Freescale Semiconductor 13-101
-- to send a complete split in the previous microframe. So,
-- if the
-- 'previous bit' is set in C-mask, check C-prog-mask to
-- make sure it
-- happened.
If (previousBit bitAND QH.C-mask)then
If not(previousBit bitAND QH.C-prog-mask) then
rvalue = FALSE;
End if
End If
-- If the C-prog-mask already has a one in this bit position,
-- then an aliasing
-- error has occurred. It will probably get caught by the
-- FrameTag Test, but
-- at any rate it is an error condition that as detectable here
-- should not allow
-- a transaction to be executed.
If (cMicroFrameBit bitAND QH.C-prog-mask) then
rvalue = FALSE;
End if
return (rvalue)
End Algorithm
• Test D. Check to see if a start-split should be executed in this microframe. Note this is the same
test performed in the Do Start Split state. Whenever it evaluates to TRUE and the controller is NOT
processing in the context of a Recovery Path mode, it means a start-split should occur in this
microframe. Test D and Test A evaluating to TRUE at the same time is a system software error.
Behavior is undefined.
If (A .and. B .and. C .and. not(D)) then the host controller will execute a complete-split transaction. When
the host controller commits to executing the complete-split transaction, it updates QH[C-prog-mask] by
bit-ORing with cMicroFrameBit. On completion of the complete-split transaction, the host controller
records the result of the transaction in the queue head and sets QH[FrameTag] to the expected H-Frame
number. The effect to the state of the queue head and thus the state of the transfer depends on the response
by the transaction translator to the complete-split transaction. The following responses have the effects
(note that any responses that result in decrementing of the Cerr will result in the queue head being halted
by the host controller if the result of the decrement is zero):
• NYET (and Last)
On each NYET response, the host controller checks to determine whether this is the last
complete-split for this split transaction. Last is defined in this context as the condition where all of
the scheduled complete-splits have been executed. If it is the last complete-split (with a NYET
response), then the transfer state of the queue head is not advanced (never received any data) and
this state exited. The transaction translator must have responded to all the complete-splits with
NYETs, meaning that the start-split issued by the host controller was not received. The start-split
should be retried at the next poll period.
The test for whether this is the Last complete split can be performed by XOR QH[C-mask] with
QH[C-prog-mask]. If the result is all zeros then all complete-splits have been executed. When this
condition occurs, the XactErr status bit is set and the Cerr field is decremented.
• NYET (and not Last)