From patchwork Wed Jan 9 00:50:04 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingoo Han X-Patchwork-Id: 1949761 Return-Path: X-Original-To: patchwork-spi-devel-general@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.34.181.88]) by patchwork2.kernel.org (Postfix) with ESMTP id 7D8D7DF23A for ; Wed, 9 Jan 2013 00:50:17 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=sfs-ml-4.v29.ch3.sourceforge.com) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Tsjs0-0005AZ-HM; Wed, 09 Jan 2013 00:50:16 +0000 Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Tsjrz-0005AU-51 for spi-devel-general@lists.sourceforge.net; Wed, 09 Jan 2013 00:50:15 +0000 X-ACL-Warn: Received: from mailout3.samsung.com ([203.254.224.33]) by sog-mx-1.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1Tsjrv-0002GJ-6O for spi-devel-general@lists.sourceforge.net; Wed, 09 Jan 2013 00:50:15 +0000 Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MGC00J1A2A3B6B0@mailout3.samsung.com> for spi-devel-general@lists.sourceforge.net; Wed, 09 Jan 2013 09:50:04 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [203.254.230.47]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id E4.42.12699.CBEBCE05; Wed, 09 Jan 2013 09:50:04 +0900 (KST) X-AuditID: cbfee61b-b7f616d00000319b-5c-50ecbebcf023 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id C4.42.12699.CBEBCE05; Wed, 09 Jan 2013 09:50:04 +0900 (KST) Received: from DOJG1HAN02 ([12.23.120.99]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MGC003VR2BGY310@mmp2.samsung.com> for spi-devel-general@lists.sourceforge.net; Wed, 09 Jan 2013 09:50:04 +0900 (KST) From: Jingoo Han To: 'Grant Likely' Subject: [PATCH] spi: s3c64xx: Use devm_clk_get() and devm_request_irq() Date: Wed, 09 Jan 2013 09:50:04 +0900 Message-id: <002801cdee03$432149a0$c963dce0$%han@samsung.com> MIME-version: 1.0 X-Mailer: Microsoft Office Outlook 12.0 Thread-index: Ac3uAz/utiS4ItQFSZSV37Zya3Mi4A== Content-language: ko x-cr-hashedpuzzle: BPdO Ig0S LT+R Lh9/ RfsK TRO7 UPBP Uado UcRs X3e6 ZphH at5Y c4C8 eI8m eLIM iDjr; 3; ZwByAGEAbgB0AC4AbABpAGsAZQBsAHkAQABzAGUAYwByAGUAdABsAGEAYgAuAGMAYQA7AGoAZwAxAC4AaABhAG4AQABzAGEAbQBzAHUAbgBnAC4AYwBvAG0AOwBzAHAAaQAtAGQAZQB2AGUAbAAtAGcAZQBuAGUAcgBhAGwAQABsAGkAcwB0AHMALgBzAG8AdQByAGMAZQBmAG8AcgBnAGUALgBuAGUAdAA=; Sosha1_v1; 7; {28EE3287-DB3C-45DA-9189-12A0A5A9DCA2}; agBnADEALgBoAGEAbgBAAHMAYQBtAHMAdQBuAGcALgBjAG8AbQA=; Wed, 09 Jan 2013 00:49:58 GMT; WwBQAEEAVABDAEgAXQAgAHMAcABpADoAIABzADMAYwA2ADQAeAB4ADoAIABVAHMAZQAgAGQAZQB2AG0AXwBjAGwAawBfAGcAZQB0ACgAKQAgAGEAbgBkACAAZABlAHYAbQBfAHIAZQBxAHUAZQBzAHQAXwBpAHIAcQAoACkA x-cr-puzzleid: {28EE3287-DB3C-45DA-9189-12A0A5A9DCA2} DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsVy+t8zfd09+94EGBx5JmVxZEojuwOjx+4F n5kCGKO4bFJSczLLUov07RK4Mj4+ncVYcEu24sOSg2wNjD0SXYycHBICJhIXvn1jh7DFJC7c W8/WxcjFISSwjFFi+67jLF2MHGBFCzbwgtQICUxnlJh+sBKqhkni0c9zLCAJNgE1iS9fDoMN EhHQk7hxoYMRxGYW8Jd4enMTK4gtLOAh0dy/ignEZhFQlZj1bA9YDa+ArcS/VV+gbEGJH5Pv sUD0akms33mcCcKWl9i85i0zxD3qEo/+6sKs6v7cAVUiIrHvxTtGkNskBBpYJbo/rWWCeMxU 4uKEZSwQewUkvk0+BPWXrMSmA8wQ9fPYJb6engpVLylxcMUNlgmMErOQnDQLyUmzkJw0C8nu BYwsqxhFUwuSC4qT0nON9IoTc4tL89L1kvNzNzFCYkt6B+OqBotDjAIcjEo8vA+nvQkQYk0s K67MPcQowcGsJMJ71xsoxJuSWFmVWpQfX1Sak1p8iNEH6PKJzFKiyfnAuM8riTc0NjYxMzE1 Mbc0NTfFIawkzst46kmAkEB6YklqdmpqQWoRzDgmDk6pBsZSV+d18yJWC07hEkpYdfuZ8XSt 5MY+r9Ai6wO2qemn72xOsZlk61YWaLfcuShQVGyj3Q6de1ZRUQphitcnpmu+ePJheiTzJumP kS+1NL62BnHPra5imf/k8PqMqsvVx1ze6DPUfXlm8Yx75vr+uz0fVH97vbqy6vVdYYFLi10d fZW8y1ntJiuxFGckGmoxFxUnAgAPltCn2gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGIsWRmVeSWpSXmKPExsVy+t9jQd09+94EGGx9KmZxZEojuwOjx+4F n5kCGKMaGG0yUhNTUosUUvOS81My89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVcfAJ03TJz gMYqKZQl5pQChQISi4uV9O0wTQgNcdO1gGmM0PUNCYLrMTJAAwnrGDM+Pp3FWHBLtuLDkoNs DYw9El2MHBwSAiYSCzbwdjFyApliEhfurWcDsYUEpjNKTD9Y2cXIBWQvY5J49PMcC0iCTUBN 4suXw+wgtoiAnsSNCx2MIDazgL/E05ubWEFsYQEPieb+VUwgNouAqsSsZ3vAangFbCX+rfoC ZQtK/Jh8jwWiV0ti/c7jTBC2vMTmNW+ZIW5Tl3j0VxdmVffnDqgSEYl9L94xgtwmIdDAKtH9 aS0TxAOmEhcnLGOZwCg0C8mKWUhWzEKyYhaSWQsYWVYxiqYWJBcUJ6XnGukVJ+YWl+al6yXn 525iBEfuM+kdjKsaLA4xCnAwKvHwPpz2JkCINbGsuDL3EKMEB7OSCO9db6AQb0piZVVqUX58 UWlOavEhRh9gCExklhJNzgcmlbySeENjEzMjSyMzCyMTc3McwkrivIynngQICaQnlqRmp6YW pBbBjGPi4JRqYOxk03Z15lyWK1wjef/IpHjLya+cedlaZz6YVHOs7aad3C/mvqyLUxKbOSeq bzL8kHLYm2tVsEXdd73z7DyT77Bul9NZs/8Po/8G/jMLr2XrS1ztSa99y5LLeio/blnXUiuX +LfGao8PffzncGb1L/OTO1kW7Hr2Jy1+WkiCQUSjYkXSn3kRbEosxRmJhlrMRcWJACELLCEJ AwAA X-CFilter-Loop: Reflected X-Spam-Score: 0.0 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain 0.0 T_MANY_HDRS_LCASE Odd capitalization of multiple message headers X-Headers-End: 1Tsjrv-0002GJ-6O Cc: spi-devel-general@lists.sourceforge.net, 'Jingoo Han' X-BeenThere: spi-devel-general@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: Linux SPI core/device drivers discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: spi-devel-general-bounces@lists.sourceforge.net The devm_ functions allocate memory that is released when a driver detaches. This patch uses devm_clk_get() and devm_request_irq() for these functions. These make the code smaller and a bit simpler. Signed-off-by: Jingoo Han --- drivers/spi/spi-s3c64xx.c | 41 +++++++++++++++-------------------------- 1 files changed, 15 insertions(+), 26 deletions(-) diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index ad93231..a81679a 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -1280,7 +1280,7 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev) if (sdd->regs == NULL) { dev_err(&pdev->dev, "Unable to remap IO\n"); ret = -ENXIO; - goto err1; + goto err0; } if (!sci->cfg_gpio && pdev->dev.of_node) { @@ -1289,36 +1289,36 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev) } else if (sci->cfg_gpio == NULL || sci->cfg_gpio()) { dev_err(&pdev->dev, "Unable to config gpio\n"); ret = -EBUSY; - goto err2; + goto err0; } /* Setup clocks */ - sdd->clk = clk_get(&pdev->dev, "spi"); + sdd->clk = devm_clk_get(&pdev->dev, "spi"); if (IS_ERR(sdd->clk)) { dev_err(&pdev->dev, "Unable to acquire clock 'spi'\n"); ret = PTR_ERR(sdd->clk); - goto err3; + goto err1; } if (clk_prepare_enable(sdd->clk)) { dev_err(&pdev->dev, "Couldn't enable clock 'spi'\n"); ret = -EBUSY; - goto err4; + goto err1; } sprintf(clk_name, "spi_busclk%d", sci->src_clk_nr); - sdd->src_clk = clk_get(&pdev->dev, clk_name); + sdd->src_clk = devm_clk_get(&pdev->dev, clk_name); if (IS_ERR(sdd->src_clk)) { dev_err(&pdev->dev, "Unable to acquire clock '%s'\n", clk_name); ret = PTR_ERR(sdd->src_clk); - goto err5; + goto err2; } if (clk_prepare_enable(sdd->src_clk)) { dev_err(&pdev->dev, "Couldn't enable clock '%s'\n", clk_name); ret = -EBUSY; - goto err6; + goto err2; } /* Setup Deufult Mode */ @@ -1328,11 +1328,12 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev) init_completion(&sdd->xfer_completion); INIT_LIST_HEAD(&sdd->queue); - ret = request_irq(irq, s3c64xx_spi_irq, 0, "spi-s3c64xx", sdd); + ret = devm_request_irq(&pdev->dev, irq, s3c64xx_spi_irq, 0, + "spi-s3c64xx", sdd); if (ret != 0) { dev_err(&pdev->dev, "Failed to request IRQ %d: %d\n", irq, ret); - goto err7; + goto err3; } writel(S3C64XX_SPI_INT_RX_OVERRUN_EN | S3C64XX_SPI_INT_RX_UNDERRUN_EN | @@ -1342,7 +1343,7 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev) if (spi_register_master(master)) { dev_err(&pdev->dev, "cannot register SPI master\n"); ret = -EBUSY; - goto err8; + goto err3; } dev_dbg(&pdev->dev, "Samsung SoC SPI Driver loaded for Bus SPI-%d " @@ -1356,21 +1357,13 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev) return 0; -err8: - free_irq(irq, sdd); -err7: +err3: clk_disable_unprepare(sdd->src_clk); -err6: - clk_put(sdd->src_clk); -err5: +err2: clk_disable_unprepare(sdd->clk); -err4: - clk_put(sdd->clk); -err3: +err1: if (!sdd->cntrlr_info->cfg_gpio && pdev->dev.of_node) s3c64xx_spi_dt_gpio_free(sdd); -err2: -err1: err0: platform_set_drvdata(pdev, NULL); spi_master_put(master); @@ -1389,13 +1382,9 @@ static int s3c64xx_spi_remove(struct platform_device *pdev) writel(0, sdd->regs + S3C64XX_SPI_INT_EN); - free_irq(platform_get_irq(pdev, 0), sdd); - clk_disable_unprepare(sdd->src_clk); - clk_put(sdd->src_clk); clk_disable_unprepare(sdd->clk); - clk_put(sdd->clk); if (!sdd->cntrlr_info->cfg_gpio && pdev->dev.of_node) s3c64xx_spi_dt_gpio_free(sdd);