diff options
Diffstat (limited to 'drivers/usb/host/xhci.c')
| -rw-r--r-- | drivers/usb/host/xhci.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 03d1e552769b..500865975687 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -3814,7 +3814,6 @@ static void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)  		virt_dev->eps[i].ep_state &= ~EP_STOP_CMD_PENDING;  		del_timer_sync(&virt_dev->eps[i].stop_cmd_timer);  	} -	xhci_debugfs_remove_slot(xhci, udev->slot_id);  	virt_dev->udev = NULL;  	ret = xhci_disable_slot(xhci, udev->slot_id);  	if (ret) @@ -3832,6 +3831,8 @@ int xhci_disable_slot(struct xhci_hcd *xhci, u32 slot_id)  	if (!command)  		return -ENOMEM; +	xhci_debugfs_remove_slot(xhci, slot_id); +  	spin_lock_irqsave(&xhci->lock, flags);  	/* Don't disable the slot if the host controller is dead. */  	state = readl(&xhci->op_regs->status); @@ -5217,7 +5218,7 @@ static const struct hc_driver xhci_hc_driver = {  	 * generic hardware linkage  	 */  	.irq =			xhci_irq, -	.flags =		HCD_MEMORY | HCD_USB3 | HCD_SHARED, +	.flags =		HCD_MEMORY | HCD_DMA | HCD_USB3 | HCD_SHARED,  	/*  	 * basic lifecycle operations  |