diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2005-10-17 10:42:06 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-10-28 19:47:45 -0400 |
commit | f37be9b9be3ebc02d2d075d7f53f7802f3e005db (patch) | |
tree | 5e1ece040e94e2453d828c7f203d4d23a7b84d5c /drivers/usb/host/uhci-hcd.c | |
parent | cb97c5c9d0789d65d7ec42a80946fa9eb2ec5182 (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.c | 6 |
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 | ||
264 | static void start_rh(struct uhci_hcd *uhci) | 264 | static 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 | }; |