diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2011-04-05 13:36:04 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-04-13 19:36:05 -0400 |
commit | 7d670a2ed770a3405a7edb1159e3fa9b3f43fe46 (patch) | |
tree | e84a3b517849d73f3b64cc571f0dbc79f196e65c /drivers/usb/host/uhci-hcd.c | |
parent | 4661ffc91befc8c5ee080720120da1d53851060a (diff) |
USB: UHCI: remove uses of hcd->state
This patch (as1456) removes all uses of hcd->state from the uhci-hcd
driver, as part of the overall strategy to eliminate hcd->state
completely. Now when a controller dies we call usb_hc_died()
directly, instead of relying on the core interrupt handler to see that
hcd->state has changed to HC_STATE_HALT and make the call for us.
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 | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index 4f65b14e5e08..73db5569f57b 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
@@ -139,7 +139,6 @@ static void finish_reset(struct uhci_hcd *uhci) | |||
139 | uhci->port_c_suspend = uhci->resuming_ports = 0; | 139 | uhci->port_c_suspend = uhci->resuming_ports = 0; |
140 | uhci->rh_state = UHCI_RH_RESET; | 140 | uhci->rh_state = UHCI_RH_RESET; |
141 | uhci->is_stopped = UHCI_IS_STOPPED; | 141 | uhci->is_stopped = UHCI_IS_STOPPED; |
142 | uhci_to_hcd(uhci)->state = HC_STATE_HALT; | ||
143 | clear_bit(HCD_FLAG_POLL_RH, &uhci_to_hcd(uhci)->flags); | 142 | clear_bit(HCD_FLAG_POLL_RH, &uhci_to_hcd(uhci)->flags); |
144 | 143 | ||
145 | uhci->dead = 0; /* Full reset resurrects the controller */ | 144 | uhci->dead = 0; /* Full reset resurrects the controller */ |
@@ -188,10 +187,6 @@ static void configure_hc(struct uhci_hcd *uhci) | |||
188 | outw(uhci->frame_number & UHCI_MAX_SOF_NUMBER, | 187 | outw(uhci->frame_number & UHCI_MAX_SOF_NUMBER, |
189 | uhci->io_addr + USBFRNUM); | 188 | uhci->io_addr + USBFRNUM); |
190 | 189 | ||
191 | /* Mark controller as not halted before we enable interrupts */ | ||
192 | uhci_to_hcd(uhci)->state = HC_STATE_SUSPENDED; | ||
193 | mb(); | ||
194 | |||
195 | /* Enable PIRQ */ | 190 | /* Enable PIRQ */ |
196 | pci_write_config_word(pdev, USBLEGSUP, USBLEGSUP_DEFAULT); | 191 | pci_write_config_word(pdev, USBLEGSUP, USBLEGSUP_DEFAULT); |
197 | 192 | ||
@@ -360,7 +355,6 @@ __acquires(uhci->lock) | |||
360 | 355 | ||
361 | static void start_rh(struct uhci_hcd *uhci) | 356 | static void start_rh(struct uhci_hcd *uhci) |
362 | { | 357 | { |
363 | uhci_to_hcd(uhci)->state = HC_STATE_RUNNING; | ||
364 | uhci->is_stopped = 0; | 358 | uhci->is_stopped = 0; |
365 | 359 | ||
366 | /* Mark it configured and running with a 64-byte max packet. | 360 | /* Mark it configured and running with a 64-byte max packet. |
@@ -449,6 +443,7 @@ static irqreturn_t uhci_irq(struct usb_hcd *hcd) | |||
449 | lprintk(errbuf); | 443 | lprintk(errbuf); |
450 | } | 444 | } |
451 | uhci_hc_died(uhci); | 445 | uhci_hc_died(uhci); |
446 | usb_hc_died(hcd); | ||
452 | 447 | ||
453 | /* Force a callback in case there are | 448 | /* Force a callback in case there are |
454 | * pending unlinks */ | 449 | * pending unlinks */ |