Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cdc647a9 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman
Browse files

USB: another ehci_iaa_watchdog fix

This patch, suggested by Alan Stern, fixes the hung USB issues
on my notebook from suspend/resume cycles.

It does so by eliminating some confusion about the internal state
machine associated with unlinking from the EHCI async schedule ring,
which caused a recent regression:

  http://bugzilla.kernel.org/show_bug.cgi?id=10345



Signed-off-by: default avatarMark Lord <mlord@pobox.com>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 49115b7c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -135,8 +135,6 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
		hcd->state = HC_STATE_QUIESCING;
	}
	ehci->command = ehci_readl(ehci, &ehci->regs->command);
	if (ehci->reclaim)
		end_unlink_async(ehci);
	ehci_work(ehci);

	/* Unlike other USB host controller types, EHCI doesn't have
@@ -180,6 +178,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
	ehci_halt (ehci);
	hcd->state = HC_STATE_SUSPENDED;

	if (ehci->reclaim)
		end_unlink_async(ehci);

	/* allow remote wakeup */
	mask = INTR_MASK;
	if (!device_may_wakeup(&hcd->self.root_hub->dev))