NO:
W90P710 Programming Guide
VERSION:
2.1
PAGE:
84
The above information is the exclusive intellectual property of Winbond Electronics and shall not be disclosed,
distributed or reproduced without permission from Winbond.
Table No.: 1200-0003-07-A
identical
TD
to implement the next Interrupt Transfer. Thus it can fulfill the periodic polling of an
Interrupt Endpoint.
The following is an example code of Interrupt Transfer :
info = usb_pipeout (urb->pipe)? (TD_CC | TD_DP_OUT | toggle) :
(TD_CC | TD_R | TD_DP_IN | toggle);
td_fill(info, data, data_len, urb, cnt++);
6.5.5.4
Isochronous Transfer
An Isochronous
TD
may contain one to eight consecutive packets with specified starting frame
number. Depending on implementation of operating system, several isochronous packets to be
transferred may be carried in a single
IRP
.
HCD
must prepare appropriate Isochronous
TD
s for these
isochronous packets. For example, in Linux’s implementation,
HCD
will generate a single Isochronous
TD
for each isochronous packet. According to the starting frame specified in the
IRP
,
HCD
will
increase the starting frame of each consecutive Isochronous
TD
. The transfer length of each
isochronous packet is specified by Client Software and should not be larger than 1023 bytes.
The following is an example code of Isochronous Transfer :
for (cnt = 0; cnt < urb->number_of_packets / ISO_FRAME_COUNT; cnt++)
{
iso_td_fill(TD_CC | ((ISO_FRAME_COUNT - 1) << 24) | TD_ISO |
((urb->start cnt * ISO_FRAME_COUNT) & 0xffff ),
(UINT8 *) data, urb, cnt);
}
6.5.6 Interrupt Processing
W90P710 USB
Host Controller
may raise the following interrupts :
•
SchedulingOverrun
•
WritebackDoneHead
•
StartOfFrame
•
ResumeDetected