Deleted Added
full compact
1c1
< /* $FreeBSD: head/sys/dev/usb/controller/xhci.c 251249 2013-06-02 10:54:47Z hselasky $ */
---
> /* $FreeBSD: head/sys/dev/usb/controller/xhci.c 251251 2013-06-02 11:58:31Z hselasky $ */
1547a1548
> struct xhci_td *td_first;
1567c1568
< td_next = temp->td_next;
---
> td_next = td_first = temp->td_next;
1700a1702
> /* BEI: Interrupts are inhibited until EOT */
1701a1704
> XHCI_TRB_3_BEI_BIT |
1763a1767
> /* BEI: interrupts are inhibited until EOT */
1765c1769,1770
< XHCI_TRB_3_CYCLE_BIT | XHCI_TRB_3_IOC_BIT;
---
> XHCI_TRB_3_CYCLE_BIT | XHCI_TRB_3_IOC_BIT |
> XHCI_TRB_3_BEI_BIT;
1793,1795c1798,1805
< /* remove cycle bit from first if we are stepping the TRBs */
< if (temp->step_td)
< td->td_trb[0].dwTrb3 &= ~htole32(XHCI_TRB_3_CYCLE_BIT);
---
> /* need to force an interrupt if we are stepping the TRBs */
> if ((temp->direction & UE_DIR_IN) != 0 && temp->multishort == 0) {
> /* remove cycle bit from first TRB if we are stepping them */
> if (temp->step_td)
> td_first->td_trb[0].dwTrb3 &= ~htole32(XHCI_TRB_3_CYCLE_BIT);
> /* make sure the last LINK event generates an interrupt */
> td->td_trb[td->ntrb].dwTrb3 &= ~htole32(XHCI_TRB_3_BEI_BIT);
> }
2657a2668
> struct xhci_trb *trb_link;
2732a2744,2746
> /* compute link TRB pointer */
> trb_link = td_last->td_trb + td_last->ntrb;
>
2734,2737c2748,2752
< td_last->td_trb[td_last->ntrb].qwTrb0 = htole64(addr);
< td_last->td_trb[td_last->ntrb].dwTrb2 = htole32(XHCI_TRB_2_IRQ_SET(0));
< td_last->td_trb[td_last->ntrb].dwTrb3 = htole32(XHCI_TRB_3_IOC_BIT |
< XHCI_TRB_3_CYCLE_BIT | XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_LINK));
---
> trb_link->qwTrb0 = htole64(addr);
> trb_link->dwTrb2 = htole32(XHCI_TRB_2_IRQ_SET(0));
> trb_link->dwTrb3 = htole32(XHCI_TRB_3_IOC_BIT |
> XHCI_TRB_3_CYCLE_BIT |
> XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_LINK));