aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/uhci-hcd.c
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2005-10-17 10:42:06 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2005-10-28 19:47:45 -0400
commitf37be9b9be3ebc02d2d075d7f53f7802f3e005db (patch)
tree5e1ece040e94e2453d828c7f203d4d23a7b84d5c /drivers/usb/host/uhci-hcd.c
parentcb97c5c9d0789d65d7ec42a80946fa9eb2ec5182 (diff)
[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: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/uhci-hcd.c')
-rw-r--r--drivers/usb/host/uhci-hcd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index 72cd1576d20c..d33ce3982a5f 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -161,8 +161,8 @@ static void configure_hc(struct uhci_hcd *uhci)
161 /* Set the current frame number */ 161 /* Set the current frame number */
162 outw(uhci->frame_number, uhci->io_addr + USBFRNUM); 162 outw(uhci->frame_number, uhci->io_addr + USBFRNUM);
163 163
164 /* Mark controller as running before we enable interrupts */ 164 /* Mark controller as not halted before we enable interrupts */
165 uhci_to_hcd(uhci)->state = HC_STATE_RUNNING; 165 uhci_to_hcd(uhci)->state = HC_STATE_SUSPENDED;
166 mb(); 166 mb();
167 167
168 /* Enable PIRQ */ 168 /* Enable PIRQ */
@@ -263,6 +263,7 @@ __acquires(uhci->lock)
263 263
264static void start_rh(struct uhci_hcd *uhci) 264static void start_rh(struct uhci_hcd *uhci)
265{ 265{
266 uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
266 uhci->is_stopped = 0; 267 uhci->is_stopped = 0;
267 smp_wmb(); 268 smp_wmb();
268 269
@@ -708,7 +709,6 @@ static int uhci_suspend(struct usb_hcd *hcd, pm_message_t message)
708 709
709 if (uhci->rh_state > UHCI_RH_SUSPENDED) { 710 if (uhci->rh_state > UHCI_RH_SUSPENDED) {
710 dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n"); 711 dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n");
711 hcd->state = HC_STATE_RUNNING;
712 rc = -EBUSY; 712 rc = -EBUSY;
713 goto done; 713 goto done;
714 }; 714 };