https://github.com/torvalds/linux
Revision 2d1ee5904bb51ea33c6a6f4bec6b6a243e2432a8 authored by Sarah Sharp on 09 July 2010, 15:08:54 UTC, committed by Greg Kroah-Hartman on 26 July 2010, 19:00:58 UTC
When a configured device is reset, the control endpoint's ring is reused.
If control transfers to the device were issued before the device is reset,
the dequeue pointer will be somewhere in the middle of the ring.  If the
device is then issued an address with the set address command, the xHCI
driver must provide a valid input context for control endpoint zero.

The original code would give the hardware the original input context,
which had a dequeue pointer set to the top of the ring.  This would cause
the host to re-execute any control transfers until it reached the ring's
enqueue pointer.  When issuing a set address command for a device that has
just been configured and then reset, use the control endpoint's enqueue
pointer as the hardware's dequeue pointer.

Assumption:  All control transfers will be completed or cancelled before
the set address command is issued to the device.  If there are any
outstanding control transfers, this code will not work.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

1 parent 809cd1c
History
Tip revision: 2d1ee5904bb51ea33c6a6f4bec6b6a243e2432a8 authored by Sarah Sharp on 09 July 2010, 15:08:54 UTC
USB: xhci: Set EP0 dequeue ptr after reset of configured device.
Tip revision: 2d1ee59
File Mode Size
Documentation
arch
block
crypto
drivers
firmware
fs
include
init
ipc
kernel
lib
mm
net
samples
scripts
security
sound
tools
usr
virt
.gitignore -rw-r--r-- 936 bytes
.mailmap -rw-r--r-- 3.9 KB
COPYING -rw-r--r-- 18.3 KB
CREDITS -rw-r--r-- 91.8 KB
Kbuild -rw-r--r-- 2.4 KB
MAINTAINERS -rw-r--r-- 170.4 KB
Makefile -rw-r--r-- 50.1 KB
README -rw-r--r-- 17.0 KB
REPORTING-BUGS -rw-r--r-- 3.3 KB

README

back to top