[PATCH v9 04/20] mfd: omap-usb-tll: Use devm_kzalloc/ioremap and clean up error path
From: Roger Quadros <hidden>
Date: 2013-01-23 10:43:41
Also in:
lkml
Subsystem:
multifunction devices (mfd), omap2+ support, the rest · Maintainers:
Lee Jones, Aaro Koskinen, Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren, Linus Torvalds
Use devm_ variants of kzalloc() and ioremap(). Simplify the error path. Signed-off-by: Roger Quadros <redacted> Reviewed-by: Felipe Balbi <redacted> --- drivers/mfd/omap-usb-tll.c | 38 ++++++++++++-------------------------- 1 files changed, 12 insertions(+), 26 deletions(-)
diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c
index 9658e18..9a19cc7 100644
--- a/drivers/mfd/omap-usb-tll.c
+++ b/drivers/mfd/omap-usb-tll.c@@ -215,11 +215,10 @@ static int usbtll_omap_probe(struct platform_device *pdev) dev_dbg(dev, "starting TI HSUSB TLL Controller\n"); - tll = kzalloc(sizeof(struct usbtll_omap), GFP_KERNEL); + tll = devm_kzalloc(dev, sizeof(struct usbtll_omap), GFP_KERNEL); if (!tll) { dev_err(dev, "Memory allocation failed\n"); - ret = -ENOMEM; - goto end; + return -ENOMEM; } spin_lock_init(&tll->lock);
@@ -230,28 +229,22 @@ static int usbtll_omap_probe(struct platform_device *pdev) if (IS_ERR(tll->usbtll_p1_fck)) { ret = PTR_ERR(tll->usbtll_p1_fck); dev_err(dev, "usbtll_p1_fck failed error:%d\n", ret); - goto err_tll; + return ret; } tll->usbtll_p2_fck = clk_get(dev, "usb_tll_hs_usb_ch1_clk"); if (IS_ERR(tll->usbtll_p2_fck)) { ret = PTR_ERR(tll->usbtll_p2_fck); dev_err(dev, "usbtll_p2_fck failed error:%d\n", ret); - goto err_usbtll_p1_fck; + goto err_p2_fck; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(dev, "usb tll get resource failed\n"); - ret = -ENODEV; - goto err_usbtll_p2_fck; - } - - base = ioremap(res->start, resource_size(res)); + base = devm_request_and_ioremap(dev, res); if (!base) { - dev_err(dev, "TLL ioremap failed\n"); - ret = -ENOMEM; - goto err_usbtll_p2_fck; + ret = -EADDRNOTAVAIL; + dev_err(dev, "Resource request/ioremap failed:%d\n", ret); + goto err_res; } platform_set_drvdata(pdev, tll);
@@ -323,23 +316,17 @@ static int usbtll_omap_probe(struct platform_device *pdev) } spin_unlock_irqrestore(&tll->lock, flags); - iounmap(base); pm_runtime_put_sync(dev); tll_pdev = pdev; - if (!ret) - goto end; - pm_runtime_disable(dev); -err_usbtll_p2_fck: + return 0; + +err_res: clk_put(tll->usbtll_p2_fck); -err_usbtll_p1_fck: +err_p2_fck: clk_put(tll->usbtll_p1_fck); -err_tll: - kfree(tll); - -end: return ret; }
@@ -356,7 +343,6 @@ static int usbtll_omap_remove(struct platform_device *pdev) clk_put(tll->usbtll_p2_fck); clk_put(tll->usbtll_p1_fck); pm_runtime_disable(&pdev->dev); - kfree(tll); return 0; }
--
1.7.4.1