Merge tag 'for-usb-next-2012-04-08' of git://git.kernel.org/pub/scm/linux/kernel...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Apr 2013 23:40:19 +0000 (16:40 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Apr 2013 23:40:19 +0000 (16:40 -0700)
Sarah writes:

xHCI misc cleanup patches for 3.10

Hi Greg,

Here's three cleanup patches for 3.10.  Nothing big here, just some debugging
output changes, a macro rename, and a math macro change that should have no
behavioral effects.

Tested on the Intel Panther Point xHCI host, with USB storage and mouse, with
xHCI debugging turned on.  I don't have the TI host that causes the debugging
output changes to trigger.

Sarah Sharp

drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h

index 6dc238c..965b539 100644 (file)
@@ -51,7 +51,7 @@ static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci,
                return NULL;
        }
 
-       memset(seg->trbs, 0, SEGMENT_SIZE);
+       memset(seg->trbs, 0, TRB_SEGMENT_SIZE);
        /* If the cycle state is 0, set the cycle bit to 1 for all the TRBs */
        if (cycle_state == 0) {
                for (i = 0; i < TRBS_PER_SEGMENT; i++)
@@ -467,7 +467,7 @@ struct xhci_ring *xhci_dma_to_transfer_ring(
 {
        if (ep->ep_state & EP_HAS_STREAMS)
                return radix_tree_lookup(&ep->stream_info->trb_address_map,
-                               address >> SEGMENT_SHIFT);
+                               address >> TRB_SEGMENT_SHIFT);
        return ep->ring;
 }
 
@@ -478,7 +478,7 @@ static struct xhci_ring *dma_to_stream_ring(
                u64 address)
 {
        return radix_tree_lookup(&stream_info->trb_address_map,
-                       address >> SEGMENT_SHIFT);
+                       address >> TRB_SEGMENT_SHIFT);
 }
 #endif /* CONFIG_USB_XHCI_HCD_DEBUGGING */
 
@@ -514,7 +514,7 @@ static int xhci_test_radix_tree(struct xhci_hcd *xhci,
 
                cur_ring = stream_info->stream_rings[cur_stream];
                for (addr = cur_ring->first_seg->dma;
-                               addr < cur_ring->first_seg->dma + SEGMENT_SIZE;
+                               addr < cur_ring->first_seg->dma + TRB_SEGMENT_SIZE;
                                addr += trb_size) {
                        mapped_ring = dma_to_stream_ring(stream_info, addr);
                        if (cur_ring != mapped_ring) {
@@ -662,7 +662,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci,
                                cur_stream, (unsigned long long) addr);
 
                key = (unsigned long)
-                       (cur_ring->first_seg->dma >> SEGMENT_SHIFT);
+                       (cur_ring->first_seg->dma >> TRB_SEGMENT_SHIFT);
                ret = radix_tree_insert(&stream_info->trb_address_map,
                                key, cur_ring);
                if (ret) {
@@ -693,7 +693,7 @@ cleanup_rings:
                if (cur_ring) {
                        addr = cur_ring->first_seg->dma;
                        radix_tree_delete(&stream_info->trb_address_map,
-                                       addr >> SEGMENT_SHIFT);
+                                       addr >> TRB_SEGMENT_SHIFT);
                        xhci_ring_free(xhci, cur_ring);
                        stream_info->stream_rings[cur_stream] = NULL;
                }
@@ -764,7 +764,7 @@ void xhci_free_stream_info(struct xhci_hcd *xhci,
                if (cur_ring) {
                        addr = cur_ring->first_seg->dma;
                        radix_tree_delete(&stream_info->trb_address_map,
-                                       addr >> SEGMENT_SHIFT);
+                                       addr >> TRB_SEGMENT_SHIFT);
                        xhci_ring_free(xhci, cur_ring);
                        stream_info->stream_rings[cur_stream] = NULL;
                }
@@ -2305,7 +2305,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
         * so we pick the greater alignment need.
         */
        xhci->segment_pool = dma_pool_create("xHCI ring segments", dev,
-                       SEGMENT_SIZE, 64, xhci->page_size);
+                       TRB_SEGMENT_SIZE, 64, xhci->page_size);
 
        /* See Table 46 and Note on Figure 55 */
        xhci->device_pool = dma_pool_create("xHCI input/output contexts", dev,
index 5156b72..b4aa79d 100644 (file)
@@ -417,9 +417,9 @@ static void compliance_mode_recovery(unsigned long arg)
                         * Compliance Mode Detected. Letting USB Core
                         * handle the Warm Reset
                         */
-                       xhci_dbg(xhci, "Compliance Mode Detected->Port %d!\n",
+                       xhci_dbg(xhci, "Compliance mode detected->port %d\n",
                                        i + 1);
-                       xhci_dbg(xhci, "Attempting Recovery routine!\n");
+                       xhci_dbg(xhci, "Attempting compliance mode recovery\n");
                        hcd = xhci->shared_hcd;
 
                        if (hcd->state == HC_STATE_SUSPENDED)
@@ -457,7 +457,7 @@ static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci)
        set_timer_slack(&xhci->comp_mode_recovery_timer,
                        msecs_to_jiffies(COMP_MODE_RCVRY_MSECS));
        add_timer(&xhci->comp_mode_recovery_timer);
-       xhci_dbg(xhci, "Compliance Mode Recovery Timer Initialized.\n");
+       xhci_dbg(xhci, "Compliance mode recovery timer initialized\n");
 }
 
 /*
@@ -733,8 +733,11 @@ void xhci_stop(struct usb_hcd *hcd)
 
        /* Deleting Compliance Mode Recovery Timer */
        if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
-                       (!(xhci_all_ports_seen_u0(xhci))))
+                       (!(xhci_all_ports_seen_u0(xhci)))) {
                del_timer_sync(&xhci->comp_mode_recovery_timer);
+               xhci_dbg(xhci, "%s: compliance mode recovery timer deleted\n",
+                               __func__);
+       }
 
        if (xhci->quirks & XHCI_AMD_PLL_FIX)
                usb_amd_dev_put();
@@ -930,7 +933,8 @@ int xhci_suspend(struct xhci_hcd *xhci)
        if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
                        (!(xhci_all_ports_seen_u0(xhci)))) {
                del_timer_sync(&xhci->comp_mode_recovery_timer);
-               xhci_dbg(xhci, "Compliance Mode Recovery Timer Deleted!\n");
+               xhci_dbg(xhci, "%s: compliance mode recovery timer deleted\n",
+                               __func__);
        }
 
        /* step 5: remove core well power */
index 6358271..29c978e 100644 (file)
@@ -1238,8 +1238,8 @@ union xhci_trb {
 #define TRBS_PER_SEGMENT       64
 /* Allow two commands + a link TRB, along with any reserved command TRBs */
 #define MAX_RSVD_CMD_TRBS      (TRBS_PER_SEGMENT - 3)
-#define SEGMENT_SIZE           (TRBS_PER_SEGMENT*16)
-#define SEGMENT_SHIFT          (__ffs(SEGMENT_SIZE))
+#define TRB_SEGMENT_SIZE       (TRBS_PER_SEGMENT*16)
+#define TRB_SEGMENT_SHIFT      (ilog2(TRB_SEGMENT_SIZE))
 /* TRB buffer pointers can't cross 64KB boundaries */
 #define TRB_MAX_BUFF_SHIFT             16
 #define TRB_MAX_BUFF_SIZE      (1 << TRB_MAX_BUFF_SHIFT)