[Cbe-oss-dev] [PATCH 1/5 v3] usb: Fix PS3 EHCI suspend
Sergei Shtylyov
sshtylyov at mvista.com
Thu Dec 8 22:36:03 EST 2011
Hello.
On 08-12-2011 4:05, Geoff Levand wrote:
> 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 at infradead.org>
> ---
> v2: - Put work-around in handshake_on_error_set_halt().
> v3: - Put fix into handshake_for_broken_root_hub().
> drivers/usb/host/ehci-hcd.c | 50 +++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 50 insertions(+), 0 deletions(-)
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index 46dccbf..e0ca995 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
[...]
> @@ -230,12 +234,58 @@ static int ehci_halt (struct ehci_hcd *ehci)
> STS_HALT, STS_HALT, 16 * 125);
> }
>
> +#if defined(CONFIG_USB_SUSPEND)&& defined(CONFIG_PPC_PS3)
> +
> +/*
> + * The EHCI 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 handshake will return -ETIMEDOUT. The
> + * STS_HLT bit will not be set, so inspection of the frame index is
> + * used here to test for the condition. If the condition is found
> + * return success to allow the USB suspend to complete.
> + */
> +
> +static int handshake_for_broken_root_hub(struct ehci_hcd *ehci,
> + void __iomem *ptr, u32 mask, u32 done,
> + int usec)
The patch is apparently whitespace-damaged.
WBR, Sergei
More information about the cbe-oss-dev
mailing list