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

Commit f37be9b9 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman
Browse files

[PATCH] Fix hcd->state assignments in uhci-hcd



This patch (as581) changes the assignments to hcd->state in the uhci-hcd
driver.  It fixes part of bugzilla entry #5227.  The problem was revealed
by David's large suite of USB suspend/resume patches; this patch should go
to Linus at the same time those do.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent cb97c5c9
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -161,8 +161,8 @@ static void configure_hc(struct uhci_hcd *uhci)
	/* Set the current frame number */
	outw(uhci->frame_number, uhci->io_addr + USBFRNUM);

	/* Mark controller as running before we enable interrupts */
	uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
	/* Mark controller as not halted before we enable interrupts */
	uhci_to_hcd(uhci)->state = HC_STATE_SUSPENDED;
	mb();

	/* Enable PIRQ */
@@ -263,6 +263,7 @@ __acquires(uhci->lock)

static void start_rh(struct uhci_hcd *uhci)
{
	uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
	uhci->is_stopped = 0;
	smp_wmb();

@@ -708,7 +709,6 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message)

	if (uhci->rh_state > UHCI_RH_SUSPENDED) {
		dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n");
		hcd->state = HC_STATE_RUNNING;
		rc = -EBUSY;
		goto done;
	};