diff options
author | Keshava Munegowda <Keshava_mgowda@ti.com> | 2011-10-11 03:52:11 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2011-12-16 06:29:57 -0500 |
commit | 6c984b066d84bb6e8f5a739ffb1dc4858df017a3 (patch) | |
tree | fd4212e8822cb1970326ffe4189e4e665eda5e5e /drivers/usb/host/ehci-omap.c | |
parent | a6d3a6622ee459eb44952246214d658b474ea8eb (diff) |
ARM: OMAP: USBHOST: Replace usbhs core driver APIs by Runtime pm APIs
The ehci and ohci drivers does not use the APIs of the usbhs
core driver; the runtime pm APIs are used for clock
enable/disable. Since usbhs is parent platform device of the
ehci and ohci devices, the runtime apis indirectly uses the
usb hs core device as input parameter to for clock functions.
Signed-off-by: Keshava Munegowda <keshava_mgowda@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Reviewed-by: Partha Basak <parthab@india.ti.com>
Acked-by: Felipe Balbi <balbi@ti.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'drivers/usb/host/ehci-omap.c')
-rw-r--r-- | drivers/usb/host/ehci-omap.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index e39b0297bad1..568cefbd63a2 100644 --- a/drivers/usb/host/ehci-omap.c +++ b/drivers/usb/host/ehci-omap.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/usb/ulpi.h> | 41 | #include <linux/usb/ulpi.h> |
42 | #include <plat/usb.h> | 42 | #include <plat/usb.h> |
43 | #include <linux/regulator/consumer.h> | 43 | #include <linux/regulator/consumer.h> |
44 | #include <linux/pm_runtime.h> | ||
44 | 45 | ||
45 | /* EHCI Register Set */ | 46 | /* EHCI Register Set */ |
46 | #define EHCI_INSNREG04 (0xA0) | 47 | #define EHCI_INSNREG04 (0xA0) |
@@ -190,11 +191,8 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | |||
190 | } | 191 | } |
191 | } | 192 | } |
192 | 193 | ||
193 | ret = omap_usbhs_enable(dev); | 194 | pm_runtime_enable(dev); |
194 | if (ret) { | 195 | pm_runtime_get_sync(dev); |
195 | dev_err(dev, "failed to start usbhs with err %d\n", ret); | ||
196 | goto err_enable; | ||
197 | } | ||
198 | 196 | ||
199 | /* | 197 | /* |
200 | * An undocumented "feature" in the OMAP3 EHCI controller, | 198 | * An undocumented "feature" in the OMAP3 EHCI controller, |
@@ -240,11 +238,8 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | |||
240 | return 0; | 238 | return 0; |
241 | 239 | ||
242 | err_add_hcd: | 240 | err_add_hcd: |
243 | omap_usbhs_disable(dev); | ||
244 | |||
245 | err_enable: | ||
246 | disable_put_regulator(pdata); | 241 | disable_put_regulator(pdata); |
247 | usb_put_hcd(hcd); | 242 | pm_runtime_put_sync(dev); |
248 | 243 | ||
249 | err_io: | 244 | err_io: |
250 | iounmap(regs); | 245 | iounmap(regs); |
@@ -266,10 +261,12 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev) | |||
266 | struct usb_hcd *hcd = dev_get_drvdata(dev); | 261 | struct usb_hcd *hcd = dev_get_drvdata(dev); |
267 | 262 | ||
268 | usb_remove_hcd(hcd); | 263 | usb_remove_hcd(hcd); |
269 | omap_usbhs_disable(dev); | ||
270 | disable_put_regulator(dev->platform_data); | 264 | disable_put_regulator(dev->platform_data); |
271 | iounmap(hcd->regs); | 265 | iounmap(hcd->regs); |
272 | usb_put_hcd(hcd); | 266 | usb_put_hcd(hcd); |
267 | pm_runtime_put_sync(dev); | ||
268 | pm_runtime_disable(dev); | ||
269 | |||
273 | return 0; | 270 | return 0; |
274 | } | 271 | } |
275 | 272 | ||