|
@@ -104,9 +104,10 @@ int xhci_halt(struct xhci_hcd *xhci)
|
|
|
|
|
|
ret = handshake(xhci, &xhci->op_regs->status,
|
|
|
STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC);
|
|
|
- if (!ret)
|
|
|
+ if (!ret) {
|
|
|
xhci->xhc_state |= XHCI_STATE_HALTED;
|
|
|
- else
|
|
|
+ xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
|
|
|
+ } else
|
|
|
xhci_warn(xhci, "Host not halted after %u microseconds.\n",
|
|
|
XHCI_MAX_HALT_USEC);
|
|
|
return ret;
|
|
@@ -485,6 +486,7 @@ static int xhci_run_finished(struct xhci_hcd *xhci)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
|
|
+ xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
|
|
|
|
|
if (xhci->quirks & XHCI_NEC_HOST)
|
|
|
xhci_ring_cmd_db(xhci);
|