diff options
-rw-r--r-- | drivers/usb/host/uhci-hcd.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index 73db5569f57b..83344d688ff0 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
@@ -140,8 +140,6 @@ static void finish_reset(struct uhci_hcd *uhci) | |||
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 | clear_bit(HCD_FLAG_POLL_RH, &uhci_to_hcd(uhci)->flags); | 142 | clear_bit(HCD_FLAG_POLL_RH, &uhci_to_hcd(uhci)->flags); |
143 | |||
144 | uhci->dead = 0; /* Full reset resurrects the controller */ | ||
145 | } | 143 | } |
146 | 144 | ||
147 | /* | 145 | /* |
@@ -837,16 +835,17 @@ static int uhci_pci_resume(struct usb_hcd *hcd, bool hibernated) | |||
837 | spin_lock_irq(&uhci->lock); | 835 | spin_lock_irq(&uhci->lock); |
838 | 836 | ||
839 | /* Make sure resume from hibernation re-enumerates everything */ | 837 | /* Make sure resume from hibernation re-enumerates everything */ |
840 | if (hibernated) | 838 | if (hibernated) { |
841 | uhci_hc_died(uhci); | 839 | uhci_reset_hc(to_pci_dev(uhci_dev(uhci)), uhci->io_addr); |
840 | finish_reset(uhci); | ||
841 | } | ||
842 | 842 | ||
843 | /* The firmware or a boot kernel may have changed the controller | 843 | /* The firmware may have changed the controller settings during |
844 | * settings during a system wakeup. Check it and reconfigure | 844 | * a system wakeup. Check it and reconfigure to avoid problems. |
845 | * to avoid problems. | ||
846 | */ | 845 | */ |
847 | check_and_reset_hc(uhci); | 846 | else { |
848 | 847 | check_and_reset_hc(uhci); | |
849 | /* If the controller was dead before, it's back alive now */ | 848 | } |
850 | configure_hc(uhci); | 849 | configure_hc(uhci); |
851 | 850 | ||
852 | /* Tell the core if the controller had to be reset */ | 851 | /* Tell the core if the controller had to be reset */ |