|
@@ -43,6 +43,7 @@
|
|
|
#include <linux/spinlock.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
#include <linux/platform_data/dwc3-omap.h>
|
|
|
+#include <linux/pm_runtime.h>
|
|
|
#include <linux/dma-mapping.h>
|
|
|
#include <linux/ioport.h>
|
|
|
#include <linux/io.h>
|
|
@@ -336,6 +337,13 @@ static int dwc3_omap_probe(struct platform_device *pdev)
|
|
|
omap->irq = irq;
|
|
|
omap->base = base;
|
|
|
|
|
|
+ pm_runtime_enable(dev);
|
|
|
+ ret = pm_runtime_get_sync(dev);
|
|
|
+ if (ret < 0) {
|
|
|
+ dev_err(dev, "get_sync failed with err %d\n", ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
reg = dwc3_omap_readl(omap->base, USBOTGSS_UTMI_OTG_STATUS);
|
|
|
|
|
|
utmi_mode = of_get_property(node, "utmi-mode", &size);
|
|
@@ -416,6 +424,8 @@ static int dwc3_omap_remove(struct platform_device *pdev)
|
|
|
|
|
|
platform_device_unregister(omap->usb2_phy);
|
|
|
platform_device_unregister(omap->usb3_phy);
|
|
|
+ pm_runtime_put_sync(&pdev->dev);
|
|
|
+ pm_runtime_disable(&pdev->dev);
|
|
|
device_for_each_child(&pdev->dev, NULL, dwc3_omap_remove_core);
|
|
|
|
|
|
return 0;
|