NO:
W90P710 Programming Guide
VERSION:
2.1
PAGE:
89
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
UINT32 td_list_hc;
TD_T *td_rev = NULL;
TD_T *td_list = NULL;
URB_PRIV_T *urb_priv = NULL;
td_list_hc = (UINT32)(ohci->hcca->done_head) & 0xfffffff0;
ohci->hcca->done_head = 0;
while (td_list_hc)
{
td_list = (TD_T *)td_list_hc;
if (TD_CC_GET((UINT32)td_list->hwINFO))
{
urb_priv = (URB_PRIV_T *)td_list->urb->hcpriv;
TD_CompletionCode(TD_CC_GET((UINT32)(td_list->hwINFO)));
if (td_list->ed->hwHeadP & 0x1)
{
if (urb_priv && ((td_list->index + 1) < urb_priv->length))
{
td_list->ed->hwHeadP =
(urb_priv->td[urb_priv->length - 1]->hwNextTD & 0xfffffff0) |
(td_list->ed->hwHeadP & 0x2);
urb_priv->= urb_priv->length - td_list->index - 1;
}
else
td_list->ed->hwHeadP &= 0xfffffff2;
}
}
if ((td_list->ed->type == PIPE_ISOCHRONOUS) &&
(td_list->hwPSW[0] >> 12) &&
((td_list->hwPSW[0] >> 12) != TD_DATAUNDERRUN))
{
/* PSW error */
TD_CompletionCode(td_list->hwPSW[0] >> 12);
}
td_list->next_dl_td = td_rev;
td_rev = td_list;
td_list_hc = (UINT32)(td_list->hwNextTD) & 0xfffffff0;
} /* end of while */
return td_list;
}