提交 f37be9b9 编写于 作者: A Alan Stern 提交者: Greg Kroah-Hartman

[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: NAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 cb97c5c9
...@@ -161,8 +161,8 @@ static void configure_hc(struct uhci_hcd *uhci) ...@@ -161,8 +161,8 @@ static void configure_hc(struct uhci_hcd *uhci)
/* Set the current frame number */ /* Set the current frame number */
outw(uhci->frame_number, uhci->io_addr + USBFRNUM); outw(uhci->frame_number, uhci->io_addr + USBFRNUM);
/* Mark controller as running before we enable interrupts */ /* Mark controller as not halted before we enable interrupts */
uhci_to_hcd(uhci)->state = HC_STATE_RUNNING; uhci_to_hcd(uhci)->state = HC_STATE_SUSPENDED;
mb(); mb();
/* Enable PIRQ */ /* Enable PIRQ */
...@@ -263,6 +263,7 @@ __acquires(uhci->lock) ...@@ -263,6 +263,7 @@ __acquires(uhci->lock)
static void start_rh(struct uhci_hcd *uhci) static void start_rh(struct uhci_hcd *uhci)
{ {
uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
uhci->is_stopped = 0; uhci->is_stopped = 0;
smp_wmb(); smp_wmb();
...@@ -708,7 +709,6 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message) ...@@ -708,7 +709,6 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message)
if (uhci->rh_state > UHCI_RH_SUSPENDED) { if (uhci->rh_state > UHCI_RH_SUSPENDED) {
dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n"); dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n");
hcd->state = HC_STATE_RUNNING;
rc = -EBUSY; rc = -EBUSY;
goto done; goto done;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册