From david-b@pacbell.net Thu Jan 24 12:45:59 2008 From: David Brownell Date: Thu, 24 Jan 2008 12:39:43 -0800 Subject: usb: ehci, remove false clear-reset path To: Greg KH , linux-usb@vger.kernel.org Message-ID: <200801241239.43337.david-b@pacbell.net> Content-Disposition: inline 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 .) Signed-off-by: David Brownell Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/ehci-hub.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -411,10 +411,8 @@ static int check_reset_complete ( u32 __iomem *status_reg, int port_status ) { - if (!(port_status & PORT_CONNECT)) { - ehci->reset_done [index] = 0; + if (!(port_status & PORT_CONNECT)) return port_status; - } /* if reset finished and it's still not enabled -- handoff */ if (!(port_status & PORT_PE)) { @@ -493,8 +491,6 @@ ehci_hub_status_data (struct usb_hcd *hc * controller by the user. */ - if (!(temp & PORT_CONNECT)) - ehci->reset_done [i] = 0; if ((temp & mask) != 0 || ((temp & PORT_RESUME) != 0 && time_after_eq(jiffies,