diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2009-08-07 17:04:49 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-09-23 09:46:17 -0400 |
commit | 2d3f1fac7ee8bb4c6fad40f838488edbeabb0c50 (patch) | |
tree | b1887263a969025bb53f801ca18d0c0a5cf9f34e /drivers/usb/host/xhci.h | |
parent | 47aded8ade9fee6779b121b2b156235f261239d7 (diff) |
USB: xhci: Support full speed devices.
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>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/xhci.h')
-rw-r--r-- | drivers/usb/host/xhci.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index a8fe21762052..6aecede77ff6 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h | |||
@@ -601,6 +601,8 @@ struct xhci_ep_ctx { | |||
601 | /* bit 7 is Host Initiate Disable - for disabling stream selection */ | 601 | /* bit 7 is Host Initiate Disable - for disabling stream selection */ |
602 | #define MAX_BURST(p) (((p)&0xff) << 8) | 602 | #define MAX_BURST(p) (((p)&0xff) << 8) |
603 | #define MAX_PACKET(p) (((p)&0xffff) << 16) | 603 | #define MAX_PACKET(p) (((p)&0xffff) << 16) |
604 | #define MAX_PACKET_MASK (0xffff << 16) | ||
605 | #define MAX_PACKET_DECODED(p) (((p) >> 16) & 0xffff) | ||
604 | 606 | ||
605 | 607 | ||
606 | /** | 608 | /** |