From: Kishon Vijay Abraham I Date: Fri, 25 Jan 2013 03:00:47 +0000 (+0530) Subject: usb: dwc3: omap: use runtime API's to enable clocks X-Git-Tag: v3.9-rc1~126^2~44^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=af310e96a05bdea2517d639e46e2aea3aef21c5c;p=platform%2Fkernel%2Flinux-3.10.git 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 Signed-off-by: Felipe Balbi --- diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index 78bb2f6..8094230 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -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;