aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-sm501.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ohci-sm501.c')
-rw-r--r--drivers/usb/host/ohci-sm501.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/usb/host/ohci-sm501.c b/drivers/usb/host/ohci-sm501.c
index 4ea92762fb28..77204f001b9a 100644
--- a/drivers/usb/host/ohci-sm501.c
+++ b/drivers/usb/host/ohci-sm501.c
@@ -75,7 +75,6 @@ static const struct hc_driver ohci_sm501_hc_driver = {
75 */ 75 */
76 .hub_status_data = ohci_hub_status_data, 76 .hub_status_data = ohci_hub_status_data,
77 .hub_control = ohci_hub_control, 77 .hub_control = ohci_hub_control,
78 .hub_irq_enable = ohci_rhsc_enable,
79#ifdef CONFIG_PM 78#ifdef CONFIG_PM
80 .bus_suspend = ohci_bus_suspend, 79 .bus_suspend = ohci_bus_suspend,
81 .bus_resume = ohci_bus_resume, 80 .bus_resume = ohci_bus_resume,
@@ -199,7 +198,8 @@ static int ohci_hcd_sm501_drv_remove(struct platform_device *pdev)
199 usb_put_hcd(hcd); 198 usb_put_hcd(hcd);
200 dma_release_declared_memory(&pdev->dev); 199 dma_release_declared_memory(&pdev->dev);
201 mem = platform_get_resource(pdev, IORESOURCE_MEM, 1); 200 mem = platform_get_resource(pdev, IORESOURCE_MEM, 1);
202 release_mem_region(mem->start, mem->end - mem->start + 1); 201 if (mem)
202 release_mem_region(mem->start, mem->end - mem->start + 1);
203 203
204 /* mask interrupts and disable power */ 204 /* mask interrupts and disable power */
205 205
@@ -224,24 +224,26 @@ static int ohci_sm501_suspend(struct platform_device *pdev, pm_message_t msg)
224 224
225 sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 0); 225 sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 0);
226 ohci_to_hcd(ohci)->state = HC_STATE_SUSPENDED; 226 ohci_to_hcd(ohci)->state = HC_STATE_SUSPENDED;
227 dev->power.power_state = PMSG_SUSPEND;
228 return 0; 227 return 0;
229} 228}
230 229
231static int ohci_sm501_resume(struct platform_device *pdev) 230static int ohci_sm501_resume(struct platform_device *pdev)
232{ 231{
233 struct device *dev = &pdev->dev; 232 struct device *dev = &pdev->dev;
234 struct ohci_hcd *ohci = hcd_to_ohci(platform_get_drvdata(pdev)); 233 struct usb_hcd *hcd = platform_get_drvdata(pdev);
234 struct ohci_hcd *ohci = hcd_to_ohci(hcd);
235 235
236 if (time_before(jiffies, ohci->next_statechange)) 236 if (time_before(jiffies, ohci->next_statechange))
237 msleep(5); 237 msleep(5);
238 ohci->next_statechange = jiffies; 238 ohci->next_statechange = jiffies;
239 239
240 sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 1); 240 sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 1);
241 dev->power.power_state = PMSG_ON; 241 ohci_finish_controller_resume(hcd);
242 usb_hcd_resume_root_hub(platform_get_drvdata(pdev));
243 return 0; 242 return 0;
244} 243}
244#else
245#define ohci_sm501_suspend NULL
246#define ohci_sm501_resume NULL
245#endif 247#endif
246 248
247/*-------------------------------------------------------------------------*/ 249/*-------------------------------------------------------------------------*/
@@ -253,10 +255,8 @@ static struct platform_driver ohci_hcd_sm501_driver = {
253 .probe = ohci_hcd_sm501_drv_probe, 255 .probe = ohci_hcd_sm501_drv_probe,
254 .remove = ohci_hcd_sm501_drv_remove, 256 .remove = ohci_hcd_sm501_drv_remove,
255 .shutdown = usb_hcd_platform_shutdown, 257 .shutdown = usb_hcd_platform_shutdown,
256#ifdef CONFIG_PM
257 .suspend = ohci_sm501_suspend, 258 .suspend = ohci_sm501_suspend,
258 .resume = ohci_sm501_resume, 259 .resume = ohci_sm501_resume,
259#endif
260 .driver = { 260 .driver = {
261 .owner = THIS_MODULE, 261 .owner = THIS_MODULE,
262 .name = "sm501-usb", 262 .name = "sm501-usb",