diff options
author | Jingoo Han <jg1.han@samsung.com> | 2013-12-11 11:16:33 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-12-19 04:33:47 +0400 |
commit | 806f6e6b92d8f1bf303198a3e78cf1ff99bd5c0e (patch) | |
tree | 94023a5542e115bdd3d7a7255d7703c1903ddaa1 /drivers/usb/host/ehci-orion.c | |
parent | 63c9b9d3fe3b1b39a235755f724ab4378f21137c (diff) | |
download | linux-806f6e6b92d8f1bf303198a3e78cf1ff99bd5c0e.tar.xz |
USB: ehci-orion: Use devm_*() functions
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-orion.c')
-rw-r--r-- | drivers/usb/host/ehci-orion.c | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c index 4ca61203fead..30d35e5e503a 100644 --- a/drivers/usb/host/ehci-orion.c +++ b/drivers/usb/host/ehci-orion.c @@ -184,33 +184,23 @@ static int ehci_orion_drv_probe(struct platform_device *pdev) if (err) goto err1; - if (!request_mem_region(res->start, resource_size(res), - ehci_orion_hc_driver.description)) { - dev_dbg(&pdev->dev, "controller already in use\n"); - err = -EBUSY; + regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(regs)) { + err = PTR_ERR(regs); goto err1; } - regs = ioremap(res->start, resource_size(res)); - if (regs == NULL) { - dev_dbg(&pdev->dev, "error mapping memory\n"); - err = -EFAULT; - goto err2; - } - /* Not all platforms can gate the clock, so it is not an error if the clock does not exists. */ - clk = clk_get(&pdev->dev, NULL); - if (!IS_ERR(clk)) { + clk = devm_clk_get(&pdev->dev, NULL); + if (!IS_ERR(clk)) clk_prepare_enable(clk); - clk_put(clk); - } hcd = usb_create_hcd(&ehci_orion_hc_driver, &pdev->dev, dev_name(&pdev->dev)); if (!hcd) { err = -ENOMEM; - goto err3; + goto err2; } hcd->rsrc_start = res->start; @@ -250,21 +240,16 @@ static int ehci_orion_drv_probe(struct platform_device *pdev) err = usb_add_hcd(hcd, irq, IRQF_SHARED); if (err) - goto err4; + goto err3; device_wakeup_enable(hcd->self.controller); return 0; -err4: - usb_put_hcd(hcd); err3: - if (!IS_ERR(clk)) { - clk_disable_unprepare(clk); - clk_put(clk); - } - iounmap(regs); + usb_put_hcd(hcd); err2: - release_mem_region(res->start, resource_size(res)); + if (!IS_ERR(clk)) + clk_disable_unprepare(clk); err1: dev_err(&pdev->dev, "init %s fail, %d\n", dev_name(&pdev->dev), err); @@ -278,15 +263,11 @@ static int ehci_orion_drv_remove(struct platform_device *pdev) struct clk *clk; usb_remove_hcd(hcd); - iounmap(hcd->regs); - release_mem_region(hcd->rsrc_start, hcd->rsrc_len); usb_put_hcd(hcd); - clk = clk_get(&pdev->dev, NULL); - if (!IS_ERR(clk)) { + clk = devm_clk_get(&pdev->dev, NULL); + if (!IS_ERR(clk)) clk_disable_unprepare(clk); - clk_put(clk); - } return 0; } |