xhci: Some Evaluate Context commands must succeed.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Mon, 7 May 2012 22:34:26 +0000 (15:34 -0700)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 18 May 2012 22:42:00 +0000 (15:42 -0700)
commit4b2665418c81c87e7a46df690a443b3d5ac5b088
treeaf4cb2f6e83ca3f7db6c7258832867247d0d0d13
parent8306095fd2c1100e8244c09bf560f97aca5a311d
xhci: Some Evaluate Context commands must succeed.

The upcoming USB 3.0 Link PM patches will introduce new API to enable
and disable low-power link states.  We must be able to disable LPM in
order to reset a device, or place the device into U3 (device suspend).
Therefore, we need to make sure the Evaluate Context command to disable
the LPM timeouts can't fail due to there being no room on the command
ring.

Introduce a new flag to the function that queues the Evaluate Context
command, command_must_succeed.  This tells the ring handler that a TRB
has already been reserved for the command (by incrementing
xhci->cmd_ring_reserved_trbs), and basically ensures that prepare_ring()
won't fail.  A similar flag was already implemented for the Configure
Endpoint command queuing function.

All functions that currently call xhci_configure_endpoint() to issue an
Evaluate Context command pass "false" for the "must_succeed" parameter,
so this patch should have no effect on current xHCI driver behavior.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h