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:
parent
b75be4abf1
commit
cd4cdc93ce
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user