Commit cd4cdc93 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

usb: ehci, remove false clear-reset path

Some of the "EHCI ports reset forever" problems may be explained by
code paths which wrongly flagged resets as complete.  This removes
two such paths; the ehci_hub_status_data() path should be the only one
to have an effect, since it was already properly flagged on the other
path.  (Issue noted by Minhyoung Kim <a9a9@lge.com>.)
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent b75be4ab
...@@ -411,10 +411,8 @@ static int check_reset_complete ( ...@@ -411,10 +411,8 @@ static int check_reset_complete (
u32 __iomem *status_reg, u32 __iomem *status_reg,
int port_status int port_status
) { ) {
if (!(port_status & PORT_CONNECT)) { if (!(port_status & PORT_CONNECT))
ehci->reset_done [index] = 0;
return port_status; return port_status;
}
/* if reset finished and it's still not enabled -- handoff */ /* if reset finished and it's still not enabled -- handoff */
if (!(port_status & PORT_PE)) { if (!(port_status & PORT_PE)) {
...@@ -493,8 +491,6 @@ ehci_hub_status_data (struct usb_hcd *hcd, char *buf) ...@@ -493,8 +491,6 @@ ehci_hub_status_data (struct usb_hcd *hcd, char *buf)
* controller by the user. * controller by the user.
*/ */
if (!(temp & PORT_CONNECT))
ehci->reset_done [i] = 0;
if ((temp & mask) != 0 if ((temp & mask) != 0
|| ((temp & PORT_RESUME) != 0 || ((temp & PORT_RESUME) != 0
&& time_after_eq(jiffies, && time_after_eq(jiffies,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment