From patchwork Tue Dec 17 06:55:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingoo Han X-Patchwork-Id: 302008 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C13E22C00A4 for ; Tue, 17 Dec 2013 17:55:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752634Ab3LQGze (ORCPT ); Tue, 17 Dec 2013 01:55:34 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:17903 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752288Ab3LQGze (ORCPT ); Tue, 17 Dec 2013 01:55:34 -0500 Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MXX00EJWV8KLKA0@mailout4.samsung.com> for linux-i2c@vger.kernel.org; Tue, 17 Dec 2013 15:55:32 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [203.254.230.50]) by epcpsbgr4.samsung.com (EPCPMTA) with SMTP id F2.A5.02798.465FFA25; Tue, 17 Dec 2013 15:55:32 +0900 (KST) X-AuditID: cbfee690-b7f206d000000aee-4f-52aff564598c Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id B0.26.22838.465FFA25; Tue, 17 Dec 2013 15:55:32 +0900 (KST) Received: from DOJG1HAN03 ([12.23.120.99]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MXX00BGEV8KTNE0@mmp1.samsung.com>; Tue, 17 Dec 2013 15:55:32 +0900 (KST) From: Jingoo Han To: 'Wolfram Sang' Cc: linux-i2c@vger.kernel.org, 'Jingoo Han' , 'Vitaly Wool' , 'Roland Stigge' References: <001601cefaf3$940d0040$bc2700c0$%han@samsung.com> In-reply-to: <001601cefaf3$940d0040$bc2700c0$%han@samsung.com> Subject: [PATCH 07/13] i2c: pnx: Use devm_*() functions Date: Tue, 17 Dec 2013 15:55:32 +0900 Message-id: <002b01cefaf4$fa737d40$ef5a77c0$%han@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Office Outlook 12.0 Thread-index: Ac7685PVHbujt8MeRNi0GNiruYn2+wAATuVQ Content-language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrBIsWRmVeSWpSXmKPExsVy+t8zI92Ur+uDDNquKVhcXniJ1aLj7xdG i8lLzrJafN28h8Vi5YlZzA6sHnOm7mb02DnrLrtH35ZVjB4nTz1h8fi8SS6ANYrLJiU1J7Ms tUjfLoEro2fOYtaCU3IV78+eZmpg/CnRxcjJISFgInH74XdGCFtM4sK99WxdjFwcQgLLGCXu HG9jgyma3rSdBcQWEljEKPH1YTlE0S9GiYe3L7KDJNgE1CS+fDkMZosA2c8+fmUEKWIW6GWU 2DFlCRtEt61E38plYOs4Bewkbi38BWYLC5hL7J2wBayGRUBVYnfHNrA4L1D9hwmXmSFsQYkf k++BXcEsoCWxfudxJghbXmLzmrdANRxAl6pLPPqrC3GDkcT5v5/YIUpEJPa9eAd2j4TANXaJ Mx1XmCB2CUh8m3yIBaJXVmLTAWaIhyUlDq64wTKBUWIWks2zkGyehWTzLCQrFjCyrGIUTS1I LihOSi8y0StOzC0uzUvXS87P3cQIidUJOxjvHbA+xJgMtH4is5Rocj4w1vNK4g2NzYwsTE1M jY3MLc1IE1YS51V7lBQkJJCeWJKanZpakFoUX1Sak1p8iJGJg1OqgXHC5RRZV4YLbK4sew9b u2w5mbSsxfp8rWzkKoFVSvMsBD8v2qjrvGj7P9vzy/7E3Xo/bZZ42HETDo6yvZrKrZPWrrx1 fsZvv/odgau/fto5q2nlnAOcC4svfL3cmf+mL4ThH98rtmWLr3rNEQ1dd7trxpmTR7IexXTx 375R2itbz/xV1UDLfk+sEktxRqKhFnNRcSIAMHhkd+sCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKKsWRmVeSWpSXmKPExsVy+t9jAd2Ur+uDDG5vlLG4vPASq0XH3y+M FpOXnGW1+Lp5D4vFyhOzmB1YPeZM3c3osXPWXXaPvi2rGD1OnnrC4vF5k1wAa1QDo01GamJK apFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4CuW2YO0HYlhbLEnFKgUEBi cbGSvh2mCaEhbroWMI0Rur4hQXA9RgZoIGEdY0bPnMWsBafkKt6fPc3UwPhToouRk0NCwERi etN2FghbTOLCvfVsILaQwCJGia8Py7sYuYDsX4wSD29fZAdJsAmoSXz5chjMFgGyn338yghS xCzQyyixY8oSqG5bib6VyxhBbE4BO4lbC3+B2cIC5hJ7J2wBq2ERUJXY3bENLM4LVP9hwmVm CFtQ4sfke2AXMQtoSazfeZwJwpaX2LzmLVANB9Cl6hKP/upC3GAkcf7vJ3aIEhGJfS/eMU5g FJqFZNIsJJNmIZk0C0nLAkaWVYyiqQXJBcVJ6bmGesWJucWleel6yfm5mxjBieCZ1A7GlQ0W hxgFOBiVeHg5Zq8PEmJNLCuuzD3EKMHBrCTCy1IAFOJNSaysSi3Kjy8qzUktPsSYDPToRGYp 0eR8YJLKK4k3NDYxM7I0MrMwMjE3J01YSZz3QKt1oJBAemJJanZqakFqEcwWJg5OqQZGi9ec pU8urLqqUi3a/4/1b9EdUXXxEz89Qq93znNx0O6Y8ntJ8EwhDtnJmxvvfbK/UfVwb7H7RtbD 9w55vd9X/5Ht/47kzCVcqlWd8+Z6l8SoF9y2+bfKzVbw77+SpcpzVwWxdoVd/8ygP2mnh/m2 WRufS30Pb1H+uEnm//EHO0O+3WXd7r/dRomlOCPRUIu5qDgRALOeZ7xIAwAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Use devm_*() functions to make cleanup paths simpler. Signed-off-by: Jingoo Han Acked-by: Roland Stigge Tested-by: Roland Stigge --- drivers/i2c/busses/i2c-pnx.c | 56 +++++++++++++----------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c index c9a352f..f2d7add 100644 --- a/drivers/i2c/busses/i2c-pnx.c +++ b/drivers/i2c/busses/i2c-pnx.c @@ -628,11 +628,9 @@ static int i2c_pnx_probe(struct platform_device *pdev) struct resource *res; u32 speed = I2C_PNX_SPEED_KHZ_DEFAULT * 1000; - alg_data = kzalloc(sizeof(*alg_data), GFP_KERNEL); - if (!alg_data) { - ret = -ENOMEM; - goto err_kzalloc; - } + alg_data = devm_kzalloc(&pdev->dev, sizeof(*alg_data), GFP_KERNEL); + if (!alg_data) + return -ENOMEM; platform_set_drvdata(pdev, alg_data); @@ -657,11 +655,9 @@ static int i2c_pnx_probe(struct platform_device *pdev) */ } #endif - alg_data->clk = clk_get(&pdev->dev, NULL); - if (IS_ERR(alg_data->clk)) { - ret = PTR_ERR(alg_data->clk); - goto out_drvdata; - } + alg_data->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(alg_data->clk)) + return PTR_ERR(alg_data->clk); init_timer(&alg_data->mif.timer); alg_data->mif.timer.function = i2c_pnx_timeout; @@ -674,29 +670,27 @@ static int i2c_pnx_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(&pdev->dev, "Unable to get mem resource.\n"); - ret = -EBUSY; - goto out_clkget; + return -EBUSY; } - if (!request_mem_region(res->start, I2C_PNX_REGION_SIZE, - pdev->name)) { + if (!devm_request_mem_region(&pdev->dev, res->start, + I2C_PNX_REGION_SIZE, pdev->name)) { dev_err(&pdev->dev, "I/O region 0x%08x for I2C already in use.\n", res->start); - ret = -ENOMEM; - goto out_clkget; + return -ENOMEM; } alg_data->base = res->start; - alg_data->ioaddr = ioremap(res->start, I2C_PNX_REGION_SIZE); + alg_data->ioaddr = devm_ioremap(&pdev->dev, res->start, + I2C_PNX_REGION_SIZE); if (!alg_data->ioaddr) { dev_err(&pdev->dev, "Couldn't ioremap I2C I/O region\n"); - ret = -ENOMEM; - goto out_release; + return -ENOMEM; } ret = clk_enable(alg_data->clk); if (ret) - goto out_unmap; + return ret; freq = clk_get_rate(alg_data->clk); @@ -730,8 +724,8 @@ static int i2c_pnx_probe(struct platform_device *pdev) ret = alg_data->irq; goto out_clock; } - ret = request_irq(alg_data->irq, i2c_pnx_interrupt, - 0, pdev->name, alg_data); + ret = devm_request_irq(&pdev->dev, alg_data->irq, i2c_pnx_interrupt, + 0, pdev->name, alg_data); if (ret) goto out_clock; @@ -739,7 +733,7 @@ static int i2c_pnx_probe(struct platform_device *pdev) ret = i2c_add_numbered_adapter(&alg_data->adapter); if (ret < 0) { dev_err(&pdev->dev, "I2C: Failed to add bus\n"); - goto out_irq; + goto out_clock; } dev_dbg(&pdev->dev, "%s: Master at %#8x, irq %d.\n", @@ -747,19 +741,8 @@ static int i2c_pnx_probe(struct platform_device *pdev) return 0; -out_irq: - free_irq(alg_data->irq, alg_data); out_clock: clk_disable(alg_data->clk); -out_unmap: - iounmap(alg_data->ioaddr); -out_release: - release_mem_region(res->start, I2C_PNX_REGION_SIZE); -out_clkget: - clk_put(alg_data->clk); -out_drvdata: - kfree(alg_data); -err_kzalloc: return ret; } @@ -767,13 +750,8 @@ static int i2c_pnx_remove(struct platform_device *pdev) { struct i2c_pnx_algo_data *alg_data = platform_get_drvdata(pdev); - free_irq(alg_data->irq, alg_data); i2c_del_adapter(&alg_data->adapter); clk_disable(alg_data->clk); - iounmap(alg_data->ioaddr); - release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE); - clk_put(alg_data->clk); - kfree(alg_data); return 0; }