diff options
Diffstat (limited to 'drivers/usb/host/ohci-pci.c')
-rw-r--r-- | drivers/usb/host/ohci-pci.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c index b268537e389e..3732db7d68eb 100644 --- a/drivers/usb/host/ohci-pci.c +++ b/drivers/usb/host/ohci-pci.c | |||
@@ -135,6 +135,11 @@ static int ohci_pci_suspend (struct usb_hcd *hcd, pm_message_t message) | |||
135 | } | 135 | } |
136 | ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); | 136 | ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable); |
137 | (void)ohci_readl(ohci, &ohci->regs->intrdisable); | 137 | (void)ohci_readl(ohci, &ohci->regs->intrdisable); |
138 | |||
139 | /* make sure snapshot being resumed re-enumerates everything */ | ||
140 | if (message.event == PM_EVENT_PRETHAW) | ||
141 | ohci_usb_reset(ohci); | ||
142 | |||
138 | clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); | 143 | clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); |
139 | bail: | 144 | bail: |
140 | spin_unlock_irqrestore (&ohci->lock, flags); | 145 | spin_unlock_irqrestore (&ohci->lock, flags); |
@@ -171,11 +176,14 @@ static const struct hc_driver ohci_pci_hc_driver = { | |||
171 | */ | 176 | */ |
172 | .reset = ohci_pci_reset, | 177 | .reset = ohci_pci_reset, |
173 | .start = ohci_pci_start, | 178 | .start = ohci_pci_start, |
179 | .stop = ohci_stop, | ||
180 | .shutdown = ohci_shutdown, | ||
181 | |||
174 | #ifdef CONFIG_PM | 182 | #ifdef CONFIG_PM |
183 | /* these suspend/resume entries are for upstream PCI glue ONLY */ | ||
175 | .suspend = ohci_pci_suspend, | 184 | .suspend = ohci_pci_suspend, |
176 | .resume = ohci_pci_resume, | 185 | .resume = ohci_pci_resume, |
177 | #endif | 186 | #endif |
178 | .stop = ohci_stop, | ||
179 | 187 | ||
180 | /* | 188 | /* |
181 | * managing i/o requests and associated device resources | 189 | * managing i/o requests and associated device resources |
@@ -194,6 +202,7 @@ static const struct hc_driver ohci_pci_hc_driver = { | |||
194 | */ | 202 | */ |
195 | .hub_status_data = ohci_hub_status_data, | 203 | .hub_status_data = ohci_hub_status_data, |
196 | .hub_control = ohci_hub_control, | 204 | .hub_control = ohci_hub_control, |
205 | .hub_irq_enable = ohci_rhsc_enable, | ||
197 | #ifdef CONFIG_PM | 206 | #ifdef CONFIG_PM |
198 | .bus_suspend = ohci_bus_suspend, | 207 | .bus_suspend = ohci_bus_suspend, |
199 | .bus_resume = ohci_bus_resume, | 208 | .bus_resume = ohci_bus_resume, |
@@ -224,6 +233,8 @@ static struct pci_driver ohci_pci_driver = { | |||
224 | .suspend = usb_hcd_pci_suspend, | 233 | .suspend = usb_hcd_pci_suspend, |
225 | .resume = usb_hcd_pci_resume, | 234 | .resume = usb_hcd_pci_resume, |
226 | #endif | 235 | #endif |
236 | |||
237 | .shutdown = usb_hcd_pci_shutdown, | ||
227 | }; | 238 | }; |
228 | 239 | ||
229 | 240 | ||