]> git.baikalelectronics.ru Git - kernel.git/commit
usb: Fix PS3 EHCI suspend
authorGeoff Levand <geoff@infradead.org>
Thu, 1 Dec 2011 00:40:57 +0000 (16:40 -0800)
committerGeoff Levand <geoff@infradead.org>
Thu, 8 Dec 2011 17:38:53 +0000 (09:38 -0800)
commit28c2d4171a43c5c62e02e59f48ddc5528254b7be
treeeb99177373815ded62106db7423a022520402fa7
parenteb07f3271f0a67a4e9be9efd5f36ef4491671a0c
usb: Fix PS3 EHCI suspend

The EHCI USB controller of the Cell Super Companion Chip used in the PS3
will stop the root hub after all root hub ports are suspended.  When in
this condition the ehci-hcd handshake routine will return -ETIMEDOUT and
the USB runtime suspend sequence will fail.  The STS_HLT bit will not be
set, so inspection of the frame index is used to test for the condition.

Add a new routine handshake_for_broken_root_hub() that is called after
an unsuccessful -ETIMEDOUT handshake.  On PS3 handshake_for_broken_root_hub()
will test for the condition, and if found will return success to allow the
USB suspend to complete.  For all other platforms
handshake_for_broken_root_hub() will return -ETIMEDOUT

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
drivers/usb/host/ehci-hcd.c