usb: host: ehci-platform: add a quirk to avoid stuck
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Mon, 27 Jan 2020 08:37:42 +0000 (17:37 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Feb 2020 19:15:27 +0000 (11:15 -0800)
commitcc7eac1e4afdd151085be4d0341a155760388653
tree54e2c6370b59183d71cd3313e5cc26c30679b33a
parentbb6d3fb354c5ee8d6bde2d576eb7220ea09862b9
usb: host: ehci-platform: add a quirk to avoid stuck

Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to
be getting stuck very rarely after a full/low usb device was
disconnected. To detect/recover from such a situation, the controllers
require a special way which poll the EHCI PORTSC register and changes
the OHCI functional state.

So, this patch adds a polling timer into the ehci-platform driver,
and if the ehci driver detects the issue by the EHCI PORTSC register,
the ehci driver removes a companion device (= the OHCI controller)
to change the OHCI functional state to USB Reset once. And then,
the ehci driver adds the companion device again.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/1580114262-25029-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ehci-platform.c
include/linux/usb/ehci_def.h