]> 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 4e4f587c144b7ef84adc0f7c3e5c4638c2fc612e..b90e1386418b429f05eada3487117d4fbba50186 100644 (file)
@@ -155,10 +155,6 @@ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring, bool consumer
        while (last_trb(xhci, ring, ring->deq_seg, next)) {
                if (consumer && last_trb_on_last_seg(xhci, ring, ring->deq_seg, next)) {
                        ring->cycle_state = (ring->cycle_state ? 0 : 1);
-                       if (!in_interrupt())
-                               xhci_dbg(xhci, "Toggle cycle state for ring %p = %i\n",
-                                               ring,
-                                               (unsigned int) ring->cycle_state);
                }
                ring->deq_seg = ring->deq_seg->next;
                ring->dequeue = ring->deq_seg->trbs;
@@ -231,10 +227,6 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring,
                        /* Toggle the cycle bit after the last ring segment. */
                        if (last_trb_on_last_seg(xhci, ring, ring->enq_seg, next)) {
                                ring->cycle_state = (ring->cycle_state ? 0 : 1);
-                               if (!in_interrupt())
-                                       xhci_dbg(xhci, "Toggle cycle state for ring %p = %i\n",
-                                                       ring,
-                                                       (unsigned int) ring->cycle_state);
                        }
                }
                ring->enq_seg = ring->enq_seg->next;
@@ -560,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;
@@ -705,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
@@ -1627,7 +1616,6 @@ static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td,
        ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index);
        trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
 
-       xhci_debug_trb(xhci, xhci->event_ring->dequeue);
        switch (trb_comp_code) {
        case COMP_SUCCESS:
                if (event_trb == ep_ring->dequeue) {
@@ -1945,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;
        }
 
@@ -1958,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;
        }
 
@@ -2477,11 +2485,6 @@ static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring,
                        /* Toggle the cycle bit after the last ring segment. */
                        if (last_trb_on_last_seg(xhci, ring, ring->enq_seg, next)) {
                                ring->cycle_state = (ring->cycle_state ? 0 : 1);
-                               if (!in_interrupt()) {
-                                       xhci_dbg(xhci, "queue_trb: Toggle cycle "
-                                               "state for ring %p = %i\n",
-                                               ring, (unsigned int)ring->cycle_state);
-                               }
                        }
                        ring->enq_seg = ring->enq_seg->next;
                        ring->enqueue = ring->enq_seg->trbs;
@@ -2895,15 +2898,6 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
        }
        /* FIXME: this doesn't deal with URB_ZERO_PACKET - need one more */
 
-       if (!in_interrupt())
-               xhci_dbg(xhci, "ep %#x - urb len = %#x (%d), "
-                               "addr = %#llx, num_trbs = %d\n",
-                               urb->ep->desc.bEndpointAddress,
-                               urb->transfer_buffer_length,
-                               urb->transfer_buffer_length,
-                               (unsigned long long)urb->transfer_dma,
-                               num_trbs);
-
        ret = prepare_transfer(xhci, xhci->devs[slot_id],
                        ep_index, urb->stream_id,
                        num_trbs, urb, 0, false, mem_flags);
@@ -3024,9 +3018,6 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
        if (!urb->setup_packet)
                return -EINVAL;
 
-       if (!in_interrupt())
-               xhci_dbg(xhci, "Queueing ctrl tx for slot id %d, ep %d\n",
-                               slot_id, ep_index);
        /* 1 TRB for setup, 1 for status */
        num_trbs = 2;
        /*
@@ -3218,15 +3209,6 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
                return -EINVAL;
        }
 
-       if (!in_interrupt())
-               xhci_dbg(xhci, "ep %#x - urb len = %#x (%d),"
-                               " addr = %#llx, num_tds = %d\n",
-                               urb->ep->desc.bEndpointAddress,
-                               urb->transfer_buffer_length,
-                               urb->transfer_buffer_length,
-                               (unsigned long long)urb->transfer_dma,
-                               num_tds);
-
        start_addr = (u64) urb->transfer_dma;
        start_trb = &ep_ring->enqueue->generic;
        start_cycle = ep_ring->cycle_state;