aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb/blackfin.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/musb/blackfin.c')
-rw-r--r--drivers/usb/musb/blackfin.c20
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
518err3:
519 usb_phy_generic_unregister(glue->phy);
520
521err2: 518err2:
522 platform_device_put(musb); 519 usb_phy_generic_unregister(glue->phy);
523 520
524err1: 521err1:
525 kfree(glue); 522 platform_device_put(musb);
526 523
527err0: 524err0:
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}