diff options
Diffstat (limited to 'drivers/usb/musb/blackfin.c')
-rw-r--r-- | drivers/usb/musb/blackfin.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c index d40d5f0b5528..ac4422b33dcd 100644 --- a/drivers/usb/musb/blackfin.c +++ b/drivers/usb/musb/blackfin.c | |||
@@ -455,7 +455,7 @@ static int bfin_probe(struct platform_device *pdev) | |||
455 | 455 | ||
456 | int ret = -ENOMEM; | 456 | int ret = -ENOMEM; |
457 | 457 | ||
458 | glue = kzalloc(sizeof(*glue), GFP_KERNEL); | 458 | glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL); |
459 | if (!glue) { | 459 | if (!glue) { |
460 | dev_err(&pdev->dev, "failed to allocate glue context\n"); | 460 | dev_err(&pdev->dev, "failed to allocate glue context\n"); |
461 | goto err0; | 461 | goto err0; |
@@ -464,7 +464,7 @@ static int bfin_probe(struct platform_device *pdev) | |||
464 | musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); | 464 | musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); |
465 | if (!musb) { | 465 | if (!musb) { |
466 | dev_err(&pdev->dev, "failed to allocate musb device\n"); | 466 | dev_err(&pdev->dev, "failed to allocate musb device\n"); |
467 | goto err1; | 467 | goto err0; |
468 | } | 468 | } |
469 | 469 | ||
470 | musb->dev.parent = &pdev->dev; | 470 | musb->dev.parent = &pdev->dev; |
@@ -478,7 +478,7 @@ static int bfin_probe(struct platform_device *pdev) | |||
478 | 478 | ||
479 | glue->phy = usb_phy_generic_register(); | 479 | glue->phy = usb_phy_generic_register(); |
480 | if (IS_ERR(glue->phy)) | 480 | if (IS_ERR(glue->phy)) |
481 | goto err2; | 481 | goto err1; |
482 | platform_set_drvdata(pdev, glue); | 482 | platform_set_drvdata(pdev, glue); |
483 | 483 | ||
484 | memset(musb_resources, 0x00, sizeof(*musb_resources) * | 484 | memset(musb_resources, 0x00, sizeof(*musb_resources) * |
@@ -498,31 +498,28 @@ static int bfin_probe(struct platform_device *pdev) | |||
498 | ARRAY_SIZE(musb_resources)); | 498 | ARRAY_SIZE(musb_resources)); |
499 | if (ret) { | 499 | if (ret) { |
500 | dev_err(&pdev->dev, "failed to add resources\n"); | 500 | dev_err(&pdev->dev, "failed to add resources\n"); |
501 | goto err3; | 501 | goto err2; |
502 | } | 502 | } |
503 | 503 | ||
504 | ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); | 504 | ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); |
505 | if (ret) { | 505 | if (ret) { |
506 | dev_err(&pdev->dev, "failed to add platform_data\n"); | 506 | dev_err(&pdev->dev, "failed to add platform_data\n"); |
507 | goto err3; | 507 | goto err2; |
508 | } | 508 | } |
509 | 509 | ||
510 | ret = platform_device_add(musb); | 510 | ret = platform_device_add(musb); |
511 | if (ret) { | 511 | if (ret) { |
512 | dev_err(&pdev->dev, "failed to register musb device\n"); | 512 | dev_err(&pdev->dev, "failed to register musb device\n"); |
513 | goto err3; | 513 | goto err2; |
514 | } | 514 | } |
515 | 515 | ||
516 | return 0; | 516 | return 0; |
517 | 517 | ||
518 | err3: | ||
519 | usb_phy_generic_unregister(glue->phy); | ||
520 | |||
521 | err2: | 518 | err2: |
522 | platform_device_put(musb); | 519 | usb_phy_generic_unregister(glue->phy); |
523 | 520 | ||
524 | err1: | 521 | err1: |
525 | kfree(glue); | 522 | platform_device_put(musb); |
526 | 523 | ||
527 | err0: | 524 | err0: |
528 | return ret; | 525 | return ret; |
@@ -534,7 +531,6 @@ static int bfin_remove(struct platform_device *pdev) | |||
534 | 531 | ||
535 | platform_device_unregister(glue->musb); | 532 | platform_device_unregister(glue->musb); |
536 | usb_phy_generic_unregister(glue->phy); | 533 | usb_phy_generic_unregister(glue->phy); |
537 | kfree(glue); | ||
538 | 534 | ||
539 | return 0; | 535 | return 0; |
540 | } | 536 | } |