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: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
David Brownell 2008-01-24 12:39:43 -08:00 committed by Greg Kroah-Hartman
parent b75be4abf1
commit cd4cdc93ce

View File

@ -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)
* 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,