Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1....@samsung.com>
---
 drivers/usb/host/ohci-at91.c |   52 +++++++++---------------------------------
 1 file changed, 11 insertions(+), 41 deletions(-)

diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 29d2093..8fb80b2 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -154,43 +154,36 @@ static int usb_hcd_at91_probe(const struct hc_driver 
*driver,
        hcd->rsrc_start = pdev->resource[0].start;
        hcd->rsrc_len = resource_size(&pdev->resource[0]);
 
-       if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
-               pr_debug("request_mem_region failed\n");
-               retval = -EBUSY;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, &pdev->resource[0]);
+       if (IS_ERR(hcd->regs)) {
+               retval = PTR_ERR(hcd->regs);
                goto err1;
        }
 
-       hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
-       if (!hcd->regs) {
-               pr_debug("ioremap failed\n");
-               retval = -EIO;
-               goto err2;
-       }
-
-       iclk = clk_get(&pdev->dev, "ohci_clk");
+       iclk = devm_clk_get(&pdev->dev, "ohci_clk");
        if (IS_ERR(iclk)) {
                dev_err(&pdev->dev, "failed to get ohci_clk\n");
                retval = PTR_ERR(iclk);
-               goto err3;
+               goto err1;
        }
-       fclk = clk_get(&pdev->dev, "uhpck");
+       fclk = devm_clk_get(&pdev->dev, "uhpck");
        if (IS_ERR(fclk)) {
                dev_err(&pdev->dev, "failed to get uhpck\n");
                retval = PTR_ERR(fclk);
-               goto err4;
+               goto err1;
        }
-       hclk = clk_get(&pdev->dev, "hclk");
+       hclk = devm_clk_get(&pdev->dev, "hclk");
        if (IS_ERR(hclk)) {
                dev_err(&pdev->dev, "failed to get hclk\n");
                retval = PTR_ERR(hclk);
-               goto err5;
+               goto err1;
        }
        if (IS_ENABLED(CONFIG_COMMON_CLK)) {
-               uclk = clk_get(&pdev->dev, "usb_clk");
+               uclk = devm_clk_get(&pdev->dev, "usb_clk");
                if (IS_ERR(uclk)) {
                        dev_err(&pdev->dev, "failed to get uclk\n");
                        retval = PTR_ERR(uclk);
-                       goto err6;
+                       goto err1;
                }
        }
 
@@ -208,21 +201,6 @@ static int usb_hcd_at91_probe(const struct hc_driver 
*driver,
        /* Error handling */
        at91_stop_hc(pdev);
 
-       if (IS_ENABLED(CONFIG_COMMON_CLK))
-               clk_put(uclk);
- err6:
-       clk_put(hclk);
- err5:
-       clk_put(fclk);
- err4:
-       clk_put(iclk);
-
- err3:
-       iounmap(hcd->regs);
-
- err2:
-       release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-
  err1:
        usb_put_hcd(hcd);
        return retval;
@@ -246,15 +224,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
 {
        usb_remove_hcd(hcd);
        at91_stop_hc(pdev);
-       iounmap(hcd->regs);
-       release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
        usb_put_hcd(hcd);
-
-       if (IS_ENABLED(CONFIG_COMMON_CLK))
-               clk_put(uclk);
-       clk_put(hclk);
-       clk_put(fclk);
-       clk_put(iclk);
        fclk = iclk = hclk = NULL;
 }
 
-- 
1.7.10.4


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to