USB: xhci: Support full speed devices.
commit2f670d465897b491da0b82fd8b047b9ec75bf8c8
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Fri, 7 Aug 2009 21:04:49 +0000 (7 14:04 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 16:32:47 +0000 (5 09:32 -0700)
treea11f13f2145ce620d1a6349ce452a77f0c32b7f5
parentaf7a3a38d3eee5b30a3fa7b11d87175f2df3e1c6
USB: xhci: Support full speed devices.

commit 2d3f1fac7ee8bb4c6fad40f838488edbeabb0c50 upstream.

Full speed devices have varying max packet sizes (8, 16, 32, or 64) for
endpoint 0.  The xHCI hardware needs to know the real max packet size
that the USB core discovers after it fetches the first 8 bytes of the
device descriptor.

In order to fix this without adding a new hook to host controller drivers,
the xHCI driver looks for an updated max packet size for control
endpoints.  If it finds an updated size, it issues an evaluate context
command and waits for that command to finish.  This should only happen in
the initialization and device descriptor fetching steps in the khubd
thread, so blocking should be fine.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-hcd.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.h