|
@@ -41,6 +41,7 @@
|
|
|
#include <linux/usb/ulpi.h>
|
|
|
#include <plat/usb.h>
|
|
|
#include <linux/regulator/consumer.h>
|
|
|
+#include <linux/pm_runtime.h>
|
|
|
|
|
|
/* EHCI Register Set */
|
|
|
#define EHCI_INSNREG04 (0xA0)
|
|
@@ -190,11 +191,8 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ret = omap_usbhs_enable(dev);
|
|
|
- if (ret) {
|
|
|
- dev_err(dev, "failed to start usbhs with err %d\n", ret);
|
|
|
- goto err_enable;
|
|
|
- }
|
|
|
+ pm_runtime_enable(dev);
|
|
|
+ pm_runtime_get_sync(dev);
|
|
|
|
|
|
/*
|
|
|
* An undocumented "feature" in the OMAP3 EHCI controller,
|
|
@@ -240,11 +238,8 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
|
|
|
return 0;
|
|
|
|
|
|
err_add_hcd:
|
|
|
- omap_usbhs_disable(dev);
|
|
|
-
|
|
|
-err_enable:
|
|
|
disable_put_regulator(pdata);
|
|
|
- usb_put_hcd(hcd);
|
|
|
+ pm_runtime_put_sync(dev);
|
|
|
|
|
|
err_io:
|
|
|
iounmap(regs);
|
|
@@ -266,10 +261,12 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev)
|
|
|
struct usb_hcd *hcd = dev_get_drvdata(dev);
|
|
|
|
|
|
usb_remove_hcd(hcd);
|
|
|
- omap_usbhs_disable(dev);
|
|
|
disable_put_regulator(dev->platform_data);
|
|
|
iounmap(hcd->regs);
|
|
|
usb_put_hcd(hcd);
|
|
|
+ pm_runtime_put_sync(dev);
|
|
|
+ pm_runtime_disable(dev);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|