aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ohci-pci.c')
-rw-r--r--drivers/usb/host/ohci-pci.c13
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