diff options
Diffstat (limited to 'drivers/usb/musb/omap2430.c')
| -rw-r--r-- | drivers/usb/musb/omap2430.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index 2ae0bb309994..c7785e81254c 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c | |||
| @@ -282,7 +282,8 @@ static void musb_otg_notifier_work(struct work_struct *data_notifier_work) | |||
| 282 | 282 | ||
| 283 | static int omap2430_musb_init(struct musb *musb) | 283 | static int omap2430_musb_init(struct musb *musb) |
| 284 | { | 284 | { |
| 285 | u32 l, status = 0; | 285 | u32 l; |
| 286 | int status = 0; | ||
| 286 | struct device *dev = musb->controller; | 287 | struct device *dev = musb->controller; |
| 287 | struct musb_hdrc_platform_data *plat = dev->platform_data; | 288 | struct musb_hdrc_platform_data *plat = dev->platform_data; |
| 288 | struct omap_musb_board_data *data = plat->board_data; | 289 | struct omap_musb_board_data *data = plat->board_data; |
| @@ -301,7 +302,7 @@ static int omap2430_musb_init(struct musb *musb) | |||
| 301 | 302 | ||
| 302 | status = pm_runtime_get_sync(dev); | 303 | status = pm_runtime_get_sync(dev); |
| 303 | if (status < 0) { | 304 | if (status < 0) { |
| 304 | dev_err(dev, "pm_runtime_get_sync FAILED"); | 305 | dev_err(dev, "pm_runtime_get_sync FAILED %d\n", status); |
| 305 | goto err1; | 306 | goto err1; |
| 306 | } | 307 | } |
| 307 | 308 | ||
| @@ -333,6 +334,7 @@ static int omap2430_musb_init(struct musb *musb) | |||
| 333 | 334 | ||
| 334 | setup_timer(&musb_idle_timer, musb_do_idle, (unsigned long) musb); | 335 | setup_timer(&musb_idle_timer, musb_do_idle, (unsigned long) musb); |
| 335 | 336 | ||
| 337 | pm_runtime_put_noidle(musb->controller); | ||
| 336 | return 0; | 338 | return 0; |
| 337 | 339 | ||
| 338 | err1: | 340 | err1: |
| @@ -452,14 +454,14 @@ static int __devinit omap2430_probe(struct platform_device *pdev) | |||
| 452 | goto err2; | 454 | goto err2; |
| 453 | } | 455 | } |
| 454 | 456 | ||
| 457 | pm_runtime_enable(&pdev->dev); | ||
| 458 | |||
| 455 | ret = platform_device_add(musb); | 459 | ret = platform_device_add(musb); |
| 456 | if (ret) { | 460 | if (ret) { |
| 457 | dev_err(&pdev->dev, "failed to register musb device\n"); | 461 | dev_err(&pdev->dev, "failed to register musb device\n"); |
| 458 | goto err2; | 462 | goto err2; |
| 459 | } | 463 | } |
| 460 | 464 | ||
| 461 | pm_runtime_enable(&pdev->dev); | ||
| 462 | |||
| 463 | return 0; | 465 | return 0; |
| 464 | 466 | ||
| 465 | err2: | 467 | err2: |
| @@ -478,7 +480,6 @@ static int __devexit omap2430_remove(struct platform_device *pdev) | |||
| 478 | 480 | ||
| 479 | platform_device_del(glue->musb); | 481 | platform_device_del(glue->musb); |
| 480 | platform_device_put(glue->musb); | 482 | platform_device_put(glue->musb); |
| 481 | pm_runtime_put(&pdev->dev); | ||
| 482 | kfree(glue); | 483 | kfree(glue); |
| 483 | 484 | ||
| 484 | return 0; | 485 | return 0; |
| @@ -491,11 +492,13 @@ static int omap2430_runtime_suspend(struct device *dev) | |||
| 491 | struct omap2430_glue *glue = dev_get_drvdata(dev); | 492 | struct omap2430_glue *glue = dev_get_drvdata(dev); |
| 492 | struct musb *musb = glue_to_musb(glue); | 493 | struct musb *musb = glue_to_musb(glue); |
| 493 | 494 | ||
| 494 | musb->context.otg_interfsel = musb_readl(musb->mregs, | 495 | if (musb) { |
| 495 | OTG_INTERFSEL); | 496 | musb->context.otg_interfsel = musb_readl(musb->mregs, |
| 497 | OTG_INTERFSEL); | ||
| 496 | 498 | ||
| 497 | omap2430_low_level_exit(musb); | 499 | omap2430_low_level_exit(musb); |
| 498 | usb_phy_set_suspend(musb->xceiv, 1); | 500 | usb_phy_set_suspend(musb->xceiv, 1); |
| 501 | } | ||
| 499 | 502 | ||
| 500 | return 0; | 503 | return 0; |
| 501 | } | 504 | } |
| @@ -505,11 +508,13 @@ static int omap2430_runtime_resume(struct device *dev) | |||
| 505 | struct omap2430_glue *glue = dev_get_drvdata(dev); | 508 | struct omap2430_glue *glue = dev_get_drvdata(dev); |
| 506 | struct musb *musb = glue_to_musb(glue); | 509 | struct musb *musb = glue_to_musb(glue); |
| 507 | 510 | ||
| 508 | omap2430_low_level_init(musb); | 511 | if (musb) { |
| 509 | musb_writel(musb->mregs, OTG_INTERFSEL, | 512 | omap2430_low_level_init(musb); |
| 510 | musb->context.otg_interfsel); | 513 | musb_writel(musb->mregs, OTG_INTERFSEL, |
| 514 | musb->context.otg_interfsel); | ||
| 511 | 515 | ||
| 512 | usb_phy_set_suspend(musb->xceiv, 0); | 516 | usb_phy_set_suspend(musb->xceiv, 0); |
| 517 | } | ||
| 513 | 518 | ||
| 514 | return 0; | 519 | return 0; |
| 515 | } | 520 | } |
