|
@@ -1792,8 +1792,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
|
|
|
int size;
|
|
|
int i, j, num_ports;
|
|
|
|
|
|
- if (timer_pending(&xhci->cmd_timer))
|
|
|
- del_timer_sync(&xhci->cmd_timer);
|
|
|
+ del_timer_sync(&xhci->cmd_timer);
|
|
|
|
|
|
/* Free the Event Ring Segment Table and the actual Event Ring */
|
|
|
size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries);
|
|
@@ -2321,6 +2320,10 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
|
|
|
|
|
|
INIT_LIST_HEAD(&xhci->cmd_list);
|
|
|
|
|
|
+ /* init command timeout timer */
|
|
|
+ setup_timer(&xhci->cmd_timer, xhci_handle_command_timeout,
|
|
|
+ (unsigned long)xhci);
|
|
|
+
|
|
|
page_size = readl(&xhci->op_regs->page_size);
|
|
|
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
|
|
"Supported page size register = 0x%x", page_size);
|
|
@@ -2505,10 +2508,6 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
|
|
|
"Wrote ERST address to ir_set 0.");
|
|
|
xhci_print_ir_set(xhci, 0);
|
|
|
|
|
|
- /* init command timeout timer */
|
|
|
- setup_timer(&xhci->cmd_timer, xhci_handle_command_timeout,
|
|
|
- (unsigned long)xhci);
|
|
|
-
|
|
|
/*
|
|
|
* XXX: Might need to set the Interrupter Moderation Register to
|
|
|
* something other than the default (~1ms minimum between interrupts).
|