From b959e553179846cfa42e000264cec12d29c5c6e4 Mon Sep 17 00:00:00 2001 From: Andiry Xu Date: Thu, 5 May 2011 18:14:02 +0800 Subject: [PATCH] --- yaml --- r: 248840 b: refs/heads/master c: ad106f292369d753d5c75751cb9e760726e3cd00 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/xhci-ring.c | 5 +++++ trunk/drivers/usb/host/xhci.h | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d8644ab6c27b..a1e2fdefa9f9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7b1fc2ea8a5fbf9487d83865456cff77d0249ea9 +refs/heads/master: ad106f292369d753d5c75751cb9e760726e3cd00 diff --git a/trunk/drivers/usb/host/xhci-ring.c b/trunk/drivers/usb/host/xhci-ring.c index 3e759af049b7..c35058b94de6 100644 --- a/trunk/drivers/usb/host/xhci-ring.c +++ b/trunk/drivers/usb/host/xhci-ring.c @@ -3293,6 +3293,11 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags, } else { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; + if (xhci->hci_version == 0x100) { + /* Set BEI bit except for the last td */ + if (i < num_tds - 1) + field |= TRB_BEI; + } more_trbs_coming = false; } diff --git a/trunk/drivers/usb/host/xhci.h b/trunk/drivers/usb/host/xhci.h index af8b66f2fd00..33a49d5d6c22 100644 --- a/trunk/drivers/usb/host/xhci.h +++ b/trunk/drivers/usb/host/xhci.h @@ -964,6 +964,8 @@ struct xhci_event_cmd { /* The buffer pointer contains immediate data */ #define TRB_IDT (1<<6) +/* Block Event Interrupt */ +#define TRB_BEI (1<<9) /* Control transfer TRB specific fields */ #define TRB_DIR_IN (1<<16)