Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: omap-usb-host: Use devm_kzalloc() and devm_request_and_ioremap()

Use devm_ variants of kzalloc and ioremap. Also clean up error path.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>

+11 -27
+11 -27
drivers/mfd/omap-usb-host.c
··· 461 461 462 462 if (!pdata) { 463 463 dev_err(dev, "Missing platform data\n"); 464 - ret = -ENOMEM; 465 - goto end_probe; 464 + return -ENODEV; 466 465 } 467 466 468 - omap = kzalloc(sizeof(*omap), GFP_KERNEL); 467 + omap = devm_kzalloc(dev, sizeof(*omap), GFP_KERNEL); 469 468 if (!omap) { 470 469 dev_err(dev, "Memory allocation failed\n"); 471 - ret = -ENOMEM; 472 - goto end_probe; 470 + return -ENOMEM; 471 + } 472 + 473 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "uhh"); 474 + omap->uhh_base = devm_request_and_ioremap(dev, res); 475 + if (!omap->uhh_base) { 476 + dev_err(dev, "Resource request/ioremap failed\n"); 477 + return -EADDRNOTAVAIL; 473 478 } 474 479 475 480 spin_lock_init(&omap->lock); ··· 573 568 "failed error:%d\n", ret); 574 569 } 575 570 576 - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "uhh"); 577 - if (!res) { 578 - dev_err(dev, "UHH EHCI get resource failed\n"); 579 - ret = -ENODEV; 580 - goto err_init_60m_fclk; 581 - } 582 - 583 - omap->uhh_base = ioremap(res->start, resource_size(res)); 584 - if (!omap->uhh_base) { 585 - dev_err(dev, "UHH ioremap failed\n"); 586 - ret = -ENOMEM; 587 - goto err_init_60m_fclk; 588 - } 589 - 590 571 platform_set_drvdata(pdev, omap); 591 572 592 573 omap_usbhs_init(dev); ··· 582 591 goto err_alloc; 583 592 } 584 593 585 - goto end_probe; 594 + return 0; 586 595 587 596 err_alloc: 588 597 omap_usbhs_deinit(&pdev->dev); 589 - iounmap(omap->uhh_base); 590 - 591 - err_init_60m_fclk: 592 598 clk_put(omap->init_60m_fclk); 593 599 594 600 err_usbhost_p2_fck: ··· 609 621 err_end: 610 622 clk_put(omap->ehci_logic_fck); 611 623 pm_runtime_disable(dev); 612 - kfree(omap); 613 624 614 - end_probe: 615 625 return ret; 616 626 } 617 627 ··· 624 638 struct usbhs_hcd_omap *omap = platform_get_drvdata(pdev); 625 639 626 640 omap_usbhs_deinit(&pdev->dev); 627 - iounmap(omap->uhh_base); 628 641 clk_put(omap->init_60m_fclk); 629 642 clk_put(omap->usbhost_p2_fck); 630 643 clk_put(omap->usbhost_p1_fck); ··· 633 648 clk_put(omap->utmi_p1_fck); 634 649 clk_put(omap->ehci_logic_fck); 635 650 pm_runtime_disable(&pdev->dev); 636 - kfree(omap); 637 651 638 652 return 0; 639 653 }