diff options
Diffstat (limited to 'drivers/usb/host/xhci.c')
| -rw-r--r-- | drivers/usb/host/xhci.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index e1963d4a430..36641a7f237 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -106,6 +106,9 @@ int xhci_halt(struct xhci_hcd *xhci)  			STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC);  	if (!ret)  		xhci->xhc_state |= XHCI_STATE_HALTED; +	else +		xhci_warn(xhci, "Host not halted after %u microseconds.\n", +				XHCI_MAX_HALT_USEC);  	return ret;  } @@ -664,11 +667,11 @@ static void xhci_save_registers(struct xhci_hcd *xhci)  	xhci->s3.dev_nt = xhci_readl(xhci, &xhci->op_regs->dev_notification);  	xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);  	xhci->s3.config_reg = xhci_readl(xhci, &xhci->op_regs->config_reg); -	xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending); -	xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);  	xhci->s3.erst_size = xhci_readl(xhci, &xhci->ir_set->erst_size);  	xhci->s3.erst_base = xhci_read_64(xhci, &xhci->ir_set->erst_base);  	xhci->s3.erst_dequeue = xhci_read_64(xhci, &xhci->ir_set->erst_dequeue); +	xhci->s3.irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending); +	xhci->s3.irq_control = xhci_readl(xhci, &xhci->ir_set->irq_control);  }  static void xhci_restore_registers(struct xhci_hcd *xhci) @@ -677,10 +680,11 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)  	xhci_writel(xhci, xhci->s3.dev_nt, &xhci->op_regs->dev_notification);  	xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr);  	xhci_writel(xhci, xhci->s3.config_reg, &xhci->op_regs->config_reg); -	xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending); -	xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);  	xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);  	xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base); +	xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue); +	xhci_writel(xhci, xhci->s3.irq_pending, &xhci->ir_set->irq_pending); +	xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);  }  static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)  |