USB: xhci: Fix Link TRB handoff bit twiddling.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 30 Apr 2009 02:04:59 +0000 (19:04 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 04:44:50 +0000 (21:44 -0700)
Make sure to preserve all bits *except* the TRB_CHAIN bit when giving a
Link TRB to the hardware.  We need to save things like TRB type and the
toggle bit in the control dword.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-ring.c

index 9d68747..8fb5d52 100644 (file)
@@ -188,7 +188,7 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, bool consumer
                                        next->link.control &= (u32) ~TRB_CYCLE;
                                else
                                        next->link.control |= (u32) TRB_CYCLE;
-                               next->link.control &= TRB_CHAIN;
+                               next->link.control &= ~TRB_CHAIN;
                                next->link.control |= chain;
                        }
                        /* Toggle the cycle bit after the last ring segment. */