aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/usb/controller/xhci.c
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2013-06-02 10:54:47 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2013-06-02 10:54:47 +0000
commitef32af218067344eb35dceda565861cd9e827d0d (patch)
treedec0cb887784a3645323a2dac39c5c114f9d6c1f /sys/dev/usb/controller/xhci.c
parentfe1831e06f536cc807e0bb4e7308045eea40841a (diff)
downloadsrc-ef32af218067344eb35dceda565861cd9e827d0d.tar.gz
src-ef32af218067344eb35dceda565861cd9e827d0d.zip
Don't set the start ISOC ASAP bit for non-isochronous TRBs.
MFC after: 1 week
Notes
Notes: svn path=/head/; revision=251249
Diffstat (limited to 'sys/dev/usb/controller/xhci.c')
-rw-r--r--sys/dev/usb/controller/xhci.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index 7d5bf1f998f4..69c873fed3cc 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -1700,14 +1700,17 @@ restart:
dword = XHCI_TRB_3_CHAIN_BIT | XHCI_TRB_3_CYCLE_BIT |
XHCI_TRB_3_TYPE_SET(temp->trb_type) |
- (temp->do_isoc_sync ?
- XHCI_TRB_3_FRID_SET(temp->isoc_frame / 8) :
- XHCI_TRB_3_ISO_SIA_BIT) |
XHCI_TRB_3_TBC_SET(temp->tbc) |
XHCI_TRB_3_TLBPC_SET(temp->tlbpc);
- temp->do_isoc_sync = 0;
-
+ if (temp->trb_type == XHCI_TRB_TYPE_ISOCH) {
+ if (temp->do_isoc_sync != 0) {
+ temp->do_isoc_sync = 0;
+ dword |= XHCI_TRB_3_FRID_SET(temp->isoc_frame / 8);
+ } else {
+ dword |= XHCI_TRB_3_ISO_SIA_BIT;
+ }
+ }
if (temp->direction == UE_DIR_IN) {
dword |= XHCI_TRB_3_DIR_IN;