aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-au1xxx.c
diff options
context:
space:
mode:
authorManuel Lauss <manuel.lauss@googlemail.com>2009-07-29 13:13:13 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-23 09:46:29 -0400
commit807fcb5e19877d339a4cc56f2c6ddaf3a147457a (patch)
tree561c5309e691a40dfbceef34138d6766759ed59d /drivers/usb/host/ehci-au1xxx.c
parent64aebe73152ab3a9f5f426baaf65db632bd72c13 (diff)
USB: au1xxx: add dev_pm_ops
move both ohci-au1xxx and ehci-au1xxx over to dev_pm_ops. Tested on Au1200. Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-au1xxx.c')
-rw-r--r--drivers/usb/host/ehci-au1xxx.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/usb/host/ehci-au1xxx.c b/drivers/usb/host/ehci-au1xxx.c
index 59d208d94d4..ed77be76d6b 100644
--- a/drivers/usb/host/ehci-au1xxx.c
+++ b/drivers/usb/host/ehci-au1xxx.c
@@ -199,10 +199,9 @@ static int ehci_hcd_au1xxx_drv_remove(struct platform_device *pdev)
199} 199}
200 200
201#ifdef CONFIG_PM 201#ifdef CONFIG_PM
202static int ehci_hcd_au1xxx_drv_suspend(struct platform_device *pdev, 202static int ehci_hcd_au1xxx_drv_suspend(struct device *dev)
203 pm_message_t message)
204{ 203{
205 struct usb_hcd *hcd = platform_get_drvdata(pdev); 204 struct usb_hcd *hcd = dev_get_drvdata(dev);
206 struct ehci_hcd *ehci = hcd_to_ehci(hcd); 205 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
207 unsigned long flags; 206 unsigned long flags;
208 int rc; 207 int rc;
@@ -229,12 +228,6 @@ static int ehci_hcd_au1xxx_drv_suspend(struct platform_device *pdev,
229 ehci_writel(ehci, 0, &ehci->regs->intr_enable); 228 ehci_writel(ehci, 0, &ehci->regs->intr_enable);
230 (void)ehci_readl(ehci, &ehci->regs->intr_enable); 229 (void)ehci_readl(ehci, &ehci->regs->intr_enable);
231 230
232 /* make sure snapshot being resumed re-enumerates everything */
233 if (message.event == PM_EVENT_PRETHAW) {
234 ehci_halt(ehci);
235 ehci_reset(ehci);
236 }
237
238 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 231 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
239 232
240 au1xxx_stop_ehc(); 233 au1xxx_stop_ehc();
@@ -248,10 +241,9 @@ bail:
248 return rc; 241 return rc;
249} 242}
250 243
251 244static int ehci_hcd_au1xxx_drv_resume(struct device *dev)
252static int ehci_hcd_au1xxx_drv_resume(struct platform_device *pdev)
253{ 245{
254 struct usb_hcd *hcd = platform_get_drvdata(pdev); 246 struct usb_hcd *hcd = dev_get_drvdata(dev);
255 struct ehci_hcd *ehci = hcd_to_ehci(hcd); 247 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
256 248
257 au1xxx_start_ehc(); 249 au1xxx_start_ehc();
@@ -305,20 +297,25 @@ static int ehci_hcd_au1xxx_drv_resume(struct platform_device *pdev)
305 return 0; 297 return 0;
306} 298}
307 299
300static struct dev_pm_ops au1xxx_ehci_pmops = {
301 .suspend = ehci_hcd_au1xxx_drv_suspend,
302 .resume = ehci_hcd_au1xxx_drv_resume,
303};
304
305#define AU1XXX_EHCI_PMOPS &au1xxx_ehci_pmops
306
308#else 307#else
309#define ehci_hcd_au1xxx_drv_suspend NULL 308#define AU1XXX_EHCI_PMOPS NULL
310#define ehci_hcd_au1xxx_drv_resume NULL
311#endif 309#endif
312 310
313static struct platform_driver ehci_hcd_au1xxx_driver = { 311static struct platform_driver ehci_hcd_au1xxx_driver = {
314 .probe = ehci_hcd_au1xxx_drv_probe, 312 .probe = ehci_hcd_au1xxx_drv_probe,
315 .remove = ehci_hcd_au1xxx_drv_remove, 313 .remove = ehci_hcd_au1xxx_drv_remove,
316 .shutdown = usb_hcd_platform_shutdown, 314 .shutdown = usb_hcd_platform_shutdown,
317 .suspend = ehci_hcd_au1xxx_drv_suspend,
318 .resume = ehci_hcd_au1xxx_drv_resume,
319 .driver = { 315 .driver = {
320 .name = "au1xxx-ehci", 316 .name = "au1xxx-ehci",
321 .owner = THIS_MODULE, 317 .owner = THIS_MODULE,
318 .pm = AU1XXX_EHCI_PMOPS,
322 } 319 }
323}; 320};
324 321