diff options
author | Kishon Vijay Abraham I <kishon@ti.com> | 2013-01-25 08:30:47 +0530 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-01-25 09:15:54 +0200 |
commit | af310e96a05bdea2517d639e46e2aea3aef21c5c (patch) | |
tree | 621dc23052ebd752e68d32646656f17fbace199a /drivers/usb/dwc3/dwc3-omap.c | |
parent | b4bfe6aa9b36c5ff42d96c64e2df7e36a8c61dfb (diff) | |
download | linux-3.10-af310e96a05bdea2517d639e46e2aea3aef21c5c.tar.gz linux-3.10-af310e96a05bdea2517d639e46e2aea3aef21c5c.tar.bz2 linux-3.10-af310e96a05bdea2517d639e46e2aea3aef21c5c.zip |
usb: dwc3: omap: use runtime API's to enable clocks
Before accessing any register, runtime API's should be invoked to enable
the clocks. runtime API's are added here to prevent abort during register
access.
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3/dwc3-omap.c')
-rw-r--r-- | drivers/usb/dwc3/dwc3-omap.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index 78bb2f668f1..80942301893 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c @@ -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; |