]> Pileus Git - ~andy/linux/blobdiff - drivers/usb/host/xhci-ring.c
USB: EHCI: Don't use NO_IRQ in xilinx ehci driver
[~andy/linux] / drivers / usb / host / xhci-ring.c
index 1fdb7e1cca3fe14e8bacf6b68b857f14cec5463b..b90e1386418b429f05eada3487117d4fbba50186 100644 (file)
@@ -552,12 +552,9 @@ static void td_to_noop(struct xhci_hcd *xhci, struct xhci_ring *ep_ring,
                                        cpu_to_le32(TRB_CYCLE);
                        cur_trb->generic.field[3] |= cpu_to_le32(
                                TRB_TYPE(TRB_TR_NOOP));
-                       xhci_dbg(xhci, "Cancel TRB %p (0x%llx dma) "
-                                       "in seg %p (0x%llx dma)\n",
-                                       cur_trb,
-                                       (unsigned long long)xhci_trb_virt_to_dma(cur_seg, cur_trb),
-                                       cur_seg,
-                                       (unsigned long long)cur_seg->dma);
+                       xhci_dbg(xhci, "TRB to noop at offset 0x%llx\n",
+                                       (unsigned long long)
+                                       xhci_trb_virt_to_dma(cur_seg, cur_trb));
                }
                if (cur_trb == cur_td->last_trb)
                        break;
@@ -697,9 +694,9 @@ static void handle_stopped_endpoint(struct xhci_hcd *xhci,
         */
        list_for_each(entry, &ep->cancelled_td_list) {
                cur_td = list_entry(entry, struct xhci_td, cancelled_td_list);
-               xhci_dbg(xhci, "Cancelling TD starting at %p, 0x%llx (dma).\n",
-                               cur_td->first_trb,
-                               (unsigned long long)xhci_trb_virt_to_dma(cur_td->start_seg, cur_td->first_trb));
+               xhci_dbg(xhci, "Removing canceled TD starting at 0x%llx (dma).\n",
+                               (unsigned long long)xhci_trb_virt_to_dma(
+                                       cur_td->start_seg, cur_td->first_trb));
                ep_ring = xhci_urb_to_transfer_ring(xhci, cur_td->urb);
                if (!ep_ring) {
                        /* This shouldn't happen unless a driver is mucking
@@ -1936,6 +1933,16 @@ static int handle_tx_event(struct xhci_hcd *xhci,
        xdev = xhci->devs[slot_id];
        if (!xdev) {
                xhci_err(xhci, "ERROR Transfer event pointed to bad slot\n");
+               xhci_err(xhci, "@%016llx %08x %08x %08x %08x\n",
+                        (unsigned long long) xhci_trb_virt_to_dma(
+                                xhci->event_ring->deq_seg,
+                                xhci->event_ring->dequeue),
+                        lower_32_bits(le64_to_cpu(event->buffer)),
+                        upper_32_bits(le64_to_cpu(event->buffer)),
+                        le32_to_cpu(event->transfer_len),
+                        le32_to_cpu(event->flags));
+               xhci_dbg(xhci, "Event ring:\n");
+               xhci_debug_segment(xhci, xhci->event_ring->deq_seg);
                return -ENODEV;
        }
 
@@ -1949,6 +1956,16 @@ static int handle_tx_event(struct xhci_hcd *xhci,
            EP_STATE_DISABLED) {
                xhci_err(xhci, "ERROR Transfer event for disabled endpoint "
                                "or incorrect stream ring\n");
+               xhci_err(xhci, "@%016llx %08x %08x %08x %08x\n",
+                        (unsigned long long) xhci_trb_virt_to_dma(
+                                xhci->event_ring->deq_seg,
+                                xhci->event_ring->dequeue),
+                        lower_32_bits(le64_to_cpu(event->buffer)),
+                        upper_32_bits(le64_to_cpu(event->buffer)),
+                        le32_to_cpu(event->transfer_len),
+                        le32_to_cpu(event->flags));
+               xhci_dbg(xhci, "Event ring:\n");
+               xhci_debug_segment(xhci, xhci->event_ring->deq_seg);
                return -ENODEV;
        }